如何通过命令行或批处理脚本与ffmpeg转换整个目录/文件夹?
当前回答
对于Linux和macOS,这可以在一行中完成,使用参数展开来更改输出文件的扩展名:
for i in *.avi; do ffmpeg -i "$i" "${i%.*}.mp4"; done
其他回答
窗口:
@echo off
for /r %%d in (*.wav) do (
ffmpeg -i "%%~nd%%~xd" -codec:a libmp3lame -c:v copy -qscale:a 2 "%
%~nd.2.mp3"
)
这是质量2的可变比特率,如果你想,你可以把它设置为0,但除非你有一个非常好的扬声器系统,否则在我看来这是毫无价值的
我知道这可能是多余的,但我使用这个脚本批量转换文件。
old_extension=$1
new_extension=$2
for i in *."$old_extension";
do ffmpeg -i "$i" "${i%.*}.$new_extension";
done
它需要2个参数使其更灵活:
要转换的扩展名 要转换的新扩展名
我为它创建了一个别名,但你也可以手动使用它,像这样:
sh batch_convert.sh mkv mp4
这将把所有的mkv文件转换为mp4文件。
正如你所看到的,它更多功能。只要ffmpeg可以转换它,您就可以指定任何两个扩展。
Windows:
这里我正在将所有(.mp4)文件转换为(.mp3)文件。 只需打开cmd,转到所需的文件夹并键入命令。 快捷方式:(可选) 1. 转到(.mp4)文件所在的文件夹 2. 按Shift键,点击左键,选择“在这里打开PowerShell窗口” 或“此处打开命令提示窗口” 3.输入“cmd”[注意:如果它直接打开cmd而不是PowerShell,则跳过此步骤] 4. 执行命令
for %i in (*.mp4) do ffmpeg -i "%i" "%~ni.mp3"
如果你想把它放到Windows 10的批处理文件中,你需要使用%%i。
对于Windows,这是行不通的
FOR /F "tokens=*" %G IN ('dir /b *.flac') DO ffmpeg -i "%G" -acodec mp3 "%~nG.mp3"
即使我做了双倍的%。
我甚至建议:
-acodec ***libmp3lame***
另外:
FOR /F "tokens=*" %G IN ('dir /b *.flac') DO ffmpeg -i "%G" -acodec libmp3lame "%~nG.mp3"
在Windows上:
FOR /F "tokens=*" %G IN ('dir /b *.flac') DO ffmpeg -i "%G" -acodec mp3 "%~nG.mp3"
推荐文章
- 使用ffmpeg添加文本字幕
- ffmpeg输出的含义(tbc, tbn, tbr)
- 最快的方法提取帧使用ffmpeg?
- 哪个HTTP状态代码表示“尚未准备好,稍后再试”?
- Android上的FFmpeg
- 实时http流到HTML5视频客户端的最佳方法
- 如何添加一个新的音频(不混合)到一个视频使用ffmpeg?
- ffmpeg、libav和avconv之间有什么不同和相似之处?
- Ffmpeg覆盖输出文件,如果存在
- 如何安装和运行phpize
- 使用ffmpeg将音频文件转换为mp3
- FFMPEG (libx264)高度不能被2整除
- 操作系统检测生成文件
- 如何创建一个视频从图像与FFmpeg?
- 如何用ffmpeg转换整个目录?