我需要将大量视频剪辑到相同的时间范围内,但无法让循环同时对所有视频进行此操作。
我通常使用以下命令:
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。