題 如何使用VLC或Audacity一次性轉換一種類型的幾個文件(例如wav到mp3)?


我有10個wav-Files。我想將它們全部轉換為mp3文件。我設法為一個單獨的文件(如中所述) 如何使用VLC轉換媒體?),但我不想為每個文件執行此操作。有沒有辦法一次性轉換所有10個文件?我正在使用Windows 7。


4
2017-07-08 15:48


起源


可能重複 批量轉換.wav到mp3和ogg? - nixda


答案:


我遵循了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

程序如何工作:

  • 指定文件夾“C:\ Any_Directory \”中具有.wav擴展名的所有文件都將轉換為mp3(文件名不能包含任何空格)
  • mp3文件保存在“MP3_Files”文件夾中(必須已經存在)
  • wav文件被推送到文件夾“WAV_converted”(必須已經存在)
  • “ab = 256”設置比特率。用例如轉換比特率128,替換為“ab = 128”。
  • 必須從與要轉換的文件相同的文件夾運行批處理文件(如Kevin Heidt所述)

提示   - 如果要在轉換時查看VLC GUI,請從腳本中刪除“--intf dummy --dummy-quiet”。可能對調試很有用。

更新 還有一個錯誤:如果wav文件的名稱包含點或逗號,則名稱將被截斷(並且不會附加擴展名!)。儘管如此,文件仍會被轉換。 測試版本1.1.11。 較新的版本可能無法正常工作!

添加了引號:--sout =“...”。 適用於較新的版本。 在Windows上測試版本2.1.3 64位(參見 VLC維基頁面 有關Linux和Windows命令行的差異以及其他示例和選項)。


10
2017-07-09 11:48



注意:這假設您的批處理文件是從與要轉換的文件相同的文件夾運行的(D:\“folder xyz”\ VLC_batch) - Kevin Heidt
videolan鏈接死了...... - Kev
這仍然是一個很好的工作解決方案。一個說明;我用它來轉換我的Soundcloud文件的負載,以及SC用%轉換為零長度文件命名的所有內容。雖然容易修復文件名很容易。 - Whelkaholism
它也不喜歡文件名中的括號。 - Whelkaholism


我使用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
  • 此批處理文件將掃描同一文件夾中的所有* .avi文件 使用描述的給定參數對它們進行轉碼 SOUT =#{轉碼PARAMS}
  • 要知道你應該使用什麼參數,你需要選擇 菜單 - >媒體 - >流...並在GUI嚮導中選擇所有參數。在最後一個嚮導步驟中,您將看到生成的params-string,您應該在批處理文件中使用它。
  • 輸出文件將有 _conv.avi 後綴,如果您需要其他擴展名,請更改它

0
2017-07-12 20:03





要添加在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

0
2017-11-09 16:01



很好......幹得好。現在讓它接受一個路徑作為參數,並允許文件名中所有可接受的字符(如果文件名中有例如'!',則當前失敗) - Krakkos