![Quero usar ffmpeg-normalize para normalizar o volume de 100 arquivos de vídeo mp4](https://rvso.com/image/1606692/Quero%20usar%20ffmpeg-normalize%20para%20normalizar%20o%20volume%20de%20100%20arquivos%20de%20v%C3%ADdeo%20mp4.png)
Quero usar o ffmpeg-normalize para normalizar o volume de 100 arquivos de vídeo mp4. Existe uma maneira de o programa executar todos eles para determinar um nível adequado - ou devo fornecer um arquivo como entrada? Ele pode converter uma pasta inteira sem listar 100 nomes de arquivos? Tentei usar ffmpeg-normalize *.mp4 (enquanto o prompt da linha de comando estava no diretório dos vídeos), mas deu erro "arquivo *.mp4 não existe" Estou usando ffmpeg em um sistema windows, mas estarei reproduzindo os arquivos através de um player KODI em um nVidia Shield. Eu só quero poder reproduzir os vídeos sem grandes oscilações de volume.
Responder1
A ffmpeg-normalize
ferramenta pode usar vários arquivos como entrada. O curinga *.mp4
é específico do Linux. No Windows você pode usar um loop simples, conforme explicado no README
ffmpeg-normalize:
for %%f in ("*.mp4") do ffmpeg-normalize "%%f" -c:a aac -b:a 192k -ext mp4
Isso criará seus arquivos de saída na pasta normalized
, com uma mp4
extensão e fluxos de áudio codificados em AAC (normalizados).
Como a configuração padrão usa a normalização de volume EBU R 128 com um determinado volume alvo, você não precisa se preocupar em "alinhar" vários arquivos. Basta executá-lo em todos eles.
Para questões de uso, primeiro leia o README; caso contrário, poste um problema no GitHub.
Responder2
Já vi uma solução Windows como a que produzi aqui, criada por outra pessoa há muitos anos - mas não sei mais como se chamava, nem onde consegui-la. Também acho que era apenas para arquivos AVI. Recorri a escrever o meu próprio do zero para lidar com MP4. Eu gostaria de compartilhar isso com todos que estiverem interessados, pois este site me ajudou muito a chegar a este ponto.
Eu escrevi um script em lote DOS no meu Windows 10 que pode receber vários arquivos *mp4 (e sim - com espaços no nome) e normalizar o volume usando mp3gain. (Tentei o MP4GAIN, mas o período de teste terminou em cerca de 1 hora). Este será processado muito mais rápido que o MP4GAIN, descobri. Faço isso porque posso controlar especificamente o ffmpeg e o mp3gain em cada etapa do processo e fazer coisas que o mp4gain ou o ffmpeg-normalize talvez não consigam.
Certamente, não é infalível nem otimizado. Em vez disso, pode ser um trampolim para alguém ajustar/ajustar para seus próprios propósitos. Eu extraio o áudio como mp3 VBR e deixo o mp3gain fazer sua mágica nele e depois o coloco de volta. Acho que posso processar 5 normalizações simultâneas, mas isso está sujeito ao espaço disponível no disco rígido se você quiser tentar mais de uma vez.
Crie as pastas - C:\Vids pode estar em qualquer lugar, mas contém as pastas originais, funcionais e completas.
C:\Vids
C:\Vids\original
C:\Vids\working
C:\Vids\completed
Baixe o mais recente - eles são gratuitos a partir de 01/09/2020, conforme verifiquei. Estou usando o seguinte:
C:\Vids\ffmpeg.exe ( ffmpeg version git-2020-08-28-ccc7120 )
C:\Vids\mp3gain.exe ( mp3gain version 1.4.6 )
Crie um C:\Vids\normalize.bat
e coloque isso lá:
echo off
setlocal enableextensions enabledelayedexpansion
for %%I in (original\*.mp4) DO (
echo Creating working\%%~nI.bat
echo echo off > "working\%%~nI.bat"
echo echo Unpacking audio and video from %%I . >> "working\%%~nI.bat"
echo echo ..\ffmpeg.exe -v 0 -i "..\%%I" -q:a 0 -map a ".\%%~nI_audio_only.mp3" -vcodec copy -map 0:v ".\%%~nI_video_only.mp4" >> "working\%%~nI.bat"
echo ..\ffmpeg.exe -v 0 -i "..\%%I" -q:a 0 -map a ".\%%~nI_audio_only.mp3" -vcodec copy -map 0:v ".\%%~nI_video_only.mp4" >> "working\%%~nI.bat"
echo echo . >> "working\%%~nI.bat"
echo echo Normalizing extracted audio with Mp3Gain. >> "working\%%~nI.bat"
echo echo ..\mp3gain.exe ".\%%~nI_audio_only.mp3" >> "working\%%~nI.bat"
echo ..\mp3gain.exe ".\%%~nI_audio_only.mp3" >> "working\%%~nI.bat"
echo echo Reconstructing normalized video from component parts. >> "working\%%~nI.bat"
echo echo .\ffmpeg.exe -v 0 -i ".\%%~nI_video_only.mp4" -i ".\%%~nI_audio_only.mp3" -codec copy "..\completed\%%~nI%%~xI" >> "working\%%~nI.bat"
echo ..\ffmpeg.exe -v 0 -i ".\%%~nI_video_only.mp4" -i ".\%%~nI_audio_only.mp3" -codec copy "..\completed\%%~nI%%~xI" >> "working\%%~nI.bat"
echo echo Post-process clean up. >> "working\%%~nI.bat"
echo del ".\%%~nI_audio_only.mp3" >> "working\%%~nI.bat"
echo del ".\%%~nI_video_only.mp4" >> "working\%%~nI.bat"
echo echo Done. >> "working\%%~nI.bat"
echo echo on >> "working\%%~nI.bat"
)
pause
echo on
Coloque os mp4 originais em sua C:\Vids\original
pasta e execute normalize.bat. Eu faço isso no prompt do DOS cmd.exe, mas você também pode clicar duas vezes no arquivo em lote no Windows Explorer. Ele pesquisará mp4 na pasta original e criará arquivos em lote individuais no formato C:\Vids\working
. Você pode iniciar um, dois ou quatro desses arquivos em lote C:\Vids\working
de uma vez.
Cada mp4 original será descompactado em um mp4 sem áudio e um mp3 VBR sem vídeo.
As extrações de vídeo e áudio são feitas ao mesmo tempo, pensando que isso provavelmente produzirá dois arquivos que poderão ser mesclados posteriormente sem que o vídeo ou áudio seja mais curto que o outro. Os extratos de vídeo e áudio vão para o arquivo C:\Vids\working
.
Em seguida, mp3gain.exe será executado no mp3 extraído e os fluxos de áudio e vídeo serão mesclados novamente com o ffmpeg e colocados na C:\Vids\completed
pasta.
Os mp4 e mp3 descompactados temporários serão excluídos assim que o processo for concluído.
=======
LIMITAÇÕES:
O nome do arquivo mp4 não pode conter certos caracteres especiais (como ! ou ♫), mas caracteres como espaços ( ) [ ] # ' @ - _ são aceitáveis. Se você achar que o script gerado falha ou sai muito rapidamente e não processa o arquivo de vídeo, tente renomear o arquivo original.
Não verifiquei o ffprobe para ver se o áudio incorporado já é um mp3 e descobri que nem todo áudio aac pode ser normalizado pelo aacgain.exe. Por isso forço tudo a sair como mp3 VBR com a mais alta qualidade. Se o áudio original tiver qualidade suficiente, não me importo de fazer isso.
SOLICITAR
Se as pessoas pudessem estender este script ainda mais para torná-lo ciente dos vários tipos de áudio e fazer uma cópia do áudio se já for mp3, seria útil. Ou reconheça que o áudio AAC precisa ser convertido para mp3 ou deixado como AAC.
Faça com que ele lide com outros tipos de arquivos de vídeo (Avi, mkv, wmv, etc.)
Verifique se ocorreu uma falha após cada etapa e saia do script, e permita um recurso de retomada para que não seja necessário ocorrer novas extrações.
Adicione sinalizadores para ativarcomprimindoo arquivo de vídeo usando libx264 -crf 18 -preset veryslow para economizar espaço - mas isso fará com que as coisas fiquem muito lentas.
Quaisquer outras melhorias que você possa imaginar.
Obrigado.
~Lum