Tengo una pista de audio 5.1 de una película donde el frente izquierdo y el derecho delantero contienen música, y el centro contiene diálogo. Reproducir la pista 5.1 en VLC combina todo muy bien.
Estoy tratando de convertir la pista 5.1 a estéreo usando ffmpeg -ac 2
, sin embargo, la mezcla estéreo resultante tiene un volumen mucho más débil que reproducir la pista 5.1 de forma nativa.
Agregar agrega -af "pan=stereo|c0=FL|c1=FR"
el volumen correcto, pero luego no hay diálogo porque el canal central no está incluido.
Entonces, ¿la solución es tal vez mezclar izquierda / centro / derecha en estéreo y tirar los canales del subwoofer de fondo? (Supongo que aquí ...)
Entonces la pregunta es: ¿cómo hago para que ffmpeg downmix 5.1 esté en estéreo de la misma manera que lo hace VLC, con el mismo volumen fuerte en el resultado final?
-ac 2
. Entonces, estoy preguntando cómo hacer que ffmpeg genere el mismo buen resultado que VLC.Respuestas:
Encontré la respuesta que Shane proporcionó para proporcionar muy poco de los otros canales y demasiado del centro. Las películas con auriculares sonaban fuera de balance, con todos los diálogos y sin suficiente música de fondo / efectos.
De acuerdo con los estándares ATSC (sección 7.8, página 91), la siguiente fórmula se usa para mezclar 5.1 a estéreo convencional (en oposición a la matriz):
clev y slev deben ser .707, de acuerdo con las tablas 5.9 y 5.10 en el documento mencionado anteriormente, suponiendo un nivel de mezcla de centro / surround de 0. Se proporcionan otros valores en esas tablas que reducen la cantidad de mezcla central, que no encuentro útil.
Con esto en mente, la siguiente opción ffmpeg produce un buen sonido equilibrado con diálogo audible. Tenga en cuenta que no es necesario especificar los canales de audio.
Una nota sobre el uso del símbolo menor que, de la documentación del filtro de desplazamiento :
fuente
ac -2
interruptor. En otras palabras, la única diferencia entre usar este filtro y hacerac -2
es escribir mucho más.Desde entonces, las respuestas a esta pregunta se han vuelto un poco confusas, y muchas contienen información redundante y otras inexactitudes completas. Esta respuesta es un intento de racionalizar la información en estas respuestas mientras elimina los problemas en ellas.
Lo más importante, vale la pena tener en cuenta que la respuesta de Gregory, actualmente la respuesta más votada a esta pregunta, no es diferente a usar el
-ac 2
interruptor, más sobre esto a continuación.Mezclar una transmisión de audio de 5.1 canales a estéreo con
-ac 2
FFmpeg viene con capacidades incorporadas para mezclar una pista 5.1 a estéreo, y esta es también la solución que la propia documentación de FFmpeg recomienda :
El
-ac 2
conmutador funciona mezclando proporciones de los primeros 5 canales de la transmisión de 6 canales de la fuente: Atrás izquierda, Atrás derecha, Delantera izquierda, Delantera derecha y Delantera central, en los canales Frontal izquierdo y Frontal derecho de la transmisión estéreo de salida:Al hacerlo, el audio del canal LFE (el .1 en 5.1, reservado para el subwoofer y utilizado para efectos profundos de baja frecuencia) se descarta por completo cuando se utiliza esta opción.
Desafortunadamente, en mis pruebas
-ac 2
resultó en niveles generales de música y diálogo que fueron los más diferentes a la fuente, lo que la convierte en la fórmula de downmix que da el peor resultado de todas las fórmulas que probé, aunque puede probarlo y descubrir que le ofrece una mezcla descendente perfectamente adecuada para sus necesidades, en cuyo caso utilizar cualquier otra fórmula sería excesivo para usted.Para mezclar una pista DTS
-ac 2
sin transcodificarla (es decir, mantener su códec y extensión igual):Como señaló Mephisto en su respuesta, si el diálogo y la música suenan bien equilibrados entre ustedes pero simplemente carecen de volumen, puede mezclar la transmisión al mismo tiempo que aumenta su volumen:
Para el
-vol
conmutador, el volumen del 100% en la fuente es equivalente al valor entero 256, y el uso de un valor mayor que este aumentará el volumen general de la transmisión de audio. Sin embargo, tenga en cuenta que hacerlo demasiado puede provocar distorsiones o artefactos, especialmente durante sus secciones más fuertes.Para mezclar una transmisión de audio a estéreo y transcodificarla al códec AC3, por ejemplo:
Mezclar una transmisión de audio de 5.1 canales a estéreo con un algoritmo de mezcla personalizado
Si desea una mezcla de baja calidad más alta, o debe incluir absolutamente la transmisión LFE en su salida, puede usar el interruptor del filtro de audio de FFmpeg (
-af
) para mezclar el audio usando una fórmula de mezcla personalizada.Downmixing con la fórmula ATSC (respuesta de Gregory)
En el momento de publicar esta respuesta, la respuesta más votada a esta pregunta fue la de Gregory , que coloca la fórmula de la especificación ATSC (consulte la sección 7.8.2, Mezcla descendente en dos canales ) en un filtro de audio FFmpeg. Esta especificación está directamente vinculada a la documentación de FFmpeg sobre el tema , lo que indica que es muy probable que sea la misma fórmula que FFmpeg ya implementa para su
-ac 2
conmutador. Si esto es cierto, escribir la fórmula completa en la respuesta de Gregory no sería diferente a usar el-ac 2
interruptor y, por lo tanto, una pérdida de tiempo.Decidí probar esto con certeza volviendo a codificar el mismo audio de entrada usando ambos
-ac 2
y el-af
filtro de la respuesta de Gregory (los comandos exactos utilizados se pueden ver en las notas al pie de esta respuesta).Luego comparé los tamaños de los archivos de salida resultantes y descubrí que eran, byte por byte, del mismo tamaño:
Finalmente, abrí los dos archivos de salida en Audacity, y comparé sus formas de onda para confirmar que eran idénticos (haga clic para ampliar):
Por lo tanto, parece bastante concluyente que la fórmula ATSC detallada en la respuesta de Gregory es la misma ya implementada por FFmpeg , y que su uso es completamente redundante cuando no hace nada que
-ac 2
no lo hace, y es un comando mucho más engorroso.Downmixing sin descartar el canal LFE (respuesta de Dave_750)
De las varias incluidas en las respuestas, esta es la única de las fórmulas de downmix que parece mezclar el canal LFE en el estéreo de salida en lugar de descartarlo por completo, y como resultado, la que garantiza el menor sonido de la fuente es perdido.
El nivel de volumen general es más alto y más completo que hacerlo
-ac 2
, pero también es más bajo que la mezcla de abajo del Diálogo Nightmode. Sin embargo, los niveles de música están mucho más cerca de la fuente que el downmix de Nightmode Dialogue, y debido a la inclusión de la pista LFE, aumentar el volumen de la salida al usar esta fórmula de downmix puede crear un flujo de salida que suena más fiel a la fuente 5.1 que todos los demás. Fórmulas que probé.Si tiene la capacidad, le recomiendo codificar su (s) secuencia (s) de audio utilizando esta fórmula de mezcla descendente y la mezcla descendente de Diálogo de modo nocturno, y comparando cuidadosamente las formas de onda de los dos para determinar cuál es mejor.
Para mezclar una pista 5.1 a estéreo con esta fórmula y aumentar su nivel de volumen a 425 (donde 256 es el 100% del nivel de volumen de la fuente original):
Downmixing con el Diálogo Nightmode de Robert Collier (respuesta de Shane Harrelson)
La fórmula del Diálogo Nightmode, creada por Robert Collier en el foro Doom9 y obtenida por Shane Harrelson en su respuesta, da como resultado una mezcla mucho mejor que el
-ac 2
cambio, en lugar de diálogos demasiado silenciosos, los lleva a niveles mucho más cercanos al fuente.De la descripción de Robert Collier de la mezcla:
Desafortunadamente, la música de esta fórmula de downmix es mucho más baja que en la fuente 5.1 (que probablemente fue por diseño considerando la intención de Collier de crear una mezcla de "modo nocturno") y debido a la pérdida completa de la pista LFE, el audio de salida general no suena tan completo o cercano a la fuente como la fórmula de Dave_750 con volumen aumentado .
Sin embargo, si por alguna razón desea evitar aumentar el volumen general de la transmisión, entonces el Diálogo Nightmode probablemente sea su mejor opción, aunque, una vez más, le recomiendo codificar su transmisión de audio a ambos y comparar cuidadosamente las formas de onda de los dos. .
Para mezclar con la fórmula del diálogo Nightmode en FFmpeg:
La respuesta de Tarc
Esta respuesta simplemente pone la fórmula de downmix Diálogo de modo nocturno de la respuesta de Shane Harrelson en un comando para convertir la secuencia de audio en un contenedor MKV. Si bien el comando dado en esta respuesta funcionaría bien en una transmisión de audio de este tipo, adaptarlo para una pista de audio independiente daría el error:
Esto se debe a que el códec de audio no se puede copiar al mezclar hacia abajo, como todos los demás cambios que FFmpeg realiza en una secuencia de salida, una mezcla hacia abajo requiere que la pista se vuelva a codificar para que se apliquen los cambios.
Este comando también incluía un
-ac 2
interruptor redundante que FFmpeg habría ignorado.Comandos de prueba
Para demostrar la fiabilidad de las pruebas que realicé para esta respuesta, a continuación se detallan todos los comandos que utilicé para probar cada fórmula de downmix.
El comando de prueba utilizado para la
-ac 2
opción:El comando de prueba utilizado para la respuesta de Gregory:
El comando de prueba utilizado para la respuesta de Dave_750:
El comando de prueba utilizado para la respuesta de Shane Harrelson:
fuente
-ac 2
me dio un resultado inferior para empezar, lo que provocó la publicación original. Intentaré esto nuevamente y, si es posible, comparta un extracto 5.1 que no dé un resultado satisfactorio con la mezcla descendente incorporada. ¡También es muy bueno saber que puede mezclar sin transcodificar!ac -2
opción también me dio el resultado más inferior de todas las fórmulas de downmix, creo que esto es solo un fallo de la fórmula del estándar ATSC.ffmpeg -i 5.1.mp4 -ac 2 2.mp4
funciona, peroffplay -i 5.1.mp4 -ac 2
no.Prueba este downmix:
como lo sugirió Robert Collier en el foro Doom9.
fuente
Entonces, combinando @Shane Harrelson con la respuesta de @Jordan Harris a otra pregunta , con el modo perezoso activado, aquí lo que se necesita para convertir
input_51.mkv
(5.1) enoutput_stereo.mkv
(estéreo):Los
-c:v copy
medios de piezas que el flujo de vídeo no está siendo tocado (supongo que la v ideo c ODEC configuración es ser policía IED). Sin ella, tomará mucho más tiempo. Simplemente repitiendo la respuesta anterior para completar,-ac 2
significa dos canales de audio y-af
especifica un filtro de audio.Después de mirar un poco el comando, descubrí que está configurando cómo se componen los dos canales estéreo; el
FL
(canal frontal izquierdo) se toma del originalFC
(centro frontal) más0.30*FL
(30% desde el frente izquierdo) más0.30*BL
(30% desde el lado posterior izquierdo) y así sucesivamente.fuente
Esta es una vieja pregunta ahora, pero me señaló en la dirección correcta y quería compartir mi resultado:
Poner la mitad del FC y LFE en izquierda y derecha da un total de 1 para sus volúmenes efectivos de ambos altavoces. El uso de .707 * Delantero / trasero izquierdo / derecho reduce esos canales a un buen nivel para que no dominen el centro.
fuente
Si la opción -ac 2 le da una mezcla descendente equilibrada donde ni la música ni el discurso suenan demasiado más que los otros componentes, solo necesita aumentar el volumen con
Usé 512 en el ejemplo, lo que aumenta el sonido y lo hace dos veces más fuerte. La regla es que 256 es equivalente al 100%
No suba demasiado con el valor, y asegúrese de verificar los resultados en esas partes de la película con explosiones o ruidos fuertes. Es muy fácil introducir distorsión al usar un valor demasiado alto.
fuente
-ac 2
El volumen de canales en downmix no cambia con el códec de coma flotante -> pcm_f32le, aac
El volumen en downmix (5.1 a 2.0 sin LFE) se reduce en 1 / 2.5 = -7.96 dB con códec entero -> pcm_s16le, libfdk_aac
Las películas tienen sonido apuntando en una dirección, y no hay presión de sonido máxima en todos los canales. Por lo tanto, el volumen reducido de downmix es incorrecto, la compresión correcta de poco nivel es la correcta. Eso es lo que hace Dolby.
fuente
Después de leer toda esta página y algunos experimentos, se me ocurrió este script llamado "down_mix":
Ajusta las variables anteriores a tu gusto. No tuve ningún problema con el bajo volumen, así que lo dejé fuera, pero lo agregué fácilmente.
fuente
El filtro ffmpeg "-ac 2" funciona bien siempre que su objetivo esté codificado en pcm_s16le. Al codificar a pcm_f32le en formato wav, el volumen aumenta en 9dB y más. Por lo tanto: no use el filtro "-ac 2" en tales casos.
fuente