Les réponses à cette question sont depuis devenues un peu confuses, beaucoup contenant des informations redondantes et d'autres étant totalement inexactes. Cette réponse est une tentative de rationaliser l'information dans ces réponses tout en éliminant les problèmes qu'elles contiennent.
Plus important encore, il faut garder à l'esprit que la réponse de Gregory, qui est actuellement la réponse la plus votée à cette question, n'est pas différente de l'utilisation de la fonction -ac 2
interrupteur - plus d'informations à ce sujet ci-dessous.
Le downmixage d'un flux audio de 5.1 canaux en stéréo avec -ac 2
FFmpeg est livré avec des capacités intégrées pour le downmixage d'une piste 5.1 en stéréo, et c'est également la solution que la documentation de FFmpeg propose. recommande :
Remarque : ffmpeg intègre un système de down-mix (et up-mix) par défaut qui devrait être préféré (le -ac
) sur le filtre à cuvette, sauf si vous des besoins très spécifiques.
En -ac 2
Le commutateur fonctionne en mélangeant des proportions des 5 premiers canaux du flux à 6 canaux de la source - Back Left, Back Right, Front Left, Front Right et Front Center - dans les canaux Front Left et Front Right du flux stéréo de sortie :
Dans ce cas, l'audio provenant du canal LFE (le canal .1 en 5.1, réservé au subwoofer et utilisé pour des effets profonds et de basse fréquence) est complètement abandonné lorsque vous utilisez cette option.
Malheureusement, dans mes tests -ac 2
a donné des niveaux globaux de musique et de dialogue qui étaient les plus différents de la source, ce qui en fait la formule de downmix qui donne le plus mauvais résultat parmi toutes les formules que j'ai testées, bien que vous puissiez la tester et trouver qu'elle vous donne un downmix parfaitement adéquat pour vos besoins, auquel cas l'utilisation de toute autre formule serait excessive pour vous.
Pour downmixer une piste DTS avec -ac 2
なくしては le transcoder (c'est-à-dire conserver son codec et son extension) :
ffmpeg -i "sourcetrack.dts" -c:a dca -ac 2 "stereotrack.dts"
Comme l'a souligné Méphisto dans sa réponse, si les dialogues et la musique vous paraissent bien équilibrés entre eux mais manquent simplement de volume, vous pouvez downmixer le flux tout en augmentant son volume :
ffmpeg -i "sourcetrack.dts" -c:a dca -ac 2 -vol 425 "stereotrack.dts"
Pour le -vol
le volume à 100% dans la source est équivalent à la valeur entière 256, et l'utilisation d'une valeur supérieure à celle-ci augmentera le volume global du flux audio. Cependant, notez que si vous le faites trop, cela peut entraîner une distorsion ou des artefacts, en particulier pendant les sections les plus fortes.
Pour convertir un flux audio en stéréo. et le transcoder au codec AC3, par exemple :
ffmpeg -i "sourcetrack.dts" -c:a ac3 -ac 2 "stereotrack.ac3"
Downmixage d'un flux audio de 5.1 canaux en stéréo avec un algorithme de mixage personnalisé
Si vous voulez un downmix de plus haute qualité, ou si vous devez absolument inclure le flux LFE dans votre sortie, vous pouvez utiliser le commutateur de filtre audio de FFmpeg ( -af
) pour downmixer l'audio en utilisant une formule de mixage personnalisée.
Downmixing avec la formule ATSC (réponse de Gregory)
Au moment de la publication de cette réponse, la réponse la plus votée à cette question est la suivante Gregory qui met la formule du Spécification ATSC (voir la section 7.8.2, Downmixage sur deux canaux ) dans un filtre audio FFmpeg. Cette spécification est elle-même directement liée à par la documentation FFmpeg sur le sujet ce qui indique qu'il est fort probable qu'il s'agisse de la même formule que celle que FFmpeg met déjà en œuvre pour son -ac 2
un interrupteur. Si c'est vrai, alors taper la formule entière dans la réponse de Gregory ne serait pas différent de l'utilisation de l'interrupteur -ac 2
et donc une perte de temps.
J'ai décidé de tester cela en ré-encodant le même fichier audio d'entrée en utilisant les deux méthodes suivantes -ac 2
y el -af
filtre de la réponse de Grégoire (les commandes exactes utilisées peuvent être vues dans les notes de bas de page de cette réponse).
J'ai ensuite comparé les tailles des fichiers de sortie résultants et j'ai constaté qu'ils étaient, octet par octet, de la même taille :
Enfin, j'ai ouvert les deux fichiers de sortie dans Audacity, et j'ai comparé leurs formes d'onde pour confirmer qu'elles étaient identiques (cliquez pour agrandir) :
Il semble donc assez concluant que la formule de l'ATSC détaillée dans la réponse de Gregory soit la formule de l'ATSC. le même que celui déjà implémenté par FFmpeg et que son utilisation est tout à fait superflue lorsqu'elle ne fait rien d'autre qu'une chose. -ac 2
ne le fait pas, et est une commande beaucoup plus lourde.
Downmixage sans suppression du canal LFE (réponse de Dave_750)
Parmi les différentes formules incluses dans les réponses, c'est la seule qui semble mélanger le canal LFE dans la sortie stéréo au lieu de l'éliminer complètement, et par conséquent, celle qui garantit que le moins de son de la source est perdu.
Le niveau de volume général est plus élevé et plus complet qu'en faisant -ac 2
mais également plus faible que le downmix Nightmode Dialogue ci-dessous. Cependant, les niveaux de musique sont beaucoup plus proches de la source que le downmix Nightmode Dialogue, et en raison de l'inclusion de la piste LFE, augmenter le volume de la sortie tout en utilisant cette formule de downmix peut créer un flux de sortie qui sonne plus fidèlement à la source 5.1 que toutes les autres formules que j'ai testées.
Si vous en avez la possibilité, je vous recommande vivement d'encoder votre/vos flux audio en utilisant à la fois cette formule de downmix et le downmix Nightmode Dialogue, et de comparer soigneusement les formes d'onde des deux pour déterminer laquelle est la meilleure.
Pour downmixer une piste 5.1 en stéréo en utilisant cette formule et augmenter son niveau de volume à 425 (où 256 correspond à 100% du niveau de volume de la source originale) :
ffmpeg -i "sourcetrack.dts" -c dca -vol 425 -af "pan=stereo|FL=0.5*FC+0.707*FL+0.707*c4+0.5*LFE|FR=0.5*FC+0.707*FR+0.707*c5+0.5*LFE" "outputstereo.dts"
Downmixing avec le dialogue Nightmode de Robert Collier (réponse de Shane Harrelson)
La formule Dialogue Nightmode, créée par Robert Collier sur le Doom9 et cité par Shane Harrelson dans sa réponse, permet d'obtenir un bien meilleur downmix que le -ac 2
Au lieu de dialogues trop silencieux, il les ramène à des niveaux beaucoup plus proches de la source.
Extrait de la description du mélange de Robert Collier :
Après avoir converti de nombreuses pistes de films DTS de 5.1 en 2.0 à l'aide d'eac3to, j'ai constaté que les mappages de canaux par défaut d'eac3to donnaient lieu à des dialogues très silencieux et à une musique et des scènes d'action trop fortes. Bien que les coefficients de downmixage des canaux eac3to aient une base scientifique, ils ne sonnent souvent pas bien dans la pratique en raison du faible volume des dialogues. Ce préréglage est destiné à ceux qui recherchent des dialogues clairs, la musique des canaux gauche et droit étant toujours audible, mais plutôt en arrière-plan.
Comme vous pouvez le constater, le centre avant (dialogues) est maintenant bien placé et reste au niveau original, tandis que la musique et les explosions restent un effet de fond et ne vous dominent pas. Ce préréglage résout le problème de devoir constamment tripoter le bouton de volume lorsque vous regardez des films DTS 5.1 convertis en 2.0 afin d'entendre les dialogues. (En particulier pour regarder des films la nuit où vous ne voulez pas réveiller les autres mais voulez quand même pouvoir entendre les dialogues).
Malheureusement, la musique de cette formule de downmix est beaucoup plus faible que dans la source 5.1 (ce qui était probablement à dessein compte tenu de l'intention de Collier de créer un mixage "nightmode") et en raison de la perte complète de la piste LFE, l'audio de sortie globale ne sonne pas aussi complet ou proche de la source que la formule de Dave_750. avec un volume amplifié .
Cependant, si pour une raison ou une autre vous voulez éviter d'augmenter le volume global du flux, alors le Nightmode Dialogue sera probablement votre meilleure option - bien qu'encore une fois, je recommande fortement d'encoder votre flux audio sur les deux et de comparer soigneusement les formes d'onde des deux.
Pour downmixer avec la formule Nightmode Dialogue dans FFmpeg :
ffmpeg -i "sourcetrack.dts" -c dca -af "pan=stereo|FL=FC+0.30*FL+0.30*c4|FR=FC+0.30*FR+0.30*c5" "stereotrack.dts"
Réponse de Tarc
Cette réponse met simplement la formule de downmixage Nightmode Dialogue de la réponse de Shane Harrelson dans une commande pour convertir le flux audio dans un conteneur MKV. Alors que la commande donnée dans cette réponse fonctionnerait bien sur un tel flux audio, l'adapter pour une piste audio autonome donnerait l'erreur :
Le filtrage et la copie de flux ne peuvent pas être utilisés ensemble.
Ceci est dû au fait que le codec audio ne peut pas être copié lors du downmixing - comme toutes les autres modifications que FFmpeg apporte à un flux de sortie, un downmixing nécessite que la piste soit ré-encodée pour que les changements soient appliqués.
Cette commande comprenait également une redondance -ac 2
que FFmpeg aurait ignoré.
Commandes de test
Pour démontrer la fiabilité des tests que j'ai effectués pour cette réponse, vous trouverez ci-dessous toutes les commandes que j'ai utilisées pour tester chaque formule de downmix.
La commande de test utilisée pour le <code>-ac 2</code> option :
ffmpeg -i "signed16bitPCM.wav" -c pcm_s16le -ac 2 "Audio 1 (-ac 2).wav"
La commande de test utilisée pour la réponse de Gregory :
ffmpeg -i "signed16bitPCM.wav" -c pcm_s16le -af "pan=stereo|FL < 1.0*FL + 0.707*FC + 0.707*c4|FR < 1.0*FR + 0.707*FC + 0.707*c5" "Audio 2 (ATSC Algorithm Downmix).wav"
La commande de test utilisée pour la réponse de Dave_750 :
ffmpeg -i "signed16bitPCM.wav" -c pcm_s16le -vol 425 -af "pan=stereo|FL=0.5*FC+0.707*FL+0.707*c4+0.5*LFE|FR=0.5*FC+0.707*FR+0.707*c5+0.5*LFE" "Audio 4 (Dave750 Downmix).wav"
La commande de test utilisée pour la réponse de Shane Harrelson :
ffmpeg -i "signed16bitPCM.wav" -c pcm_s16le -af "pan=stereo|FL=FC+0.30*FL+0.30*c4|FR=FC+0.30*FR+0.30*c5" "Audio 3 (Nightmode Dialogue Downmix).wav"