从命令行准确剪切视频文件

cur*_*mil 27 video mp4 command-line video-editing

我很难找到一个 cli 应用程序,它可以获取视频文件(最好是 avi、mkv 和 mp4)并以精确的时间精度剪切非常短的剪辑(2-6 秒)。我试过ffmpegmencoderavidemuxmp4box但它们都在关键帧上剪切,从而创建了 6 秒以上的剪辑。有没有什么工具可以把输入文件重新编码后切准确时间或切不准确,重新编码再准确切?

slh*_*hck 30

剪辑视频 ffmpeg

可以使用 FFmpeg 准确剪切视频。从 2.5 版开始,这很容易。

例如,这将减少 10 秒,从 0 分钟、3 秒和 123 毫秒开始。

ffmpeg -ss 00:00:03.123 -i input.mp4 -t 10 -c:v libx264 -c:a copy out.mp4
Run Code Online (Sandbox Code Playgroud)

位置和时间可以以秒为单位,也可以以hh:mm:ss[.xxx]形式表示。

请注意,在这些示例中,视频将使用x264编码器重新编码;音频被复制过来。

您还可以使用-to代替-t来指定结束点而不是持续时间。然而,在这种情况下,-to相当于-t,因为通过将 放在-ss前面-i,ffmpeg 将首先寻找到该点,然后开始输出。

如果输出似乎没有被正确剪切,添加-fflags +genpts到命令中可能会有所帮助。

另请参阅Seeking wiki 条目。

  • @Baodad你可以,但这不会*准确*削减。复制视频/音频比特流时,ffmpeg 需要从一个关键帧开始,它可能只是每隔一秒放置一次,甚至更远。 (4认同)