Assumindo que o ffmpeg.exe está incluído pela variável de caminho, use
cmd /q /c for %%I in ("%1") do ffmpeg -i %%I -acodec libmp3lame -vn -ar 44100 -ac 2 -ab 256k "%%~nI.mp3"como one-liner sem arquivo bat.
Eu criei uma chave no registro do Windows:
HKEY_CLASSES_ROOT\*\Shell\Convert to MP3\command
com:
"D:\tools\ffmpeg.exe" -i "%1" -acodec libmp3lame -vn -ar 44100 -ac 2 -ab 256k "%1.mp3"
Funciona, exceto que o nome do arquivo não é exatamente o que eu quero:
Entrada: test.wav
, Saída: test.wav.mp3
Considerando que gostaria que o nome do arquivo de saída fosse test.mp3
.
Eu também tentei com:
"D:\tools\ffmpeg.exe" ... "%~n1.mp3"
como nesta resposta , mas não funciona: a saída é %~n1.mp3
então!
Como remover a extensão original como esta e substituir por .mp3?
PS: Estou procurando uma solução sem envolver um arquivo .bat, mas apenas o registro. Se não for possível, não há problema em usar um arquivo bat.
Aqui está uma solução com um arquivo .BAT (não sei se é possível sem um arquivo BAT). A chave é usar %~n1.mp3
, conforme explicado aqui .
Arquivo ____LameMP3me.bat
:
"D:\Documents\software\____PORTABLE\____useful-tools\ffmpeg.exe" -i %1 -acodec libmp3lame -vn -ar 44100 -ac 2 -ab 256k "%~n1.mp3"
Em HKEY_CLASSES_ROOT\*\Shell\Lame MP3 me!\command
:
"D:\Documents\software\____PORTABLE\____useful-tools\____LameMP3me.bat" "%1"
Em vez de hackear o registro, basta colocar o arquivo .bat
(ou um arquivo .lnk
apontando para ele) em %APPDATA%\Microsoft\Windows\SendTo
.
Aqui está uma solução de cygwin + bash para o problema de extensão de arquivo, requer exatamente uma linha adicional de código graças a link
Você poderia iniciá-lo por c:\cygwin\bin\bash.exe <scriptname> <filename>
#!/bin/bash
FILE_NAME="${1%.*}"
"/cygdrive/d/tools/ffmpeg.exe" -i "\"$1\"" -acodec libmp3lame -vn -ar 44100 -ac 2 -ab 256k "\"${FILE_NAME}.mp3\""
#keep the console window open, uncomment if not necessary
read