Questão Como converter vários arquivos de um tipo (por exemplo, wav para mp3) usando VLC ou Audacity em um único golpe?


Eu tenho 10 arquivos wav. Eu quero converter todos eles em arquivos mp3. Eu consegui isso para um único arquivo (como descrito em Como converter mídia usando o VLC?), mas eu não quero fazer isso para cada arquivo. Existe uma maneira de converter todos os 10 arquivos em um único golpe? Estou usando o windows 7.


4


origem


possível duplicata de Batch converter. Wav para mp3 e ogg? - nixda


Respostas:


Eu segui a sugestão de nixda e usei um script em lote. Eu descobri como programar um lote para o windows 7. Esta é a minha solução:

@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

Como o programa funciona:

  • Todos os arquivos com a extensão .wav na pasta especificada "C: \ Any_Directory \" são convertidos para mp3 (os nomes dos arquivos não devem conter espaços em branco)
  • Os arquivos mp3 são salvos na pasta "MP3_Files" (que já deve existir)
  • Os arquivos wav são enviados para a pasta "WAV_converted" (que já deve existir)
  • "ab = 256" define a taxa de bits. Para converter com, e. taxa de bits 128, substitua por "ab = 128".
  • O arquivo de lote deve ser executado na mesma pasta que os arquivos que você deseja converter (como mencionado por Kevin Heidt)

Dicas  - Remova "--intf dummy --dummy-quiet" do script se você quiser ver a GUI do VLC durante a conversão. Pode ser útil para depuração.

Atualizar Ainda há um bug: Se o nome do arquivo wav contiver um ponto ou vírgula, o nome será truncado (e nenhuma extensão será anexada!). O arquivo é convertido apesar disso. Testado com a versão 1.1.11. Versões mais recentes podem não funcionar!

Adicionado sinal de cotação: --sout = "...". Funciona também para versões mais recentes. Testado com a versão 2.1.3 de 64 bits no Windows (consulte o Página wiki do VLC para diferenças na linha de comando para Linux e Windows e exemplos adicionais e opções).


10



Nota: isso pressupõe que seu arquivo de lote está sendo executado na mesma pasta que os arquivos que você deseja converter (D: \ "pasta xyz" \ VLC_batch) - Kevin Heidt
coisas excelentes. - roel
link de videolan está morto ... - Kev
Esta ainda é uma solução boa e funcional. Uma nota; Eu usei para converter uma carga de meus arquivos do Soundcloud, e tudo o que o SC tinha chamado com um% convertido em um arquivo de tamanho zero. Fácil o suficiente para consertar os nomes de arquivos primeiro. - Whelkaholism
Também não gosta de parênteses no nome do arquivo. - Whelkaholism


Eu usei o VLC para converter áudio para um conjunto de arquivos de vídeo, mas a mesma abordagem pode ajudar em qualquer tarefa de transcodificação. Você deve criar um arquivo .bat simples:

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
  • Esse arquivo em lote fará a varredura de todos os arquivos * .avi na mesma pasta e transcodificá-los com um dado parâmetro descrito em sout = # transccode {params}
  • Para saber quais parâmetros você deve usar, é necessário selecionar Menu-> Media-> Stream ... e selecione todos os parâmetros no assistente da GUI. Na última etapa do assistente, você verá a sequência de parâmetros gerada que deve usar em seu arquivo de lote.
  • Arquivos de saída terão _conv.avi sufixo, altere-o se precisar de outra extensão

0





Para adicionar uma abordagem semelhante encontrada no SO:

As mudanças que fiz, permite espaços nos nomes dos diretórios e nos nomes das músicas como costuma ser (sempre) o caso.

@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



Bom ... bom trabalho. Agora, para aceitar um caminho como argumento e permitir todos os caracteres aceitáveis ​​em nomes de arquivos (atualmente falha se o nome do arquivo tiver, por exemplo, um '!') - Krakkos