我在 AWS EC2 服务器上使用 FFmpeg 版本 4.3-2~18.04.york0 进行视频分割,而分割视频不到 11 秒输出.mp4给出空白视频。我已经在我的本地MAC和Ubuntu 19上尝试了同样的事情,但它工作正常。
ffmpeg -i input.mp4 -ss 00:01:10 -to 00:01:15 -c:v copy -c:a copy output.mp4
您可以尝试在命令中使用持续时间标志而不是结束位置标志:
ffmpeg -i input.mp4 -ss 00:01:10 -t 10 -c:v copy -c:a copy output.mp4
-t 10
从-ss
指定的起始位置剪切 10 秒。
如果这仍然不起作用,如果您能澄清一下您的问题,那将很有帮助:
- 您是否在 Mac 和 Ubuntu 系统上使用相同版本的 ffmpeg,并且可以正常工作?
- 您是否在所有系统上使用相同的配置(
ffmpeg --help
可见(? - 另外,让我感到困惑的是你的问题:你写道,你对少于 11 秒的视频有问题,但你在命令中尝试做的是剪掉一个视频的 5 秒,似乎至少有 1 分 10 秒长(基于
00:01:10
的起始位置(。
发生这种情况通常是因为您要提取的视频片段不包含任何 I 帧(关键帧(。一个视频通常每 10 秒有一个关键帧,因此您的视频片段可能没有任何关键帧,因为它的持续时间只有 5 秒。
使用视频编解码器复制(-c:v copy
(有一些注意事项。在您的情况下,不可能进行编解码器复制,因为您的视频片段没有任何关键帧,因此是空白视频。
要修剪没有关键帧的视频片段,您需要对其进行重新编码,即使用除copy
以外的其他视频编解码器选项,例如-c:v x264
。为了保持质量,您可以将crf设置为17或18:
ffmpeg -i input.mp4 -ss 00:01:10 -to 00:01:15 -c:v x264 -crf 17 -c:a copy output.mp4
重新编码总是比编解码器复制慢得多,但由于持续时间仅为 5 秒,因此重新编码应该不到一分钟(取决于 CPU(。
我不确定为什么您的原始命令在本地计算机上工作。这可能是由于不同版本的 ffmpeg 或不同的视频源(例如input.mp4
在您的本地恰好有一个时间戳范围内的关键帧(。