관리 메뉴

피터의 개발이야기

[Docker] linux/ffmpeg을 이용한 무배포, ffmpeg 테스트 방법 본문

DevOps/Docker

[Docker] linux/ffmpeg을 이용한 무배포, ffmpeg 테스트 방법

기록하는 백앤드개발자 2025. 1. 8. 02:23
반응형

ㅁ 들어가며

Transcoding, ffmpeg 기본 사용법에서 ffmpeg, Docker로 무설치 사용하기에 대해서 간단히 정리해 보았다. 현재 Docker 환경에서 ffmpeg을 이용한 개발 중인데, OS(Rocky9, Ubuntu)와 ffmpeg의 버젼에 따라서 여러가지 문제가 발생하여 트러블 슈팅을 하면서 알게 된 내용을 정리해 보았다.

 

ㅁ 기본 사용법

docker run -it --rm linuxserver/ffmpeg:latest -version

ㅇ linuxserver/ffmpeg는 이미 ffmpeg이 endpoint로 지정되어 있어서, 옵션만 전달하면 된다.

ㅇ 반대로, 이 이미지를 통해 bash로 실행되지는 않았다.

 

ㅁ 특정 버전의 ffmpeg 테스트

docker run -it --rm linuxserver/ffmpeg:5.1.2 -version

ㅇ 이미지의 버전정보를 변경하여 원하는 버젼에 맞추어 테스트 할 수 있다.

 

ㅁ 작업 폴더 설정

docker run -it --workdir /data -v $(pwd):/data --rm linuxserver/ffmpeg:latest

ㅇ --workdir, -w 옵션으로 컨테이너 작업 폴더를 지정할 수 있다.

ㅇ -v 옵션으로 host의 특정 폴더와 /data 작업 폴더를 연결하여 사용할 수 있다.

 

ㅁ 5초 이후로 영상 짜르기

docker run -it --rm \
  --workdir /data \
  -v $(pwd):/data \
  linuxserver/ffmpeg:latest -ss 00:00:5.000 -i video.mp4 -c copy trimmed_video.mp4

 

ㅁ 샘플 작업 예시

docker run -it --rm \
  --name=linux-ffmpeg \
  -w /hls -v .:/data \      # 작업 공간 적용
  --platform linux/amd64 \     # 맥북 arm 충돌 해소 
  linuxserver/ffmpeg:5.1.2 \   # ffmpeg 버젼에 따라 이미지 설정
  -i http://{url 생략}/livestream/playlist.m3u8 \  # 소스 url
  -strict experimental -re -use_wallclock_as_timestamps 1 \
  -avioflags direct -probesize 32 -isync 0 -thread_queue_size 10 \
  -vn -ac 2 -acodec mp3 -af asetpts=PTS -fflags +nobuffer+igndts+nofillin \
  -flags +global_header -y -reconnect 1 -reconnect_on_network_error 1 \
  -reconnect_streamed 1 -reconnect_at_eof 1 \
  -reconnect_on_http_error 1 -f hls -hls_start_number_source datetime \
  -hls_time 10 -hls_list_size 5 -hls_delete_threshold 10 \
  -hls_flags delete_segments+independent_segments+discont_start -strftime 1 \
  -hls_segment_filename /data/play-%Y%m%d-%H%M%S.ts \
  -muxdelay 0 -copyts -start_at_zero /data/playlist.m3u8

 

ㅁ 함께 보면 좋은 사이트

Docker로 무설치 ffmpeg 사용하기

 

반응형
Comments