Jaki jest problem z Handbrake?
Kiedy używasz Handbrake do konwersji z jednego formatu kontenera do drugiego (np. MKV do MP4 w twoim przypadku), Handbrake ponownie zakoduje wideo. Zobacz także odpowiednie żądanie funkcji , które umożliwiłoby przejście wideo:
Przepraszamy, dodanie przejścia wideo nie jest planowane. HandBrake jest zaprojektowany jako transkoder wideo. Nie został zaprojektowany, aby umożliwić passthrough.
Więc za każdym razem, gdy zmieniasz kontenery za pomocą Handbrake, twoje wideo będzie ponownie kodowane, co oznacza, że a) zajmuje to czas i b) może spowodować utratę jakości.
Czy muszę ponownie kodować? Czy nie mógłbym po prostu zamienić kontenera?
Ponieważ passthrough nie jest możliwe, zadaj sobie pytanie: Czy muszę ponownie kodować? *Jeśli chcesz tylko zmienić kontener z MKV na MP4, *zwykle nie musisz niczego kodować, po prostu zmieniasz “opakowanie” wokół wideo. Nie powoduje to utraty jakości, a będzie to znacznie szybszy proces.
Możesz łatwo zamienić kontenery z FFmpeg - musisz tylko powiedzieć mu, żeby skopiował strumienie wideo i audio:
ffmpeg -i input.mkv -c copy -map 0 output.mp4
Istnieją również narzędzia takie jak MP4Box , które również potrafią tworzyć kontenery MP4 - to samo istnieje dla MKV z MKVtoolnix .
Jest jednak duże zastrzeżenie: to działa tylko wtedy, gdy kodeki audio i wideo są obsługiwane w docelowym kontenerze (MP4), co ma miejsce na przykład dla H.264/H.265 i AAC, ale nie dla wielu innych. Również obsługa formatu napisów w MP4 jest inna niż w MKV, a właściwie dość ograniczona, więc ta komenda może się nie powieść.
Jeśli ta komenda nie zadziała, i jeśli twoje dane wejściowe używają niewłaściwych kodeków dla kontenera wyjściowego, prawdopodobnie będziesz musiał ponownie zakodować. W tym przypadku, kodeki zostaną dostosowane do kontenera wyjściowego.
Aby zrozumieć, dlaczego jest to konieczne, ważne jest, aby poznać różnicę między kodekami wideo a kontenerami . To pomoże ci zrozumieć, dlaczego zmiana kontenerów działa i dlaczego kontenery MP4 i MKV mają niewiele wspólnego z kodekami wideo, tak naprawdę.
Dlaczego ponowne kodowanie jest złe, tak w ogóle?
Możesz (zazwyczaj) nie zachować pełnej jakości podczas kodowania wideo, które było już zakodowane. Dzieje się tak, ponieważ oryginał został już skompresowany przez wyrzucenie informacji, a robiąc to ponownie wprowadzasz stratę generacji .
Często chcesz ponownie zakodować wideo, gdy na przykład zmieniają się jego wymiary, lub potrzebujesz określonej szybkości transmisji, aby ścisnąć strumień wideo, lub oryginalny film używa kodeka, którego nie możesz odtworzyć z jakiegokolwiek powodu.
Więc, jeśli załadujesz film MKV do Handbrake, i ponownie zakodujesz go z x264, koderem H.264, którego używa Handbrake, przechowując go w kontenerze MP4, stracisz jakość bez względu na wszystko, chyba że ustawisz bitrate lub współczynnik jakości tak wysoki, że nie zobaczysz (naprawdę) różnicy. Ale wtedy, rozmiar pliku będzie również większy.
W idealnym przypadku przekonwertowałbyś film do nieskompresowanego wideo, co nie straci na jakości, ale da Ci pliki o wielkości kilkunastu gigabajtów, nawet dla kilkuminutowego materiału wideo.
No dobrze, ale ja naprawdę muszę przekodować!
Jeśli naprawdę musisz przekodować, upewnij się, że nie ustawisz średniego bitrate, ale wybierz Constant Rate Factor , czyli coś w rodzaju “stałej jakości”. Podobnie jak “zmienna prędkość bitowa” dla MP3: Dzięki temu bity zostaną przeznaczone na te części wideo, które ich potrzebują i ogólna jakość będzie lepsza - przy tym samym rozmiarze pliku.
Rozsądne wartości CRF są od 19 do 24, gdzie niższa wartość oznacza “lepiej”. Możesz więc spróbować z wartością Rate Factor równą 19. Upewnij się też, że ustawiłeś profil “High”, który pozwala koderowi na użycie wszystkich bajerów i optymalizację jakości dla danej przepływności.