Odpowiedzi na to pytanie stały się trochę bałaganu, z których wiele zawiera zbędne informacje, a inne całkowicie nieścisłości. Ta odpowiedź jest próbą usprawnienia informacji zawartych w tych odpowiedziach, jednocześnie eliminując występujące w nich problemy.
Co najważniejsze, warto pamiętać, że odpowiedź Gregory'ego, która jest obecnie najczęściej głosowaną odpowiedzią na to pytanie, nie różni się od użycia -ac 2
przełącznika - więcej na ten temat poniżej.
Downmixowanie 5.1-kanałowego strumienia audio do stereo za pomocą -ac 2
FFmpeg posiada wbudowane możliwości downmixowania ścieżki 5.1 do stereo, i jest to również rozwiązanie zalecane przez własną dokumentację FFmpeg :
Uwaga: ffmpeg integruje domyślny system miksowania w dół (i miksowania w górę), który powinien być preferowany ( -ac
opcja) nad filtrem panoramowania, chyba że masz bardzo specyficzne potrzeby.
-ac 2
Przełącznik działa poprzez mieszanie proporcje pierwszych 5 kanałów z potoku 6-kanałowego źródła firmy - z tyłu z lewej, z tyłu po prawej, przedni lewy, przedni prawy i środkowy przedni - w kanałach lewym przednim i przedni prawy strumienia wyjściowego stereo:
W tym przypadku dźwięk z kanału LFE ( .1 w 5.1, zarezerwowany dla subwoofera i używany do efektów głębokich, o niskiej częstotliwości) jest całkowicie odrzucany podczas korzystania z tej opcji.
Niestety, w moich testach -ac 2
uzyskano ogólne poziomy zarówno muzyki, jak i dialogów, które najbardziej różniły się od źródła, co czyni go formułą downmixu, która daje najgorsze wyjście spośród wszystkich testowanych formuł, chociaż można to przetestować i przekonać się, że to zapewnia idealnie odpowiedni downmix dla twoich potrzeb, w takim przypadku użycie innej formuły byłoby dla ciebie przesadą.
Aby zmiksować ścieżkę DTS -ac 2
bez transkodowania (tj. Aby zachować ten sam kodek i rozszerzenie):
ffmpeg -i "sourcetrack.dts" -c:a dca -ac 2 "stereotrack.dts"
Jak zauważył Mephisto w swojej odpowiedzi, jeśli dialog i muzyka brzmią dla ciebie dobrze zrównoważone, ale po prostu brakuje głośności, możesz zmiksować strumień, jednocześnie zwiększając jego głośność:
ffmpeg -i "sourcetrack.dts" -c:a dca -ac 2 -vol 425 "stereotrack.dts"
W przypadku -vol
przełącznika 100% głośności w źródle odpowiada wartości całkowitej 256, a użycie większej wartości spowoduje zwiększenie ogólnej głośności strumienia audio. Należy jednak pamiętać, że zbyt duże działanie może spowodować zniekształcenie lub artefakty, zwłaszcza w głośniejszych sekcjach.
Aby zmiksować strumień audio do stereo i transkodować go do kodeka AC3, na przykład:
ffmpeg -i "sourcetrack.dts" -c:a ac3 -ac 2 "stereotrack.ac3"
Downmixowanie 5.1-kanałowego strumienia audio do stereo za pomocą niestandardowego algorytmu miksowania
Jeśli chcesz uzyskać bardziej wysokiej jakości downmix lub absolutnie musisz dołączyć strumień LFE do swojego wyjścia, możesz użyć przełącznika filtra audio FFmpeg ( -af
), aby zmiksować dźwięk przy użyciu niestandardowej formuły miksowania.
Mieszanie z formułą ATSC (odpowiedź Gregory'ego)
W chwili opublikowania tej odpowiedzi najczęściej głosowaną odpowiedzią była Gregory , która umieszcza formułę ze specyfikacji ATSC (zob. Sekcja 7.8.2, Downmixowanie na dwa kanały ) w filtrze audio FFmpeg. Ta specyfikacja jest bezpośrednio powiązana z dokumentacją FFmpeg na ten temat , co wskazuje, że najprawdopodobniej będzie to ta sama formuła, którą FFmpeg już implementuje dla swojego -ac 2
przełącznika. Jeśli to prawda, wpisanie całej formuły w odpowiedzi Gregory'ego nie różni się niczym od użycia -ac 2
przełącznika, a zatem stratą czasu.
Zdecydowałem się to sprawdzić na pewno, przekodowując to samo wejście audio, używając zarówno -ac 2
i -af
filtru z odpowiedzi Gregory'ego (dokładne użyte polecenia można zobaczyć w przypisach do tej odpowiedzi).
Następnie porównałem rozmiary wynikowych plików wyjściowych i stwierdziłem, że były one bajt po bajcie tego samego rozmiaru:
Na koniec otworzyłem oba pliki wyjściowe w Audacity i porównałem ich przebiegi, aby potwierdzić, że są identyczne (kliknij, aby powiększyć):
Wydaje się zatem dość jednoznaczne, że formuła ATSC opisana w odpowiedzi Gregory'ego jest tą samą, która została już zaimplementowana przez FFmpeg , i że jej użycie jest całkowicie zbędne, gdy nic -ac 2
nie robi, i jest o wiele bardziej kłopotliwym poleceniem.
Downmixowanie bez odrzucania kanału LFE (odpowiedź Dave_750)
Spośród kilku zawartych w odpowiedziach jest to jedyna formuła downmixu, która wydaje się miksować kanał LFE z wyjściowym stereo zamiast go całkowicie odrzucać, w wyniku czego ten, który zapewnia najmniejszy dźwięk ze źródła, jest Stracony.
Ogólny poziom głośności jest wyższy i pełniejszy niż w przypadku robienia tego -ac 2
, ale nadal niższy niż poniżej downmixu Nightmode Dialogue. Jednak poziomy muzyki są znacznie bliższe źródłu niż downmix Nightmode Dialog, a dzięki włączeniu ścieżki LFE zwiększenie głośności wyjścia podczas korzystania z tej formuły downmixu może stworzyć strumień wyjściowy, który brzmi bardziej realistycznie dla źródła 5.1 niż wszystkie inne formuły, które testowałem.
Jeśli masz taką możliwość, zdecydowanie zaleciłbym kodowanie strumieni audio przy użyciu zarówno tej formuły downmixu, jak i downmixu Nightmode Dialogue oraz dokładne porównanie przebiegów tych dwóch w celu ustalenia, który z nich jest lepszy.
Aby zmiksować ścieżkę 5.1 do stereo przy użyciu tej formuły i zwiększyć jej głośność do 425 (gdzie 256 to 100% głośności pierwotnego źródła):
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"
Downmixowanie z Nightmode Dialogiem Roberta Colliera (odpowiedź Shane'a Harrelsona)
Formuła Nightmode Dialogue, stworzona przez Roberta Colliera na forum Doom9 i pozyskiwana przez Shane'a Harrelsona w jego odpowiedzi, powoduje znacznie lepszy downmix niż -ac 2
przełącznik - zamiast zbyt cichych dialogów, przywraca je do poziomów, które są znacznie bliższe źródło.
Z opisu miksu Roberta Colliera:
Po przekonwertowaniu wielu ścieżek filmowych DTS z 5.1 na 2.0 za pomocą eac3to, znalazłem domyślne odwzorowania kanałów eac3to, co skutkuje bardzo cichymi dialogami i zbyt głośną muzyką i scenami akcji. Chociaż współczynniki downmixu kanału eac3to mają podstawy naukowe, często nie brzmią dobrze w praktyce z powodu niskiej głośności dialogu. To ustawienie wstępne jest przeznaczone dla osób poszukujących wyraźnych dialogów z muzyką lewego i prawego kanału, która nadal jest słyszalna, ale bardziej w tle.
Jak widać - środkowy przód (dialogi) wchodzą teraz prawidłowo i pozostają na oryginalnym poziomie - podczas gdy muzyka i eksplozje pozostają efektem tła i nie przytłaczają cię. To ustawienie wstępne rozwiązuje problem ciągłego majstrowania przy pokrętle głośności podczas oglądania DTS 5.1 przekonwertowanego na filmy 2.0, aby usłyszeć dialogi. (Szczególnie do oglądania filmów w nocy, gdy nie chcesz budzić innych, ale nadal chcesz słyszeć dialogi).
Niestety, muzyka tej formuły downmixu jest znacznie niższa niż w źródle 5.1 (co prawdopodobnie było projektowane biorąc pod uwagę zamiar Colliera stworzenia miksu „nightmode”), a ze względu na całkowitą utratę ścieżki LFE ogólny dźwięk wyjściowy nie dźwięk tak pełny lub bliski źródłu, jak formuła Dave_750 ze zwiększoną głośnością .
Jeśli jednak z jakiegoś powodu chcesz uniknąć zwiększenia ogólnej głośności strumienia, prawdopodobnie najlepszym rozwiązaniem byłaby opcja Tryb nocny - jednak ponownie zdecydowanie zaleciłbym zakodowanie strumienia audio do obu i ostrożne porównanie ich przebiegów .
Aby zmiksować z formułą Nightmode Dialogue w 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"
Odpowiedź Tarca
Ta odpowiedź po prostu umieszcza formułę downmixu Nightmode Dialogue z odpowiedzi Shane'a Harrelsona w poleceniu konwersji strumienia audio w kontenerze MKV. Chociaż polecenie podane w tej odpowiedzi działałoby dobrze na takim strumieniu audio, dostosowanie go do autonomicznej ścieżki dźwiękowej dałoby błąd:
Filtrowania i streamcopy nie można używać razem
Wynika to z faktu, że kodera audio nie można skopiować podczas miksowania w dół - podobnie jak wszystkie inne zmiany wprowadzane przez FFmpeg do strumienia wyjściowego, proces miksowania wymaga ponownego kodowania ścieżki w celu zastosowania zmian.
To polecenie zawierało również redundantny -ac 2
przełącznik, który FFmpeg zignorowałby.
Testuj polecenia
Aby zademonstrować wiarygodność testów, które przeprowadziłem dla tej odpowiedzi, poniżej znajdują się wszystkie polecenia, których użyłem do przetestowania każdej formuły downmiksu.
Polecenie testowe użyte dla -ac 2
opcji:
ffmpeg -i "signed16bitPCM.wav" -c pcm_s16le -ac 2 "Audio 1 (-ac 2).wav"
Polecenie testowe użyte do odpowiedzi Gregory'ego:
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"
Polecenie testowe użyte do odpowiedzi 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"
Polecenie testowe użyte w odpowiedzi Shane'a Harrelsona:
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"