这是我用来将 1 个音频和 1 个图像合并为 1 个视频的代码/参数。出于某种原因,无论来源如何,它都会在输出视频的末尾添加 30 秒的静音。
我在 Win10 x64 上运行它,安装了最新的 ffmpeg。
我已经检查了代码,但无法确定它在哪里静音。
ffmpeg -y -loop 1 -framerate 2 -i "some.png" -i "with.mp3"
-c:v libx264 -tune stillimage -c:a aac -b:a 192k -pix_fmt yuv420p -shortest "result.mkv"
输出不应包含额外的 30 秒静音。它应该在音频用完时结束。
我应该补充一点,我从某个网站复制了大部分参数,并且 OP 似乎可以很好地使用它,所以我不确定这是否只是我的问题。
最佳答案
利用
ffmpeg -y -loop 1 -framerate 2 -i "some.png" -i "with.mp3" -c:v libx264 -tune stillimage -c:a aac -b:a 192k -pix_fmt yuv420p -shortest -fflags +shortest -max_interleave_delta 100M "result.mkv"
容器(AVI、MP4、MKV)通常以交错方式存储多个流,即几秒钟的视频,然后是几秒钟的音频,等等。因此,ffmpeg 在写入时会缓冲来自所有流的数据。
-shortest
以相对较高的级别运行,并在第一个流完成时触发。但是,来自其他流的缓冲数据仍将写入文件。 -fflags shortest
当与足够高的 max_interleave_delta 一起使用时,在较低级别上起作用并停止写入缓冲数据。
关于windows - 我的 ffmpeg 输出总是在最后添加额外的 30 秒静音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55800185/