Mam ścieżkę audio 5.1 z filmu, w którym przedni lewy i przedni prawy zawiera muzykę, a środek zawiera dialog. Odtwarzanie ścieżki 5.1 w VLC ładnie łączy wszystko.
Próbuję przekonwertować ścieżkę 5.1 na stereo przy użyciu ffmpeg -ac 2
, jednak powstały miks stereo ma znacznie słabszą głośność niż odtwarzanie ścieżki 5.1 w sposób natywny.
Dodanie -af "pan=stereo|c0=FL|c1=FR"
daje prawidłową głośność, ale wtedy nie ma dialogu, ponieważ kanał środkowy nie jest uwzględniony.
Więc rozwiązaniem może być miksowanie lewego / środkowego / prawego w stereo i wyrzucenie tylnych kanałów subwoofera? (Zgaduję tutaj ...)
Pytanie zatem brzmi: w jaki sposób mogę zmiksować ffmpeg 5.1 do stereo w ten sam sposób, w jaki robi to VLC, z takim samym silnym poziomem głośności w wyniku końcowym?
-ac 2
. Pytam więc, jak sprawić, by ffmpeg generował taki sam dobry wynik jak VLC.Odpowiedzi:
Znalazłem odpowiedź, której udzielił Shane, aby podać za mało innych kanałów i za dużo środka. Filmy ze słuchawkami brzmiały niezrównoważone, ze wszystkimi dialogami i niewystarczającą ilością podkładu muzycznego / efektów.
Zgodnie ze standardami ATSC (sekcja 7.8, strona 91) w celu downmixu 5.1 do konwencjonalnego stereo (w przeciwieństwie do matrycy) zastosowano następujący wzór:
clev i slev powinny wynosić .707, zgodnie z tabelami 5.9 i 5.10 w wyżej wymienionym dokumencie, zakładając poziom miksu środkowego / surround wynoszący 0. Inne wartości podano w tych tabelach, które zmniejszają ilość miksu środkowego, którego nie znalazłem przydatny.
Mając to na uwadze, następująca opcja ffmpeg zapewnia dobrze zrównoważony dźwięk z słyszalnym dialogiem. Pamiętaj, że określenie kanałów audio nie jest konieczne.
Uwaga na temat używania symbolu „mniej niż” z dokumentacji filtra filtra :
źródło
ac -2
przełącznikiem. Innymi słowy, jedyną różnicą między używaniem tego filtra a robieniemac -2
jest dużo więcej pisania.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 :
-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):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ść:
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:
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):
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:
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:
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:
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:Polecenie testowe użyte do odpowiedzi Gregory'ego:
Polecenie testowe użyte do odpowiedzi Dave_750:
Polecenie testowe użyte w odpowiedzi Shane'a Harrelsona:
źródło
-ac 2
dałem mi gorszy wynik, co skłoniło do oryginalnego opublikowania. Spróbuję to jeszcze raz i jeśli to możliwe, podzielę się fragmentem 5.1, który nie daje zadowalającego rezultatu z wbudowanym miksowaniem. Również bardzo miło wiedzieć, że możesz miksować w dół bez transkodowania!ac -2
opcja dała mi również najgorszy wynik ze wszystkich formuł downmixu, myślę, że jest to po prostu błąd w formule standardu ATSC.ffmpeg -i 5.1.mp4 -ac 2 2.mp4
, że działa, aleffplay -i 5.1.mp4 -ac 2
nie działa.Wypróbuj ten downmix:
zgodnie z sugestią Roberta Colliera na forum Doom9.
źródło
Tak więc, łącząc @Shane Harrelson z odpowiedzią @Jordana Harrisa na inne pytanie - z włączonym trybem leniwym - tutaj jest to, co trzeba przekonwertować
input_51.mkv
(5.1) naoutput_stereo.mkv
(stereo):Te
-c:v copy
środki part że strumień wideo nie jest dotykane (chyba że v ideo c odec ustawienia jest bycie policjantem IED). Bez tego zajmie to znacznie dłużej. Samo powtórzenie powyższej odpowiedzi dla kompletności-ac 2
oznacza dwa kanały audio i-af
określa filtr audio.Po lekkim przestudiowaniu polecenia doszedłem do wniosku, że ustawia on sposób komponowania dwóch kanałów stereo;
FL
(lewy przedni kanał) pobiera się od oryginałuFC
(centralny przedni) plus0.30*FL
(30% z przodu po lewej stronie) plus0.30*BL
(30% z tyłu z lewej) i tak dalej.źródło
To jest stare pytanie, ale wskazało mi właściwy kierunek i chciałem podzielić się moim wynikiem:
Ustawienie połowy FC i LFE na lewy i prawy daje w sumie 1 dla ich efektywnej głośności z obu głośników. Korzystanie z .707 * Przód / tył Lewo / Prawo sprowadza te kanały do dobrego poziomu, aby nie obezwładniały centrum.
źródło
Jeśli opcja -ac 2 zapewnia zrównoważony downmix, w którym ani muzyka, ani mowa nie brzmią o wiele bardziej niż inne komponenty, wystarczy zwiększyć głośność za pomocą
Użyłem 512 w tym przykładzie, co zwiększa dźwięk, czyniąc go dwa razy głośniejszym. Zasadą jest, że 256 odpowiada 100%
Nie wchodź zbyt wysoko z tą wartością i koniecznie sprawdź wyniki w tych częściach filmu z wybuchem lub głośnym hałasem. Bardzo łatwo jest wprowadzić zniekształcenie, używając zbyt wysokiej wartości.
źródło
-ac 2
Głośność kanałów w downmixie pozostaje niezmieniona dzięki kodekowi zmiennoprzecinkowemu -> pcm_f32le, aac
Głośność w downmixie (5.1 do 2.0 bez LFE) jest zmniejszona o 1 / 2,5 = -7,96 dB z kodekiem całkowitym -> pcm_s16le, libfdk_aac
Filmy mają dźwięk skierowany w jednym kierunku i brak maksymalnego ciśnienia dźwięku na wszystkich kanałach. Więc zmniejszona głośność downmixu jest zła, właściwa jest kompresja na niskim poziomie. Tak właśnie robi Dolby.
źródło
Po przeczytaniu całej strony i kilku eksperymentów wpadłem na skrypt o nazwie „down_mix”:
Dostosuj powyższe zmienne do swoich upodobań. Nie miałem problemu z niską głośnością, więc pominąłem to, ale łatwo dodałem.
źródło
Filtr ffmpeg „-ac 2” działa dobrze, dopóki twój cel jest zakodowany w pcm_s16le. Podczas kodowania do pcm_f32le w formacie wav głośność jest zwiększana o 9dB i więcej. Dlatego: W takich przypadkach nie należy używać filtra „-ac 2”.
źródło