我正在尝试让音频流循环播放我使用 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 创建包含 5 幅图像并带有淡入/淡出效果的视频和https://video.stackexchange.com/questions/23390/ffmpeg-loop-video-to-the-length-of-audio以及阅读 ffmpeg 文档。
我的主要问题是,这种方法似乎容易导致高内存开销,因为我强制音频流无限循环,虽然我只获得了该循环的前 45 秒,但我认为它仍然会在单独的线程上循环超过 45 秒时耗尽资源。
简而言之,有没有更好的方法来实现相同的行为?