问题描述
我想在不重新编码整个视频流的情况下实现两件事:
- 通过在给定的持续时间内冻结最后一帧来扩展视频。
- 通过在给定的时间戳在给定的持续时间内冻结帧来扩展视频。
目前我正在使用 ffmpeg -i in.mp4 -vf tpad=stop_mode=clone:stop_duration=5 out.mp4
,但它需要对整个视频流进行编码,并且只允许冻结流的最后一帧。为了得到我想要的结果,我需要将视频分割成多个片段,将片段的最后一秒提取到一个单独的文件中(所以我只对那部分重新编码),在其上运行上面的命令,然后将所有片段合并回来连接分离器。
有没有更好更简单的方法来实现上述目标?
解决方法
要“扩展”最后一帧,请通过填充来扩展音频流。
ffmpeg -i in.mp4 -c:v copy -af apad -t 5 out.mp4
如果没有现有的音频流,添加一个
ffmpeg -i in.mp4 -f lavfi -i anullsrc -c:v copy -af apad -t 5 out.mp4
对于以最少的重新编码在中间暂停帧,分段 + 连接确实是要走的路