![Quiero usar ffmpeg-normalize para normalizar el volumen de 100 archivos de video mp4](https://rvso.com/image/1606692/Quiero%20usar%20ffmpeg-normalize%20para%20normalizar%20el%20volumen%20de%20100%20archivos%20de%20video%20mp4.png)
Quiero usar ffmpeg-normalize para normalizar el volumen de 100 archivos de video mp4. ¿Hay alguna manera de que el programa los ejecute todos para determinar un nivel adecuado, o debo darle un archivo como entrada? ¿Puede convertir una carpeta completa sin enumerar 100 nombres de archivos? Intenté usar ffmpeg-normalize *.mp4 (mientras la línea de comando estaba en el directorio de los videos), pero me dio el error "el archivo *.mp4 no existe". Estoy usando ffmpeg en un sistema Windows, pero lo haré. reproducir los archivos a través de un reproductor KODI en una nVidia Shield. Solo quiero poder reproducir los videos sin grandes cambios de volumen.
Respuesta1
La ffmpeg-normalize
herramienta puede utilizar varios archivos como entrada. El comodín *.mp4
es específico de Linux. En Windows puedes usar un bucle simple, como se explica en README
ffmpeg-normalize:
for %%f in ("*.mp4") do ffmpeg-normalize "%%f" -c:a aac -b:a 192k -ext mp4
Esto creará sus archivos de salida en la carpeta normalized
, con una mp4
extensión y transmisiones de audio codificadas en AAC (normalizadas).
Dado que la configuración predeterminada utiliza la normalización de volumen EBU R 128 con un volumen objetivo determinado, no tiene que preocuparse por "alinear" varios archivos. Simplemente ejecútelo en todos ellos.
Si tiene preguntas sobre el uso, primero consulte el archivo LÉAME; de lo contrario, publique un problema en GitHub.
Respuesta2
He visto una solución de Windows como la que produje aquí, creada por otra persona hace muchos años, pero ya no sé cómo se llamaba ni dónde conseguirla. También creo que era sólo para archivos AVI. He recurrido a escribir el mío desde cero para manejar MP4. Me gustaría compartir esto con todos los que estén interesados, ya que este sitio me ha ayudado mucho para llegar a este punto.
Escribí un script por lotes de DOS en mi Windows 10 que puede tomar múltiples archivos *mp4 (y sí, con espacios en el nombre) y normalizar el volumen usando mp3gain. (Probé MP4GAIN, pero el período de prueba terminó en aproximadamente 1 hora). Descubrí que éste se procesará mucho más rápido que MP4GAIN. Hago esto porque puedo controlar específicamente ffmpeg y mp3gain en cada paso del camino y hacer cosas que mp4gain o ffmpeg-normalize tal vez no puedan hacer.
Por supuesto, no es infalible ni está optimizado. Más bien, puede ser un trampolín para que alguien lo sintonice o modifique para sus propios fines. Extraigo el audio como mp3 VBR y dejo que mp3gain haga su magia y luego lo vuelvo a colocar. Creo que puedo procesar 5 normalizaciones simultáneas, pero está sujeto al espacio disponible en el disco duro si quieres probar más a la vez.
Cree las carpetas: C:\Vids puede estar en cualquier lugar, pero tenga dentro las carpetas originales, de trabajo y completadas.
C:\Vids
C:\Vids\original
C:\Vids\working
C:\Vids\completed
Descargue la última versión: son gratuitas a partir del 1/9/2020, según lo he comprobado. Estoy usando lo siguiente:
C:\Vids\ffmpeg.exe ( ffmpeg version git-2020-08-28-ccc7120 )
C:\Vids\mp3gain.exe ( mp3gain version 1.4.6 )
Crea un C:\Vids\normalize.bat
y pon esto allí:
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 los mp4 originales en su C:\Vids\original
carpeta y ejecute normalize.bat. Lo hago desde el indicador de DOS cmd.exe, pero también puedes hacer doble clic en el archivo por lotes en el Explorador de Windows. Buscará archivos mp4 en la carpeta original y creará archivos por lotes individuales en formato C:\Vids\working
. Puede iniciar uno, dos o cuatro de estos archivos por lotes C:\Vids\working
a la vez.
Cada mp4 original se descomprimirá en un mp4 sin audio y en un mp3 VBR sin vídeo.
Las extracciones de video y audio se realizan al mismo tiempo, pensando que esto probablemente producirá dos archivos que se pueden volver a fusionar más tarde sin que el video o el audio sean más cortos que el otro. Los extractos de vídeo y audio van en C:\Vids\working
.
Luego, se ejecutará mp3gain.exe con el mp3 extraído y luego las transmisiones de audio y video se fusionarán nuevamente con ffmpeg y se colocarán en la C:\Vids\completed
carpeta.
Los mp4 y mp3 descomprimidos temporalmente se eliminarán una vez que se complete el proceso.
=======
LIMITACIONES:
El nombre de archivo del mp4 no puede contener ciertos caracteres especiales (como ! o ♫), pero caracteres como espacios ( ) [ ] # ' @ - _ están bien. Si descubre que el script generado falla o se cierra demasiado rápido y no procesa el archivo de video, intente cambiar el nombre del archivo original.
No tengo una verificación de ffprobe para ver si el audio incrustado ya es un mp3, y descubrí que no todo el audio aac puede normalizarse con aacgain.exe. Por lo tanto fuerzo que todo salga como mp3 VBR con la más alta calidad. Si el audio original tiene calidad suficiente, no me importa hacerlo.
PEDIDO
Sería útil si las personas pudieran ampliar este script para que conozca los distintos tipos de audio y hacer una copia del audio si ya es mp3. O reconozca que el audio AAC debe convertirse a mp3 o dejarse como AAC.
Haga que maneje otros tipos de archivos de video (Avi, mkv, wmv, etc.)
Verifique si ocurrió una falla después de cada paso y salga del script, y permita una función de reanudación para que no sea necesario volver a realizar extracciones.
Agregar banderas para habilitarapresamientoel archivo de video usa libx264 -crf 18 -preset veryslow para ahorrar algo de espacio, pero esto hará que todo funcione muy lento.
Cualquier otra mejora que se te ocurra.
Gracias.
~Lum