Les réponses à cette question sont depuis devenues un peu un bordel, avec beaucoup contenant des informations redondantes et d'autres des inexactitudes complètes. Cette réponse est une tentative de rationaliser les informations contenues dans ces réponses tout en éliminant leurs problèmes.
Plus important encore, il convient de garder à l'esprit que la réponse de Gregory, qui est actuellement la réponse la plus votée à cette question, ne diffère pas de l'utilisation du -ac 2
commutateur - plus à ce sujet ci-dessous.
Mélanger à la baisse un flux audio 5.1 canaux en stéréo avec -ac 2
FFmpeg est livré avec des fonctionnalités intégrées pour mixer une piste 5.1 en stéréo, et c'est également la solution recommandée par la documentation de FFmpeg :
Remarque: ffmpeg intègre un système par défaut de mixage descendant (et de mixage ascendant) qui devrait être préféré (l' -ac
option) au filtre panoramique, sauf si vous avez des besoins très spécifiques.
Le -ac 2
commutateur mélange les proportions des 5 premiers canaux du flux 6 canaux de la source (arrière gauche, arrière droite, avant gauche, avant droite et avant centre), dans les canaux avant gauche et avant droite du flux stéréo de sortie:
Ce faisant, l’audio provenant du canal LFE (le .1 en 5.1, réservé au subwoofer et utilisé pour les effets profonds et basse fréquence) est totalement ignoré lors de l’utilisation de cette option.
Malheureusement, mes tests ont -ac 2
abouti à des niveaux globaux de musique et de dialogue très différents de la source, ce qui en fait la formule de mixage réduit qui produit le pire résultat de toutes les formules que j'ai testées, bien que vous puissiez le tester et le constater. vous donne un mélange parfaitement adapté à vos besoins. Dans ce cas, utiliser une autre formule serait excessif pour vous.
Pour mixer une piste DTS -ac 2
sans la transcoder (pour que son codec et son extension restent identiques):
ffmpeg -i "sourcetrack.dts" -c:a dca -ac 2 "stereotrack.dts"
Comme Mephisto l'a souligné dans sa réponse, si le dialogue et la musique vous paraissent équilibrés mais manquent simplement de volume, vous pouvez sous-mélanger le flux tout en augmentant son volume:
ffmpeg -i "sourcetrack.dts" -c:a dca -ac 2 -vol 425 "stereotrack.dts"
Pour le -vol
commutateur, 100% du volume de la source équivaut à la valeur entière 256 et l'utilisation d'une valeur supérieure à cette valeur augmente le volume global du flux audio. Cependant, notez que trop vous risquez de générer de la distorsion ou des artefacts, en particulier pendant les périodes les plus fortes.
Pour mixer un flux audio en stéréo et le convertir au codec AC3, par exemple:
ffmpeg -i "sourcetrack.dts" -c:a ac3 -ac 2 "stereotrack.ac3"
Mélanger à la baisse un flux audio 5.1 canaux en stéréo avec un algorithme de mixage personnalisé
Si vous voulez un mixage réducteur de meilleure 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 réduire le mixage audio à l'aide d'une formule de mixage personnalisée.
Mélanger avec la formule ATSC (réponse de Gregory)
Au moment de publier cette réponse, la réponse la plus votée à cette question était celle de Gregory , qui place la formule tirée de la spécification ATSC (voir la section 7.8.2, Mixage réduit en deux canaux ) dans un filtre audio FFmpeg. Cette spécification est elle-même directement liée à la documentation de FFmpeg sur le sujet , indiquant qu'il est fort probable que ce soit la même formule que FFmpeg implémente déjà pour son -ac 2
commutateur. Si cela est vrai, taper toute la formule dans la réponse de Gregory ne serait pas différent de l'utilisation du -ac 2
commutateur, et donc une perte de temps.
J'ai décidé de tester cela avec certitude en réencodant la même entrée audio en utilisant à la fois -ac 2
le -af
filtre de la réponse de Gregory (les commandes exactes utilisées sont visibles dans les notes de bas de page associées à cette réponse).
J'ai ensuite comparé les tailles des fichiers de sortie résultants et trouvé qu'elles étaient, octet par octet, de la même taille:
Enfin, j'ai ouvert les deux fichiers de sortie dans Audacity et comparé leurs formes d'onde pour confirmer qu'elles étaient identiques (cliquez pour agrandir):
Il semble donc assez concluant que la formule ATSC détaillée dans la réponse de Gregory soit la même que celle déjà utilisée par FFmpeg et que son utilisation est entièrement redondante si elle ne fait rien qui -ac 2
ne le fait pas et constitue une commande beaucoup plus lourde.
Mélanger à la baisse sans rejeter le canal LFE (réponse de Dave_750)
Parmi les réponses incluses, c’est la seule formule parmi les formules de mixage réducteur qui semble mélanger le canal LFE dans la sortie stéréo au lieu de l’écarter complètement. Par conséquent, celle qui garantit le moins de son de la source est: perdu.
Le niveau de volume général est plus élevé et plus -ac 2
riche que prévu, mais reste également inférieur au mixage en dessous du mode Nightmode Dialogue. Cependant, les niveaux de musique sont beaucoup plus proches de la source que le mixage réducteur Nightmode Dialogue et, en raison de l’inclusion de la piste LFE, augmenter le volume de la sortie tout en utilisant cette formule de mixage réducteur peut créer un flux de sortie plus fidèle à la source 5.1 que tous les autres. formules que j'ai testées.
Si vous en avez la possibilité, je vous recommande fortement d'encoder votre ou vos flux audio en utilisant à la fois cette formule de downmix et le downmix de Nightmode Dialogue, et de comparer soigneusement les formes d'onde des deux pour déterminer laquelle est la meilleure.
Pour mixer 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 d'origine):
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"
Mélangez à fond avec Nightmode Dialogue de Robert Collier (réponse de Shane Harrelson)
La formule Nightmode Dialogue, créée par Robert Collier sur le forum Doom9 et fournie par Shane Harrelson dans sa réponse, aboutit à un mixage bien meilleur que le -ac 2
commutateur - au lieu de dialogues trop calmes, elle les ramène à des niveaux beaucoup plus proches de la la source.
D'après la description du mélange faite par Robert Collier:
Après avoir converti de nombreuses pistes de film DTS de 5.1 à 2.0 à l’aide de eac3to, j’ai trouvé que les mappages de canaux eac3to par défaut donnaient lieu à des dialogues très calmes et à des scènes de musique et d’action trop fortes. Bien que les coefficients de sous-mixage de chaque canal aient une base scientifique, ils ne sonnent souvent pas bien dans la pratique en raison du faible volume de dialogue. Ce préréglage est destiné à ceux qui recherchent des dialogues clairs, la musique des canaux gauche et droit étant toujours audible mais davantage en arrière-plan.
Comme vous pouvez le constater - le centre de la scène (dialogues) entre correctement maintenant et reste au niveau d'origine - tandis que la musique et les explosions restent un effet de fond et ne vous accablent pas. Ce préréglage résout le problème de devoir constamment jouer avec le bouton de volume lorsque vous regardez DTS 5.1 converti en vidéos 2.0 afin d’entendre les dialogues. (Surtout pour regarder des films la nuit où vous ne voulez pas réveiller les autres, mais voulez quand même pouvoir entendre des dialogues).
Malheureusement, la musique de cette formule de downmix est beaucoup plus basse que dans la source 5.1 (ce qui était probablement voulu par la conception compte tenu de l'intention de Collier de créer un mix "mode nuit") et, en raison de la perte complète de la piste LFE, la sortie audio globale ne sonner aussi complet ou proche de la source que la formule de Dave_750 avec volume augmenté .
Toutefois, si, pour une raison quelconque, vous souhaitez éviter d'augmenter le volume global du flux, le dialogue Nightmode sera probablement votre meilleure option. Néanmoins, je vous recommande fortement d'encoder votre flux audio aux deux et de comparer soigneusement les formes d'onde des deux. .
Pour mixer avec la formule Nightmode Dialogue dans 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 réponse de Tarc
Cette réponse place simplement la formule de mixage à la baisse Nightmode Dialogue issue de la réponse de Shane Harrelson dans une commande permettant de convertir le flux audio dans un conteneur MKV. Alors que la commande donnée dans cette réponse fonctionnerait correctement sur un tel flux audio, son adaptation à une piste audio autonome produirait l'erreur suivante:
Filtrage et copie de flux ne peuvent pas être utilisés ensemble
Cela est dû au fait que le codec audio ne peut pas être copié lors du mixage en aval - comme pour toutes les autres modifications apportées par FFmpeg à un flux de sortie, un mixage en aval nécessite que la piste soit recodée pour que les modifications soient appliquées.
Cette commande incluait également un -ac 2
commutateur redondant que FFmpeg aurait ignoré.
Commandes de test
Pour démontrer la fiabilité des tests que j'ai effectués pour cette réponse, voici toutes les commandes que j'ai utilisées pour tester chaque formule de sous-mixage.
La commande de test utilisée pour l' -ac 2
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*BL|FR < 1.0*FR + 0.707*FC + 0.707*BR" "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*BL+0.5*LFE|FR=0.5*FC+0.707*FR+0.707*BR+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*BL|FR=FC+0.30*FR+0.30*BR" "Audio 3 (Nightmode Dialogue Downmix).wav"