我需要将数百个.wav文件转换为ogg和mp3格式。有什么方法可以从Audacity或其他一些命令行工具中批量进行此操作?
我需要将数百个.wav文件转换为ogg和mp3格式。有什么方法可以从Audacity或其他一些命令行工具中批量进行此操作?
Answers:
从类似Unix(Linux,OSX等)的命令行中,可以像下面这样使用ffmpeg:
for f in *.wav; do ffmpeg -i "$f" -c:a libmp3lame -q:a 2 "${f/%wav/mp3}" -c:a libvorbis -q:a 4 "${f/%wav/ogg}"; done
这会将目录中的每个WAV转换为一个MP3和一个OGG;请注意,它区分大小写(以上命令将转换以.wav结尾的每个文件,但不转换.WAV)。如果要使用不区分大小写的版本:
for f in *.{wav,WAV}; do ffmpeg -i "$f" -c:a libmp3lame -q:a 2 "${f%.*}.mp3" -c:a libvorbis -q:a 4 "${f%.*}.ogg"; done
要递归转换目录中的每个WAV(即当前目录中的每个WAV以及当前目录中的所有目录),可以使用find
:
find . -type f -name '*.wav' -exec bash -c 'ffmpeg -i "$0" -c:a libmp3lame -q:a 2 "${0/%wav/mp3}" -c:a libvorbis -q:a 4 "${f/%wav/ogg}' '{}' \;
(麦克斯·丹尼斯(Max Dennis)感谢丹尼斯(Dennis)在这里为我找到一个使用ffmpeg进行的find的有效实现)。
对于使用find的不区分大小写的搜索,请使用-iname
代替-name
。
关于-q:a
:MP3的质量范围是0-9,其中0是最好的质量,2对大多数人来说足以转换CD音频;对于OGG,它是1-10,其中10是最好的,而5对大多数人来说等于CD的质量。
find . -type f -name '*.wav' -exec bash -c 'ffmpeg -i "$0" -c:a libmp3lame -q:a 2 "${0/%wav/mp3}"' '{}' \;
'
。
$ for f in *.wav; do ffmpeg -i "$f" -c:a libmp3lame -b:a 320k "${f/%wav/mp3}"; done
仅适用于320 kbps mp3
您可以将foobar2000与用于ogg和mp3的编码器一起使用。我相信您可以在稀有软件中找到编码器。
从下面的链接下载ffmpeg并安装它: http //ffmpeg.zeranoe.com/builds/
使用以下命令创建并运行批处理文件:
echo converting *.wav to *.ogg
mkdir ..\Ogg
for /r %%i in (*) do ffmpeg -i %%i -acodec libvorbis ..\Ogg\%%~ni.ogg
所有转换后的* .ogg文件将被复制到.. \ Ogg目录。
我对在SO上找到的bat文件进行了一些更改,现在它处理文件名中的空格,这在歌曲名中很常见。使用VLC命令行工具将此bat文件将.wav转换为.mp3。但是您可以更改为wma-> mp3等格式...
@echo off
chcp 65001
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "delims=" %%f IN ('dir /b /s "YOUR_DISK:\Path\To\Your Music\That May contain Spaces\*.wav"') do (
set file1=%%~nf.mp3
echo "file :" !file1!
set fic1=%%f
echo "file : " !fic1!
CALL "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" "!fic1!" --sout="#transcode{vcodec=none,acodec=mp3,ab=320,channels=2,samplerate=48000}:std{access=file{no-overwrite},mux=mp3,dst="""!file1!"""}" vlc://quit
)
echo .
echo conversion finished
pause
chcp更改编码(以处理重音符号。)ab是此处的比特率320