此后,这个问题的答案变得一团糟,其中许多包含冗余信息,而另一些则完全不准确。此答案是为了简化这些答案中的信息,同时消除其中的问题。
最重要的是,值得牢记的是,格雷戈里的答案(目前是该问题最受好评的答案)与使用-ac 2
开关没有什么不同-下文将对此进行更多说明。
将5.1声道音频流缩混为立体声 -ac 2
FFmpeg带有将5.1音轨缩混为立体声的内置功能,这也是FFmpeg自己的文档建议的解决方案:
注意:ffmpeg集成了默认的下混音(和上混音)系统,-ac
除非您有非常特定的需求,否则该系统应优先于声像过滤器(该选项)。
所述-ac 2
开关通过混合从所述源的6通道流的第一5个信道的比例-左后,右后,前左,前右和前中心-到输出立体声流的前左和前右声道:
这样做时,使用此选项时,将完全丢弃 LFE通道(5.1中的.1,保留用于低音炮并用于深低频效果)中的音频。
不幸的是,在我的测试-ac 2
中,音乐和对话的整体水平与信号源最不同,这使它成为缩混公式,在我测试的所有公式中输出效果最差,尽管您可以对其进行测试并发现它为您提供完全合适的缩混以满足您的需求,在这种情况下,使用任何其他公式对您来说都是过大的。
要对DTS音轨进行缩混-ac 2
而不进行代码转换(即保持其编解码器和扩展名相同):
ffmpeg -i "sourcetrack.dts" -c:a dca -ac 2 "stereotrack.dts"
正如Mephisto在他的回答中指出的那样,如果对话和音乐在彼此之间听起来很平衡,但只是音量不足,则可以在降低流的同时增加音量:
ffmpeg -i "sourcetrack.dts" -c:a dca -ac 2 -vol 425 "stereotrack.dts"
对于-vol
开关,源中的100%音量等于整数值256,并且使用比此更大的值将增加音频流的整体音量。但是,请注意,做得太多可能会导致失真或伪影,尤其是在声音较大的部分。
要将音频流缩混为立体声并将其转码为AC3编解码器,例如:
ffmpeg -i "sourcetrack.dts" -c:a ac3 -ac 2 "stereotrack.ac3"
使用自定义混合算法将5.1声道音频流缩混为立体声
如果您想获得更高质量的缩混,或者绝对必须在输出中包含LFE流,则可以使用FFmpeg的音频滤波器开关(-af
)使用自定义混音公式对音频进行缩混。
与ATSC公式进行缩混(Gregory的答案)
在发布此答案时,对该问题的最高评价是Gregory的答案,该答案将来自ATSC规范的公式(请参见第7.8.2节“ 向下混入两个通道”)放入FFmpeg音频滤波器。与此主题相关的FFmpeg文档直接将此规范链接至该文档,这表明它很可能与FFmpeg为其-ac 2
开关实现的公式相同。如果是这样,那么在Gregory的答案中键入整个公式与使用-ac 2
开关没有什么不同,因此浪费时间。
我决定通过使用Gregory的答案-ac 2
和-af
过滤器对相同的输入音频进行重新编码来进行一定的测试(使用的确切命令可以在该答案的脚注中看到)。
然后,我比较了所产生的输出文件的大小,发现它们逐字节的大小相同:
最后,我在Audacity中打开了两个输出文件,并比较了它们的波形以确认它们是相同的(单击放大):
因此,看起来非常有说服力,格雷戈里答案中详细说明的ATSC公式与FFmpeg已经实现的相同,并且在不做任何不做的事情时使用它完全是多余的-ac 2
,并且是一个更加麻烦的命令。
缩混而不丢弃LFE通道(Dave_750的回答)
在答案中包含的几个中,这是唯一一个看起来似乎会将LFE声道混入输出立体声而不是将其完全丢弃的缩混公式之一,因此,确保从源头发出最少声音的缩混公式是丢失。
总体的音量水平要比更高和更饱满-ac 2
,但仍然低于下面的Nightmode Dialogue缩混。但是,音乐电平比Nightmode Dialogue向下混音更接近源,并且由于包含LFE音轨,在使用此向下混音公式的同时增加输出的音量可以创建比其他所有听起来更真实的5.1流源我测试过的公式。
如果您有能力,我强烈建议您使用此缩混公式和Nightmode Dialogue缩混对您的音频流进行编码,并仔细比较两者的波形以确定哪个更好。
要使用此公式将5.1音轨缩混为立体声并将其音量提高到425(其中256是原始信号源音量的100%):
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"
与Robert Collier的Nightmode对话进行缩混(Shane Harrelson的回答)
由Robert Collier在Doom9论坛上创建并由Shane Harrelson在其回答中提供的Nightmode Dialogue公式产生的降混效果远好于-ac 2
切换效果-而不是过于安静的对话,它使对话回到了更接近于水平的水平。资源。
从Robert Collier对混合的描述中:
使用eac3to将许多DTS电影轨道从5.1转换为2.0后,我发现默认的eac3to通道映射导致非常安静的对话以及过大的音乐和动作场景。尽管eac3to通道降混系数具有科学依据,但由于对话音量低,在实践中它们通常听起来并不好。此预设适用于那些希望与左右声道音乐进行清晰对话的声音,但仍可听到,但更多是在后台。
如您所见-前中央(对话)现在可以正常使用并保持原始水平-音乐和爆炸声仍然是背景效果,不会使您感到过分强大。此预设解决了您在观看DTS 5.1转换为2.0影片以收听对话时必须不断调大音量旋钮的问题。(特别是在不想唤醒别人但仍然希望能够听到对话的夜晚看电影的人)。
不幸的是,此缩混公式的音乐远低于5.1音源(这可能是设计时考虑到Collier打算创建“夜间模式”混音的),并且由于LFE音轨完全丢失,因此总的输出音频不会声音与Dave_750的公式一样,完全或接近音源,但音量增加了。
但是,如果出于某种原因想要避免增加流的总音量,则“夜模式对话”可能是您的最佳选择-尽管我再次强烈建议将您的音频流编码为两者并仔细比较两者的波形。
要在FFmpeg中与Nightmode Dialogue公式进行缩混,请执行以下操作:
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"
塔克的答案
该答案只是将Shane Harrelson的答案中的Nightmode Dialogue缩混公式放入将MKV容器中的音频流转换为命令的命令中。尽管此答案中给出的命令在这样的音频流上可以正常工作,但将其改编为独立的音轨会产生错误:
过滤和流复制不能一起使用
这是因为缩混时无法复制音频编解码器-就像FFmpeg对输出流所做的所有其他更改一样,缩混要求重新编码轨道以应用更改。
该命令还包括-ac 2
FFmpeg将忽略的冗余开关。
测试命令
为了证明我对此答案进行测试的可靠性,以下是我用于测试每个缩混公式的所有命令。
用于该-ac 2
选项的测试命令:
ffmpeg -i "signed16bitPCM.wav" -c pcm_s16le -ac 2 "Audio 1 (-ac 2).wav"
用于格雷戈里答案的测试命令:
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"
用于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"
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"