HLS로 서비스되는 .m3u8 형식의 URL을 받아서 로컬에 영상 파일을 떨구기
스트리밍용 .m3u8 URL을 이용해서 영상 파일을 만들고 싶을 때. ffmpeg은 별도로 설치하지 않고 docker 이미지를 이용했다.
docker run --rm -v $PWD:/tmp/workdir jrottenberg/ffmpeg -y -i "http://video.testdomain.com/test.mp4/playlist.m3u8" -bsf:a aac_adtstoasc -vcodec copy -c copy test.mp4
[Docker parameters]
--rm 실행 후 docker container 삭제
-v container의 /tmp/workdir을 $PWD로 연결
[ffmpeg parameters]
-y 묻지 않고 overwrite
-bsf:a aac_adtstoasc aac_adtstoasc bsf(bitstream filter)를 오디오 스트림(a)에 사용. .m3u8이 .ts로 구성되어 있고 output이 .mp4일 때 필요(https://ffmpeg.org/ffmpeg-bitstream-filters.html#aac_005fadtstoasc)
-c copy -vcodec copy codec 사용하지 않고 demux & mux만
추가로 여러 개의 영상을 하나로 합치기(코덱이 같은 경우)
ffmpeg -f concat -safe 0 -i <(for f in ./*.mp4; do echo "file '$PWD/$f'"; done) -c copy output.mp4
ffmpeg -f concat -safe 0 -i <(find . -name '*.mp4' -printf "file '$PWD/%p'\n") -c copy output.mp4