如何通过命令行或批处理脚本与ffmpeg转换整个目录/文件夹?
当前回答
我在linux中使用这一行程序将文件(通常是H265)转换为我可以在Kodi上毫无问题地播放的东西:
for f in *.mkv; do ffmpeg -i "$f" -c:v libx264 -crf 28 -c:a aac -b:a 128k output.mkv; mv -f output.mkv "$f"; done
这将转换为临时文件,然后替换原始文件,以便转换后名称保持不变。
其他回答
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运行它
当然,现在PowerShell出现了,专门设计来让这样的事情变得非常简单。
是的,除了Windows, PowerShell也可以在其他操作系统上使用,但它是预装在Windows上的,所以这应该对每个人都有用。
首先,你想要列出当前目录中的所有文件,所以,我们将从:
ls
如果你想递归地转换子目录中的所有文件,也可以使用ls -Recurse。
然后,我们将这些文件过滤下来,只有我们想转换的文件类型-例如。“avi”。
ls | Where { $_.Extension -eq ".avi" }
之后,我们将通过ForEach将该信息传递给FFmpeg。
对于FFmpeg的输入,我们将使用FullName——这是文件的整个路径。对于FFmpeg的输出,我们将使用Name -但是将结尾的.avi替换为.mp3。所以,它看起来是这样的:
$_.Name.Replace(".avi", ".mp3")
所以,让我们把所有这些放在一起,这是结果:
ls | Where { $_.Extension -eq ".avi" } | ForEach { ffmpeg -i $_.FullName $_.Name.Replace(".avi", ".mp3") }
这将改变所有人。”通过FFmpeg将avi"文件转换为".mp3"文件,只需替换引号中的三个内容来决定您想要的转换类型,并随时向FFmpeg中的ForEach中添加任何其他参数。
您还可以更进一步,在末尾添加Remove-Item以自动删除旧文件。
如果ffmpeg不在您的路径中,而实际上在您当前所在的目录中,请在那里写入./ffmpeg,而不仅仅是ffmpeg。
希望这对大家有所帮助。
对于任何想要用ffmpeg批量转换任何东西,但想要有一个方便的Windows界面的人,我开发了这个前端:
https://sourceforge.net/projects/ffmpeg-batch
它为ffmpeg添加了一个窗口时尚界面,进度条和时间剩余信息,这些功能是我在使用ffmpeg时经常错过的。
在Windows上,用于子目录中的文件
FOR /F "tokens=*" %G IN ('dir /s /b /o:gn *.mp4') DO ffmpeg -i "%G" -c copy "%~pG%~nG.mkv"
这将所有mp4文件转换为mkvs,包括子目录中的文件,并将mkv文件放在mp4文件所在的位置,即文件C:\temp\test.mp4将其对应的mkv文件放在C:\temp\test.mkv中
如果你不想转换文件,只是复制编解码器使用下面的代码
for %i in (*.mkv) do ffmpeg -i "%i" -codec copy "%~ni.mp4"
这样可以减少转换时间。
推荐文章
- 使用ffmpeg添加文本字幕
- ffmpeg输出的含义(tbc, tbn, tbr)
- 最快的方法提取帧使用ffmpeg?
- 哪个HTTP状态代码表示“尚未准备好,稍后再试”?
- Android上的FFmpeg
- 实时http流到HTML5视频客户端的最佳方法
- 如何添加一个新的音频(不混合)到一个视频使用ffmpeg?
- ffmpeg、libav和avconv之间有什么不同和相似之处?
- Ffmpeg覆盖输出文件,如果存在
- 如何安装和运行phpize
- 使用ffmpeg将音频文件转换为mp3
- FFMPEG (libx264)高度不能被2整除
- 操作系统检测生成文件
- 如何创建一个视频从图像与FFmpeg?
- 如何用ffmpeg转换整个目录?