我尝试使用以下命令使用视频的开始和结束时间来剪切视频

ffmpeg -ss 00:00:03 -t 00:00:08 -i movie.mp4 -acodec copy -vcodec copy -async 1 cut.mp4

通过使用上面的命令,我想把视频从00:00:03剪辑到00:00:08。但它并没有在这两个时间之间剪切视频,而是剪切了前11秒的视频。有人能帮我解决这个问题吗?

编辑1:

我尝试使用mark4o建议的以下命令进行切割

ffmpeg -i movie.mp4 -ss 00:00:03 -t 00:00:08 -async 1 cut.mp4

但是显示了以下错误。

编码器“aac”是实验性的,但实验性编解码器未启用

因此,我在命令中添加了-strict -2,即,

ffmpeg -i movie.mp4 -ss 00:00:03 -t 00:00:08 -async 1 -strict -2 cut.mp4

现在它工作得很好。


当前回答

    ffmpeg -i movie.mp4 -vf trim=3:8 cut.mp4

除了第3秒到第8秒,放下所有东西。

其他回答

使用-to代替-t: -to指定结束时间,-t指定持续时间

我感兴趣的是基于毫秒的切割时间,并注意到秒(以及它们的分数)可以被指定为切割如下:

ffmpeg -i input.mp4 -ss 17.5 -to 20.5 output.mp4

对于持续时间而不是结束时间,使用-t而不是-to:

ffmpeg -i input.mp4 -ss 17.5 -t 3 output.mp4
ffmpeg -i movie.mp4 -ss 00:00:03 -t 00:00:08 -async 1 -c copy cut.mp4 

立即使用-c copy for make in。在这种情况下,ffmpeg将不会重新编码视频,只是将削减到根据大小。

我的设置:

$ ffmpeg
ffmpeg version 4.4 Copyright (c) 2000-2021 the FFmpeg developers
  built with Apple clang version 12.0.5 (clang-1205.0.22.9)

我发现开关的顺序很重要。 如果-i不在-ss和-t之间,那么结果中有大约3秒的空白。

所以无论你使用什么额外的开关,确保这三个开关的顺序是正确的,就像这样

ffmpeg -ss 00:00:03 -i movie.mp4 -t 00:00:08 cut.mp4
    ffmpeg -i movie.mp4 -vf trim=3:8 cut.mp4

除了第3秒到第8秒,放下所有东西。