У меня есть 10 wav-файлов. Я хочу конвертировать их все в mp3-файлы. Мне удалось сделать это для одного файла (как описано в разделе Как конвертировать медиа с помощью VLC?), Но я не хочу делать это для каждого файла. Есть ли способ конвертировать все 10 файлов одним ударом? Я использую Windows 7.
3 ответа
Я последовал предложению 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
Как работает программа:
- Все файлы с расширением .wav в указанной папке «C:\Any_Directory\» преобразуются в mp3 (имена файлов не должны содержать пробелов)
- Файлы mp3 сохраняются в папке "MP3_Files" (которая уже должна существовать)
- Файлы WAV помещаются в папку "WAV_converted" (которая уже должна существовать)
- «ab = 256» устанавливает битрейт. Для преобразования, например, с битрейтом 128, замените его на «ab = 128».
- Пакетный файл должен быть запущен из той же папки, что и файлы, которые вы хотите преобразовать (как упомянул Кевин Хайдт)
Подсказки - Удалите «--intf dummy --dummy-quiet» из сценария, если вы хотите видеть графический интерфейс VLC во время преобразования. Может быть полезно для отладки.
Обновить Есть еще одна ошибка: если имя wav-файла содержит точку или запятую, имя усекается (и расширение не добавляется!). Файл конвертируется несмотря на это.
Протестировано с версией 1.1.11. Более новые версии могут не работать!
Добавлен знак кавычки: --sout = "...". Работает и для более новых версий. Протестировано с 64-битной версией 2.1.3 в Windows (см. Вики-страницу VLC, в которой описаны различия в командной строке для 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
- Этот пакетный файл отсканирует все файлы * .avi в одной папке и перекодирует их с заданными параметрами, описанными в sout = # transcode { params }
- Чтобы узнать, какие параметры следует использовать, вам нужно выбрать Меню-> Мультимедиа> Поток ... и выбрать все параметры в мастере графического интерфейса. На последнем шаге мастера вы увидите сгенерированную строку параметров, которую вы должны использовать в своем пакетном файле.
- Выходные файлы будут иметь суффикс _conv.avi , измените его, если вам нужно другое расширение