Jak przekonwertować filmy MKV na bezstratne filmy MP4, które są kompatybilne z urządzeniami iOS w systemie Windows?

10

Jestem nowy w FFmpeg (Windows) i potrzebuję pomocy.

Chcę przekonwertować moje MKV na MP4 przy jak najmniejszej utracie jakości. MKV są wykonane z MakeMKV i zawierają między innymi ścieżkę dźwiękową DTS. Są bezstratne. Powodem, dla którego chcę przekonwertować, jest to, że planuję przesyłać strumieniowo do iPadów i Apple TV. iPad nie obsługuje DTS i MKV. MKV to zarówno dyski DVD, jak i Blu-Ray. MKV zawierają wideo, ścieżki dźwiękowe i napisy.

Próbowałem tego, ale nie słyszę dźwięku z powodu ścieżki dźwiękowej DTS:

ffmpeg -i input.mkv -c:v copy -c:a copy output.mp4

Czy ktoś może mi pomóc?

Jakich kodeków powinienem używać? MP4 jest najlepszy dla Apple?

Striky
źródło
1
Czy są jakieś konkretne wersje iPada i Apple TV, na które celujesz, czy chcesz je wszystkie obsługiwać?
llogan
2
Uwaga: MP4 nie jest kodekiem. To tylko format pliku („kontener”).
slhck
Mam najnowszego iPoda Air. Mam najnowszy Apple TV. Wiem, że MP4 to kontener, a nie kodek :)
Striky
Podaj informacje o jednym z typowych danych wejściowych. Wystarczy pełne wyjście konsoli ffmpeg -i input.mkv.
llogan
Próbowałem ffmpeg -i input.mkv -c: v copy -c: a copy output.mp4 To grało, ale nie otrzymało dźwięku, ponieważ Apple nie odtwarza DTS. Próbowałem także ffmpeg -i input.mkv -strict experimental -c: v copy -c: aac -b: 192k -q: a output 6. mp4, ale film (zarówno wideo, jak i dźwięk) nie grał płynnie na moim iPad Air (zarówno przesyłany strumieniowo, jak i pobrany).
Striky

Odpowiedzi:

22

MP4 jest rzeczywiście najlepszym formatem dla urządzeń i oprogramowania Apple. DTS również nie jest obsługiwany, wiele plików wideo MP4 zawiera dwie ścieżki audio, jedną DTS i jedną AAC.

Dostępnych jest wiele koderów, wszystkie udokumentowane na wiki ffmpeg . To, który kodek jest dostępny, zależy od sposobu kompilacji ffmpeg. libfdk_aac da najlepsze wyniki, ale ponieważ kodek ten jest niewolny, nie zawsze jest dostępny.

Rzeczy, które możesz wypróbować (najpierw uporządkuję je według mojej postrzeganej jakości)

ffmpeg -i input.mkv -c:v copy -c:a libfdk_aac -b:a 128k output.mp4
ffmpeg -i input.mkv -strict experimental -c:v copy -c:a aac -b:a 192k output.mp4
ffmpeg -i input.mkv -c:v copy -c:a libfaac -b:a 192k output.mp4

Jeśli chcesz również zachować ścieżkę DTS, użyj -mapflagi.

Nie bezpośrednio do użytku dla OP, ale podprogram programu OS X czyni ten proces bardzo łatwym.

EDYCJA: Komentarze tl; dr? OP rozwiązał problem z następującą komendą

ffmpeg -i input.mkv -strict experimental -map 0:0 -map 0:1 -map 0:2 -map 0:3 -c:v copy -c:a aac -b:a 384 -c:s copy output.mp4

WSKAZÓWKA: jeśli -c:s copynapisy nie działają, spróbuj -c:s mov_text.
Wielokrotnie mnie uratował.

jornane
źródło
Nie sądzę, aby tryb VBR wewnętrznego kodera AAC działał zgodnie z przeznaczeniem. Ostatnim razem, gdy sprawdziłem, czy jest zepsuty. Lepiej skorzystaj z CBR i użyj VBR dla innych koderów ( libfdki libfaac)
slhck
Przeczytałem również, że libfdk_aac da najlepszy wynik. Pobrałem 32-bitową wersję statyczną dla systemu Windows (git-9722a6a (2014-05-24)). Jak mogę sprawdzić, czy mam kodek libfdk? Edycja: Otrzymuję nieznany koder „libfdk_aac”. Gdzie mogę go pobrać lub czy istnieje prawie tak dobry kodek audio?
Striky
Próbowałem zarówno ffmpeg -i input.mkv -c: v copy -c: a libfdk_aac -b: wyjście 128k.mp4 i ffmpeg -i input.mkv -c: v copy -c: libfaac -b: wyjście 192k .mp4 No go :(
Striky
@Striky "No go :(" Próbowałem ostatniego polecenia ze świeżym ffmpeg z Homebrew, działa dla mnie. Czy możesz podać więcej szczegółów, dlaczego to nie działa dla ciebie?
jornane
@slhck: Właśnie wypróbowałem -c:a aac -q:a 6ustawienia i porównałem wynik z -c:a libfaac -b:a 192k, moim zdaniem, kodek aac daje lepsze wyniki niż libfaac , ale ponieważ kodeki są w fazie rozwoju, to może się zmienić. libfdk_aac prawdopodobnie da jeszcze lepsze wyniki, ale nie mam go teraz dostępny.
jornane
0

Wiem, że to stare pytanie - i już mam odpowiedź - ale chciałem udostępnić niektóre polecenia, których używam z FFmpeg na macOS.

Wideo MP4 zakodowane w standardzie x264 z dźwiękiem AAC z MKV

Podstawowa konwersja MKV z MP4, ale konwersja audio do AAC przy 128k. Zwróć uwagę na odwzorowania: -map 0:0oznacza pierwszą ( 0) ścieżkę z wejścia źródłowego ( 0) i -map 0:1oznacza drugą ( 1) ścieżkę z tego samego źródła ( 0). Lubię to robić w przypadkach, gdy istnieje wiele ścieżek audio, więc mogę zrobić coś takiego jak select, -map 0:3aby uzyskać trzecią ścieżkę.

ffmpeg -i input.mkv \
       -c:v copy \
       -c:a aac -b:a 128k \
       -map 0:0 -map 0:1 \
       output.mp4 \
       ;

Wideo MP4 zakodowane w HEVC / x265 z dźwiękiem AAC z MKV

Jest to podobne do powyższego polecenia x264, ale zamiast tego używa HEVC / x265, aby uzyskać mniejszy rozmiar pliku o tej samej - jeśli nie lepszej jakości - wideo ze źródła MKV. Zwróć uwagę, że wolę skalować filmy z iOS do 720, gdy używasz HEVC / x265; jakość odtwarzania bez nadmiernego hałasu jest niezmienna na moim MacBooku, iPadzie i iPhonie. Tylko upewnij się, że Twój sprzęt i system operacyjny obsługują odtwarzanie HEVC / x265. I ostrzegam: HEVC / x265 wymaga dużej mocy procesora, więc jeśli komputer nie ma dużej mocy procesora, kodowanie 90 minut wideo może zająć około jednego dnia.

ffmpeg -i input.mkv \
       -vf scale=-1:720 \
       -c:v libx265 -crf 20 \
       -c:a aac -b:a 128k \
       -threads 4 \
       -tag:v hvc1 \
       -map 0:0 -map 0:1 \
       output.mp4 \
       ;

Oto podział każdego z podstawowych parametrów innych niż pliki wejściowe i wyjściowe.

  • -vf scale=-1:720: Przeskaluj wideo do wysokości 720 i automatycznie oblicz szerokość. Zauważ, że FFmpeg może dusić kilka MKVs powodów nie jestem w 100% jasne więc trzeba by ustawić szerokość wyraźnie coś takiego: -vf scale=1280:720. Eksperymentuj i zobacz, co Ci odpowiada.
  • -c:v libx265 -crf 20: Jest libx265to kodek wideo. Jest -crf 20to CRF (współczynnik stałej stopy) . Domyślny CRF, jeśli go nie określisz, to 28, ale - jak na razie - znajdź jakość prawie… Meh. Wolę 20, ponieważ jest to bardzo dobra równowaga między jakością a rozmiarem pliku.
  • -threads 4: Lubię określać liczbę wątków. 4 jest teraz w stanie obsłużyć mój system, ale czasami zmniejszam go do 2 lub 3. Wyższa liczba jest szybsza, jeśli masz wystarczającą liczbę procesorów, aby to obsłużyć.
  • -tag:v hvc1: Magiczne ustawienie metadanych, które ma zostać wprowadzone na urządzeniach iOS w celu prawidłowego odtwarzania filmów HEVC / x265.

I o to chodzi!

JakeGould
źródło