ffmpeg & spring 연동하고 hls로 영상 스트리밍하기

조윤호·2023년 8월 26일
0

소개

FFmpeg 설치

ffmpeg을 설치한다.

mac

brew install ffmpeg

Ubuntu

sudo apt install update
sudo apt install ffmpeg

ffmpeg, ffprobe 가 설치되었는지 확인한다.

ffmpeg -version
ffprobe -version


스프링 플러그인 설치, 연동과정

자바에서 ffmpeg를 사용하는 방법은 두 가지가 있다.

  1. 연결 라이브러리를 이용해 실행
  2. 자바가 직접 cli 명령어를 실행하도록 하기

1번이 일반적인 방법이고 훨씬 편리하지만, 예상치 못한 에러를 자주 겪어 2번도 종종 사용했다.

cli wrapper 다운로드

자바에서 ffmpeg과 연결해주는 라이브러리인 ffmpeg-cli-wrapper 을 연결한다.

build.gradle에 다음과 같이 라이브러리를 추가한 뒤 빌드(코끼리 버튼)을 실행한다.

application.properties

application properties에 다음과 같이 ffmpeg의 경로, ffprobe의 경로, 결과물을 저장할 루트의 경로를 저장해주었다.

임의의 변수를 만들어준 것이기 때문에 좌측의 변수명은 임의로 만들어도 된다.

brew에서 다운받은 경우, ffmpeg의 경로와 ffprobe의 경로는 보통 아래와 같다.

ffmpeg의 경로와 ffprobe의 경로 찾는 법
링크 : sudo find -iname ffmpeg

config, util 생성

FFmpeg, FFprobe 객체를 생성하기 위해 FFmpegConfig를 작성한다.

FFmpegConfig.java

import io.jsonwebtoken.lang.Assert;
import lombok.extern.slf4j.Slf4j;
import net.bramp.ffmpeg.FFmpeg;
import net.bramp.ffmpeg.FFprobe;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.io.IOException;

@Slf4j
@Configuration
public class FFmpegConfig {
    @Value("${ffmpeg.location}")
    private String ffmpegLocation;
    @Value("${ffprobe.location}")
    private String ffprobeLocation;

    @Bean(name = "ffmpeg")
    public FFmpeg ffmpeg() throws IOException {
        FFmpeg ffmpeg = new FFmpeg(ffmpegLocation);
        Assert.isTrue(ffmpeg.isFFmpeg());
        return ffmpeg;
    }

    @Bean(name = "ffprobe")
    public FFprobe ffprobe() throws IOException {
        FFprobe ffprobe = new FFprobe(ffprobeLocation);
        Assert.isTrue(ffprobe.isFFprobe());
        return ffprobe;
    }
}

FFmpegConfig 작성 후 실행했을 때 에러가 발생하지 않으면 설치,연결이 잘 진행된 것이다.

윈도우 사용자의 경우
윈도우의 경우 추가적인 코드가 필요한 것 같다.
해당 블로그를 참고하자.
https://islet4you.tistory.com/entry/Java-FFmpeg-를-통한-영상-다루기-chapter01

📚참고문헌

profile
한걸음씩 성실히

0개의 댓글