如何通过命令行或批处理脚本与ffmpeg转换整个目录/文件夹?


当前回答

使用多核,这是最快的方法,(使用并行):

parallel "ffmpeg -i {1} {1.}.mp4" ::: *.avi 

其他回答

Bash对我来说很糟糕,所以在Linux/Mac下,我更喜欢Ruby脚本:

(找到一个文件夹中的所有文件,然后将其从rmvb/rm格式转换为mp4格式)

# filename: run.rb
Dir['*'].each{ |rm_file|
  next if rm_file.split('.').last == 'rb'
  command = "ffmpeg -i '#{rm_file}' -c:v h264 -c:a aac '#{rm_file.split('.')[0]}.mp4'"
  puts "== command: #{command}"
  `#{command}`
}

你可以用:ruby run.rb运行它

for i in *.flac;
  do name=`echo "${i%.*}"`;
  echo $name;
  ffmpeg -i "${i}" -ab 320k -map_metadata 0 -id3v2_version 3 "${name}".mp3;
done

使用[1][2]批量处理flac文件到mp3(安全的文件名与空格)

要转换子目录,请使用例如。

find . -exec ffmpeg -i {} {}.mp3 \;

对于任何想要用ffmpeg批量转换任何东西,但想要有一个方便的Windows界面的人,我开发了这个前端:

https://sourceforge.net/projects/ffmpeg-batch

它为ffmpeg添加了一个窗口时尚界面,进度条和时间剩余信息,这些功能是我在使用ffmpeg时经常错过的。

我为此开发了一个python包。

https://github.com/developer0hye/BatchedFFmpeg

您可以轻松地安装和使用它。

pip install batchedffmpeg
batchedffmpeg * -i folder * output_file