我想对一个文件夹中的所有文件进行批量操作。对于每个文件,我需要删除剪辑的第一秒和最后一秒,并将其保存到目标文件夹。这是我使用的命令:
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的语法。
发布于 2017-09-24 05:08:41
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命令中的相应标志中。
https://stackoverflow.com/questions/46384166
复制相似问题