FFmpeg循环视频匹配音频时长失败,求解决方案
解决FFmpeg循环视频匹配音频时长的问题
我来帮你搞定这个问题!你的命令里踩了两个小坑,导致视频没循环,还没法自动匹配音频的时长:
-stream_loop参数放错位置了:这个参数得放在你要循环的输入文件前面(也就是视频的-i之前),FFmpeg才会知道要循环这个视频流。你原来把它放在第一个-i后面,相当于没对视频生效,自然不会循环。- 手动加了
-t 60限制时长:这个参数会强制输出固定60秒,当然没法匹配音频的实际时长,直接去掉它就行。
正确的命令
通用兼容版(重新编码,避免容器兼容问题)
ffmpeg -stream_loop -1 -i "Pentagon_VJ_background_loop.mp4" -i "Out1.wav" -map 0:v -map 1:a -c:v libx264 -c:a aac output.mp4
快速复制版(视频音频编码兼容时用,速度更快)
如果你的视频本身是H.264编码、音频是AAC编码(或者其他MP4容器支持的编码),可以直接复制流,不用重新编码:
ffmpeg -stream_loop -1 -i "Pentagon_VJ_background_loop.mp4" -i "Out1.wav" -map 0:v -map 1:a -c copy output.mp4
效果说明
用上面的命令,FFmpeg会自动让视频无限循环,直到音频流播放结束,最终输出文件的时长会和你的音频文件完全一致,完美匹配你的需求~
内容的提问来源于stack exchange,提问作者whitebear




