나는 ffmpeg로 만든 슬라이드 쇼의 배경에있는 슬라이드 위로 오디오 스트림을 보내려고합니다. 현재 다음과 같은 사항이 있습니다.
ffmpeg -loop 1 -t 15 -i img_1.jpg \
-loop 1 -t 15 -i img_2.jpg \
-loop 1 -t 15 -i img_3.jpg \
-stream_loop -1 -t 45 -i audio.mp3 \
-filter_complex \
"[0:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1,fade=t=out:st=4:d=1[v0]; \
[1:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v1]; \
[2:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v2]; \
[v0][v1][v2]concat=n=3:v=1:a=0,format=yuv420p[v]" \
-map "[v]" -map 3:a output.mp4
이제 솔루션은 ffmpeg에서 fadeIn / out 효과로 5 개의 이미지로 비디오 만들기 과 https://video.stackexchange.com/questions/23390/ffmpeg-loop-video-to-the-length-of-audio ffmpeg 문서를 통해 읽는 것뿐입니다.
내 주요 문제는이 메서드는 오디오 스트림을 무기한으로 반복하도록 강제하기 때문에 높은 메모리 오버 헤드가 발생하기 쉽고, 루프의 처음 45 초 만 걸리지 만 가정 할 때 여전히 사용할 수 있다는 것입니다. 별도의 스레드에서 45 초를 넘는 루프를 반복합니다.
요컨대, 같은 행동을 취하는 더 좋은 방법이 있을까요?
1
메모리 사용량을 확인 했습니까? stream_loop는 디멀티플러를 되감기하지만 지속 시간 한도에 도달 할 때까지만 재생합니다. 한 번 45 초의 MP3를 읽는 것보다 더 많은 메모리를 차지하지 않습니다.
—
Gyan