私は10個のwavファイルを持っています。それらすべてをmp3ファイルに変換したいと思います。私は( VLCを使用してメディアを変換する方法? で説明されているように)1つのファイルに対してこれを行うことができましたが、すべての単一ファイルに対してこれを実行したくありません。一度に10個のファイルすべてを変換する方法はありますか? Windows 7を使用しています。
私はnixdaの提案に従い、バッチスクリプトを使用しました。 Windows 7のバッチをプログラムする方法を見つけました。これが私の解決策です。
@echo off
for /f "delims=|" %%f in ('dir /b C:\Any_Directory\*.wav') do (
echo converting %%f
CALL "C:\Program Files\VideoLAN\VLC\vlc.exe" --intf dummy --dummy-quiet "%%f" --sout="#transcode{acodec=mp3,ab=256,vcodec=dummy}:standard{access=file,mux=raw,dst=MP3_Files/"%%f"}" vlc://quit
move "%%f" WAV_converted/"%%f"
)
cd MP3_Files
ren *.wav *.mp3
cd ..
echo .
echo .
echo .
echo conversion finished
pause
プログラムのしくみ:
ヒント-変換中にVLC GUIを表示する場合は、スクリプトから「--intfdummy--dummy-quiet」を削除します。デバッグに役立つ可能性があります。
更新 まだ1つのバグがあります:wavファイルの名前にドットまたはコンマが含まれている場合、名前は切り捨てられます(そして拡張子は追加されません!)。これにもかかわらずファイルは変換されます。 バージョン1.1.11でテスト済み。 新しいバージョンは動作しない可能性があります!
引用符を追加:--sout = "..."。 新しいバージョンでも機能します。Windowsのバージョン2.1.3 64ビットでテスト済み( VLC wikiページ)を参照 for LinuxとWindowsのコマンドラインの違い、および追加の例とオプション)。
SOにある同様のアプローチを追加するには:
私が行った変更、ディレクトリ名と曲名にスペースを入れることができますよくあることですが(常に)そうです。
@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
私はVLCを使用して一連のビデオファイルのオーディオを変換しましたが、同じ方法でトランスコーディングタスクを実行できます。単純な.batファイルを作成する必要があります。
for %%a in (*.avi) do "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" -I dummy -vvv "%%a" --sout=#transcode{acodec=mp3,ab=128,channels=2,samplerate=22050}:standard{access=file,mux=ts,dst="%%a_conv.avi"} --sout-keep vlc://quit