我想对文件夹中的所有文件进行批量操作。 对于每个文件,我需要删除剪辑的第一个和最后一个,并将其保存到目标文件夹。 这是我使用的命令:
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
。
答案 0 :(得分:2)
ss
和sseof
都告诉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>