如何使用 ffmpeg 仅编码连接点修剪 mp4 视频

如何使用 ffmpeg 仅编码连接点修剪 mp4 视频

我像这样使用 ffmpeg 修剪 mp4 视频。

$ ffmpeg -i in.mp4 -ss 00:01:00 -t 00:01:00 -c copy out.mp4

但是我得到的电影中前 10 秒的视频不存在。(只有声音)我想使用 HandBrake 重新编码该电影,但是无法正确识别并出现以下错误消息。

您的源可能受版权保护、制作不当或采用 HandBrake 不支持的格式。请参阅文档和常见问题解答(参见帮助菜单)。

我认为这是因为基础框架或类似的东西而发生的。

是否有选项可以让 ffmepg 重新编码前 10 秒视频并与未重新编码的剩余 50 秒长的视频连接起来?

答案1

但我得到的电影中前 10 秒的视频不存在。(仅有声音)

连接可能会导致视频不连贯。我个人一直尽量避免使用比特流副本进行剪切。我认为你不会发现确切地它会在哪里被切断,但它肯定是在某个关键帧上。

基本上,如果您使用-ssafter -i,ffmpeg 会寻找时间戳,无论它是否是关键帧。然后它会从那里写入输出流,但播放器只能从下一个 IDR 图片*开始,所以这就是为什么您会遇到黑色视频,直到解码器可以开始显示某些内容。

您可以尝试指定-ss之前-i,这将使 ffmpeg 仅寻找关键帧,从而产生应立即显示视频的输出比特流。

* H.264 中的 IDR(即时解码刷新)图片是仅由帧内编码切片组成的图片,不需要解码其他图片。解码器只有在收到 IDR 图片后才能开始解码。粗略地说,您可以将其称为关键帧,尽管从技术上讲它们并不相同。

相关内容