我对 FFmpeg 和编程完全是个新手,所以这个问题可能太愚蠢了...我有一个视频,想把它裁剪成小块并渲染出每一个,所以我尝试使用 FOR 循环:
FOR /l %x IN (0,40,1000) DO ffmpeg -i sample.avi -filter:v "crop=20:20:x:x" outx.avi; done
我得到的是:[NULL @ 0000000002624220] 无法找到适合“outx.avi”的输出格式;outx.avi;:参数无效
有人可以帮忙吗?
答案1
您显然正在使用 Windows 批处理文件。这里,FOR
循环没有尾随的; done
,而 Bash 循环有。
在 Windows 下:
FOR ... IN ... DO ...
在 Bash 下:
for ... in ...; do ...; done
因此,请确保你使用了适合你的 shell 的语法。
请注意,简单地指定out.avi
将使 ffmpeg 分别选择 MPEG-4 和 MP3 作为视频和音频编解码器,并且您的质量可能会很差。理想情况下,请指定视频和音频编码器,例如:
ffmpeg -i <input> -c:v libx264 -crf 23 -c:a aac -b:a 192k out.mp4
阅读H.264 编码指南了解更多信息。