Правильно микшировать 5.1 в стерео с помощью ffmpeg

24576
forthrin

У меня есть аудиодорожка 5.1 из фильма, в которой передний левый и правый передний содержат музыку, а центральный содержит диалог. Воспроизведение дорожки 5.1 в VLC прекрасно сочетает все вместе.

Я пытаюсь преобразовать дорожку 5.1 в стерео с использованием ffmpeg -ac 2, однако полученный стерео микс имеет гораздо более слабую громкость, чем естественное воспроизведение дорожки 5.1.

Добавление -af "pan=stereo|c0=FL|c1=FR"дает правильную громкость, но тогда нет диалога, потому что центральный канал не включен.

Таким образом, решение может заключаться в том, чтобы смешать левый / центральный / правый стерео и выбросить внутренние каналы сабвуфера? (Я думаю, здесь ...)

Итак, вопрос: как мне сделать ffmpeg downmix 5.1 для стерео так же, как это делает VLC, с такой же сильной громкостью в конечном результате?

15
Вы уверены, что VLC действительно воспроизводит дополнительные каналы? Микширование с понижением может привести к нормализации, так что сумма каждого входа на выходной канал не приводит к перегрузке, поэтому ограничение не допускается. Это может сделать это звучит тише. LordNeckbeard 9 лет назад 0
Основы: Мой файл 5.1. Мои динамики стерео. Я не знаю, что делает VLC, но он дает отличный конечный результат в моих стереодинамиках из исходных данных 5.1 (сильная громкость, включая музыку и диалоги). ffmpeg, с другой стороны, создает результат "низкий уровень громкости" при использовании `-ac 2`. Поэтому я спрашиваю, как заставить ffmpeg генерировать такой же хороший результат, как и в VLC. forthrin 9 лет назад 0

5 ответов на вопрос

17
Gregory

Я нашел ответ, предоставленный Шейном, чтобы предоставить слишком мало других каналов и слишком много центра. Фильмы с наушниками звучат неуравновешенно, со всеми диалогами и не хватает фоновой музыки / эффектов.

В соответствии со стандартами ATSC (раздел 7.8, стр. 91), следующая формула используется для понижающего микширования 5.1 в обычное стерео (в отличие от матрицы):

Lo = 1.0 * L + clev * C + slev * Ls ; Ro = 1.0 * R + clev * C + slev * Rs ; 

clev и slev должны быть 0,707, в соответствии с таблицами 5.9 и 5.10 в вышеупомянутом документе, предполагая, что уровень микширования центра / объемного звучания равен 0. Другие значения приведены в этих таблицах, что уменьшает количество микширования центра, которое я не нахожу полезно.

Имея это в виду, следующая опция ffmpeg создает хороший сбалансированный звук со слышимым диалогом. Обратите внимание, что указывать аудиоканалы не обязательно.

-af "pan=stereo|FL < 1.0*FL + 0.707*FC + 0.707*BL|FR < 1.0*FR + 0.707*FC + 0.707*BR" 

Примечание об использовании символа «меньше» из документации по фильтру панорамирования :

Если '=' в спецификации канала будет заменено на '<', то усиления для этой спецификации будут перенормированы, так что общее значение будет равно 1, что позволит избежать шума ограничения.

9
Shane Harrelson

Try this downmix:

-ac 2 -af "pan=stereo|FL=FC+0.30*FL+0.30*BL|FR=FC+0.30*FR+0.30*BR" 

as suggested in:
Dialogue nightmode downmix preset for 5.1 DTS to 2.0 AAC stereo using ffmpeg and qaac

Что означают все эти варианты? Если вы их объясните, люди смогут использовать ваш ответ для решения различных проблем, а не просто копировать. David Richerby 8 лет назад 1
@DavidRicherby -ac = Аудиоканалы (2 для стерео), -af = Аудиофильтр Cestarian 8 лет назад 2
Попробовал это для фильма 5.1, и по крайней мере выходное стерео звучало для меня вполне нормально. Ясный диалог и больше ничего, казалось, не было. Было бы замечательно, если бы кто-то со знанием VLC мог точно рассказать о том, что делается в стандартном микшировании с 5.1 по 2.0. forthrin 7 лет назад 2
@DavidRicherby: параметры внутри аудио фильтра (-af): FL = Front-left; BL = задний левый; FC = Передний центр; FR = Передняя правая; BR = Back-вправо. Поплавки являются линейными коэффициентами для уменьшения (<1) или увеличения (> 1) громкости умноженного канала. FL = FC + 0,30 * FL + 0,30 * BL устанавливает передний левый канал на передний центральный канал плюс 30% переднего левого и 30% заднего левого каналов. kronenpj 7 лет назад 1
FWIW: я считаю, что этот микс делает диалоги слишком громкими по сравнению с музыкой и окружающими звуками. Технически более правильное сочетание, приведенное в ответе Тарка, гораздо приятнее для меня. Поэтому я думаю, что вам, возможно, придется попробовать то, что лучше для вас, это зависит от ситуации. jlh 6 лет назад 1
Возможно, это было отредактировано, @jlh: но настройки фильтра идентичны в обоих ответах. Нет причин, по которым они должны звучать иначе. psouza4 5 лет назад 0
4
Tarc

Итак, объединив @Shane Harrelson's с ответом @Jordan Harris на другой вопрос - с включенным ленивым режимом - вот что нужно для преобразования input_51.mkv(5.1) в output_stereo.mkv(стерео):

ffmpeg -i input_51.mkv -c:v copy \ -ac 2 -af "pan=stereo|FL=FC+0.30*FL+0.30*BL|FR=FC+0.30*FR+0.30*BR" \ output_stereo.mkv 

-c:v copyЧасть означает, что видеопоток не трогает (я предполагаю, что v IDEO с настройкой odec в настоящее время полицейской СВОЙ). Без этого это займет гораздо больше времени. Повторение приведенного выше ответа для полного набора -ac 2означает два аудиоканала и -afуказывает аудио-фильтр.

Посмотрев немного на команду, я понял, что она устанавливает, как составляются два стереоканала; FL(передний левый канал) берутся из исходного FC(переднего центра) плюс 0.30*FL(30% от передних левого) плюс 0.30*BL(30% от левого заднего) и так далее.

Будет ли это держать центральный канал согласованным и слышимым? Freedo 6 лет назад 0
0
Mephisto

Если опция -ac 2 дает сбалансированное микширование, при котором ни музыка, ни речь не звучат слишком сильно, чем другие компоненты, вам просто нужно увеличить громкость с помощью

-vol 512 

Я использовал 512 в примере, который увеличивает звук, делая его в два раза громче. Правило гласит, что 256 соответствует 100%

Не переусердствуйте с этим значением и обязательно проверьте результаты в тех частях фильма со взрывами или громким шумом. Очень легко ввести искажение, используя слишком высокое значение.

0
Dave_750

Сейчас это старый вопрос, но он указал мне верное направление и хотел поделиться своим результатом. Слегка следуя ответу Григория:

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 

Помещение половины FC и LFE в левый и правый дает в общей сложности 1 для их эффективной громкости от обоих громкоговорителей. Использование .707 * Front / Back Left / Right понижает эти каналы до хорошего уровня, чтобы они не подавляли центр.