如何停止将视频流中的最后一帧保存为使用 ffmpeg 编码的 mp4 容器的一部分?

How to stop holding the last frame in video stream as part of an mp4 container encoded with ffmpeg?

我正在将一个虚拟 mp3 文件(7 秒的白噪声)和一个虚拟 mp4 文件(无声并带有红色背景图像 4 秒)一起编码以形成一个 mp4 文件。生成这个文件的命令是:

ffmpeg -i dummy.mp3 -itsoffset 0 -t 2 -ss 0 -i dummy.mp4 -c:v copy -map 1:v -map 0:a -copyts output.mp4 

如您所见,我将 dummy.mp4 截断为 2 秒(最初为 4 秒)。但是,当我在 QuickTime Player 中播放 output.mp4 时,我看到了整整 7 秒的红色背景图像。

我想要的是 dummy.mp4 的红色背景图像 2 秒,然后黑色(什么都没有)。

我怎样才能做到这一点?

干杯!

这实际上取决于玩家 - 在最后一帧显示持续时间后是否用空白重绘 canvas。

当然,您可以创建一个与 dummy.mp4 具有相同属性的 blank.mp4,但视觉效果除外。

创建一个文本文件,

file dummy.mp4
outpoint 2
file blank.mp4

然后,

ffmpeg -i dummy.mp3 -itsoffset 0 -f concat -i list.txt -c:v copy -map 1:v -map 0:a output.mp4

P.S。 copyts 仅适用于输入