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 :
Nota: ffmpeg integra un sistema predeterminado de mezcla descendente (y mezcla ascendente) que se debe preferir (la -ac
opción) sobre el filtro panorámico a menos que tenga necesidades muy específicas.
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):
ffmpeg -i "sourcetrack.dts" -c:a dca -ac 2 "stereotrack.dts"
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:
ffmpeg -i "sourcetrack.dts" -c:a dca -ac 2 -vol 425 "stereotrack.dts"
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:
ffmpeg -i "sourcetrack.dts" -c:a ac3 -ac 2 "stereotrack.ac3"
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):
ffmpeg -i "sourcetrack.dts" -c dca -vol 425 -af "pan=stereo|FL=0.5*FC+0.707*FL+0.707*BL+0.5*LFE|FR=0.5*FC+0.707*FR+0.707*BR+0.5*LFE" "outputstereo.dts"
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:
Después de convertir muchas pistas de películas DTS de 5.1 a 2.0 usando eac3to, he encontrado que las asignaciones de canales predeterminadas de eac3to dan como resultado diálogos muy tranquilos y música y escenas de acción demasiado ruidosas. Aunque los coeficientes de mezcla descendente del canal eac3to tienen una base científica, a menudo no suenan bien en la práctica debido al bajo volumen de diálogo. Este ajuste preestablecido es para aquellos que buscan diálogos claros con la música del canal izquierdo y derecho aún siendo audible pero más en segundo plano.
Como puede ver, el centro frontal (diálogos) entra correctamente ahora y permanece en el nivel original, mientras que la música y las explosiones siguen siendo un efecto de fondo y no lo dominan. Este preajuste resuelve el problema de que tenga que tocar constantemente la perilla de volumen cuando mira películas DTS 5.1 convertidas a 2.0 para escuchar diálogos. (Especialmente para ver películas en la noche en las que no quieres despertar a otros pero aún quieres poder escuchar diálogos).
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:
ffmpeg -i "sourcetrack.dts" -c dca -af "pan=stereo|FL=FC+0.30*FL+0.30*BL|FR=FC+0.30*FR+0.30*BR" "stereotrack.dts"
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:
El filtrado y la streamcopy no se pueden usar juntos
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:
ffmpeg -i "signed16bitPCM.wav" -c pcm_s16le -ac 2 "Audio 1 (-ac 2).wav"
El comando de prueba utilizado para la respuesta de Gregory:
ffmpeg -i "signed16bitPCM.wav" -c pcm_s16le -af "pan=stereo|FL < 1.0*FL + 0.707*FC + 0.707*BL|FR < 1.0*FR + 0.707*FC + 0.707*BR" "Audio 2 (ATSC Algorithm Downmix).wav"
El comando de prueba utilizado para la respuesta de Dave_750:
ffmpeg -i "signed16bitPCM.wav" -c pcm_s16le -vol 425 -af "pan=stereo|FL=0.5*FC+0.707*FL+0.707*BL+0.5*LFE|FR=0.5*FC+0.707*FR+0.707*BR+0.5*LFE" "Audio 4 (Dave750 Downmix).wav"
El comando de prueba utilizado para la respuesta de Shane Harrelson:
ffmpeg -i "signed16bitPCM.wav" -c pcm_s16le -af "pan=stereo|FL=FC+0.30*FL+0.30*BL|FR=FC+0.30*FR+0.30*BR" "Audio 3 (Nightmode Dialogue Downmix).wav"