使用ffmpeg批量转换* .avi文件


13

我正在尝试使用ffmpeg批量转换20多个.avi文件。

我有以下

@echo off.

for file in *.avi
do
   ffmpeg -i "$file" -s 640x480 -vcodec msmpeg4v2 "'basename "$file" .avi'.mpg';
done

在我的.bat文件中,但是它不起作用。如何使它在Windows OS下工作。哦,是的,所有文件都在同一个文件夹中。

我收到的错误消息:

文件在此时是意外的


到底什么不起作用?
slhck 2012年

如果您能指出cmd消失得很快的错误消息,我将告诉您我遇到的问题。
Darius 2012年

您应该能够仅在打开命令窗口之前(Start»Run…»cmd),然后使用从此处的完整路径运行批处理文件。您实际上想对这些视频做什么?这些是什么样的视频?您是否只需要将它们移至MPG容器?还是需要调整它们的大小?还是您特别需要msmpeg4v2编解码器?
slhck 2012年

文件从DVR上取下来,超过5分钟的片段超过1GB。是的,DVR软件在压缩时很可悲。编解码器可以工作,因为它需要1GB的文件到大约7MB的文件,这更易于管理。当尝试运行该批处理时,出现“此时文件意外”消息。
Darius 2012年

我知道了。如果你不关心最终的视频编解码器和容器,我建议使用X264作为编码器来代替,这导致了很多质量优于MPEG-4。该命令类似于ffmpeg -i input.avi -c:v libx264 -crf 23 -s 640x480 output.mp4CRF值设置质量的情况(从19到24的合理值越少越好,越差越差)。另请参阅:将旧视频转换为较小的尺寸,并且应该使用哪些参数来减小.MOV文件的尺寸?
slhck 2012年

Answers:


26

您的批处理文件的Windows bat脚本格式不正确。相反,您的脚本看起来像是针对Linux的。您将需要更改脚本以使用Windows Shell支持的for循环

下面是一个如何通过使用Windows for循环来完成此任务的示例。只需将以下行放入批处理文件中,然后将脚本移至与avi文件相同的目录,然后运行它。

for %%A IN (*.avi) DO ffmpeg -i "%%A" "%%A.mpg"

我得到了[NULL @ 000000000037e360] Unable to find a suitable output format for 'outputfile.avi.mpg;' outputfile.avi.mpg:: Invalid argument
Darius

1
需要从行尾删除该分号
Brett 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.