ffmpeg剪切每个剪辑的第一个和最后一个

时间:2017-09-23 20:47:14

标签: ffmpeg

我想对文件夹中的所有文件进行批量操作。 对于每个文件,我需要删除剪辑的第一个和最后一个,并将其保存到目标文件夹。 这是我使用的命令:

for %f in (“*.*”) do c:\ffmpeg\bin\ffmpeg -i "%f" -ss 00:00:01.000 -sseof 00:00:01.000 -c:v copy -c:a copy “u:\footage\%f”

该命令不起作用。它会缩短第一秒,但保留文件的其余部分。 也许我需要在-sseof

的语法中更改一些内容

1 个答案:

答案 0 :(得分:2)

sssseof都告诉ffmpeg从哪里开始,所以你的命令指定了两个开始时间,没有结束时间。您的命令更喜欢ss(可能因为它最接近输入)并忽略sseof,然后工作到文件的末尾。

您可以使用to(在文件中占据一个位置)或t(需要一段时间)告诉它在哪里结束,但是如果您的视频不完全相同长度,您需要为每个文件计算此值。您可以使用ffprobe获取视频的长度,如下所示:

ffprobe -i <file> -show_entries format=duration -v quiet -of csv="p=0"

这将以秒为单位为您提供文件的长度。然后,您需要减去所需的金额(在您的情况下,如果您使用to则为1秒,如果您使用t则为2秒)并将结果提供给ffmpeg命令中的相应标志。 / p>