是什么原因导致 FFMPEG 中创建的 WMV 文件的第一帧冻结?

是什么原因导致 FFMPEG 中创建的 WMV 文件的第一帧冻结?

使用以下语法修剪 WMV 文件时:

ffmpeg -i 'INPUTFILE.wmv' -acodec copy -vcodec copy -ss 00:00:45 -t 00:00:15 'OUTPUTFILE.wmv

OUTPUTFILE.wmv 文件的一帧会显示大约一两秒(在此期间声音正常播放),然后恢复播放。显示的“冻结帧”是运动实际开始的那一帧(而不是之前 1-2 秒的那一帧)——也就是说,从冻结帧到工作视频时没有“跳跃”。相反,这就像我在取消暂停视频一样。

即使我将输出剪辑的长度增加到一分钟,它仍然会显示大约一秒钟(因此它不是视频总长度的比例)。

是什么原因造成的?我该如何解决?

答案1

问题是你只是从一个文件复制到另一个文件。除非你从某个关键帧开始,否则在到达关键帧之前会有延迟。

关键帧是指本身包含足够数据来渲染整个帧的帧。这些关键帧之间的帧是渐进的,并且仅包含(实际上)与前一帧相比的变化。¹

如果您想避免这种暂停,那么您将需要单独解码并重新编码每一帧,以便输出文件的第一帧成为关键帧。

声音帧不会出现此类问题,这就是为什么声音可以播放但视频不播放的原因。

¹ 事实上,它比这复杂得多,但目前已经足够接近了。

相关内容