ffmpeg 修剪多个视频

ffmpeg 修剪多个视频

我需要将大量视频剪辑到相同的时间范围内,但无法让循环同时对所有视频进行此操作。

我通常使用以下命令:

ffmpeg -i input.webm -ss 00:00:05 -t 00:00:05 -c:v copy -c:a copy output1.webm

修剪单个视频。

我尝试使用循环修剪多个视频:

for f in *.webm; do ffmpeg -i "$f" -ss 00:00:05 -t 00:00:05 -c:v copy -c:a copy "${f%.*}.webm"; done

但是,我收到“关键字‘for’之后缺少开头‘(’”的错误

我尝试在不同点使用不同的支架,但无法使循环工作。你们对如何修复循环有什么想法吗?

答案1

您遇到的错误可能是因为您尝试在不支持for您使用的循环语法的 shell 中运行循环。这似乎是您 shell 特有的语法问题。

您可以尝试使用不同的 shell,或者使用更通用的循环结构,该结构应该适用于大多数 shell。下面是另一种循环,使用命令find查找webm当前目录中的所有文件,然后使用 处理它们ffmpeg

find . -name "*.webm" -exec ffmpeg -i {} -ss 00:00:05 -t 00:00:05 -c:v copy -c:a copy {}.output.webm \;

此命令将查找.webm当前目录及其子目录中的所有文件,然后将命令ffmpeg应用于每个文件,修剪它们并在文件名后附加“.output”以创建输出文件。这应该适用于大多数类 Unix shell。

相关内容