FFmpeg nie zawiera już ustawień i profili opartych na plikach tekstowych dla libx264, tzn. Tego, co użyłeś z tą -vpre
opcją. Zostały one amortyzowane i usuwane na rzecz dostępu do aktualnych ustawień X264, profile (i melodie) z -preset
, -profile:v
i -tune
opcje. Stare pliki tekstowe emulowały tylko oficjalne ustawienia wstępne i profile x264, a ze względu na kilka ograniczeń nie mogły oferować pełnej funkcjonalności zapewnianej przez nowy system. Jest również o wiele łatwiejszy w utrzymaniu.
Ponadto wiele koderów ma własne oddzielne opcje; zwane także „opcjami prywatnymi”. Będziesz musiał sprawdzić opcje kodera audio i wideo dla typowych kodeków w dokumentacji online FFmpeg, lub sprawdzić wyjście ffmpeg -h full
pełnej listy obsługiwanych opcji. Na przykład x264 wyświetla listę opcji libx264 AVOptions
w wynikach pełnej pomocy.
Jeśli twój ffmpeg obsługuje, -preset
to nie należy używać żadnych wstępnych ustawień plików tekstowych, a FFmpeg nie jest już dostarczany z innymi niż niektóre niestandardowe ustawienia wstępne dla iPoda. Jest powszechnym błędnym przekonaniem, że wstępne ustawienia tekstu można po prostu skopiować z dowolnego miejsca i używać z dowolnym programem ffmpeg. To nieprawda i spowoduje uszkodzenie.
Zasadniczo ustawienia wstępne pozwoliły na wykonanie następujących czynności:
Kontrola jakości
Jakość jest kontrolowana albo przez określenie szybkości transmisji -b:v
(dla wideo) lub -b:a
(dla audio), albo poprzez podanie dowolnej innej metody kodowania obsługiwanej przez kodek.
Dla x264 istnieją różne metody kodowania, przy czym metoda Constant Rate Factor jest najbardziej zaawansowana. Powoduje zmienną przepływność, ale ogólnie dobrą jakość w jednym przejściu. Wartości CRF wynoszą od 0 do 51, ale rozsądne wartości mieszczą się w przedziale od 19 do 26, w zależności od źródła i pożądanej jakości. 23 jest domyślnie, więc możesz na przykład wybrać 18 dla „wysokiej jakości” i 28 dla „niskiej jakości”, cokolwiek to dla ciebie znaczy.
ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4
x264 ma również inne metody kodowania , ale tutaj nie wchodzi to w zakres.
Te profile definiują zestaw funkcji, których koder może użyć, aby dopasować możliwości określonego dekodera. W najnowszej wersji FFmpeg użyj następującej składni, aby określić profil, gdzie może być profil baseline
, main
lub high
:
ffmpeg -i input.mp4 -c:v libx264 -profile:v baseline output.mp4
Aby uzyskać więcej informacji i kiedy należy użyć tego profilu, zobacz: Jakie są różnice między profilami H.264?
Wybierz kodowanie x264 preset
Te ustawienia wstępne wpływają na szybkość kodowania. Korzystanie z wolniejszego ustawienia predefiniowanego zapewnia lepszą kompresję lub jakość w zależności od rozmiaru pliku, natomiast szybsze ustawienia wstępne zapewniają gorszą kompresję. Ogólnie rzecz biorąc, powinieneś po prostu użyć ustawienia wstępnego, na które możesz sobie pozwolić. Presets może być ultrafast
, superfast
, veryfast
, faster
, fast
, medium
(domyślnie), slow
a veryslow
. Oto przykład:
ffmpeg -i input.mp4 -c:v libx264 -preset slow output.mp4
Koduj bezstratne wideo
Jest to możliwe poprzez podanie CRF równej 0, więc po prostu użyj -crf 0
:
ffmpeg -i input.mp4 -c:v libx264 -crf 0 output.mp4
Na koniec pomówmy szybko o ProRes. ProRes akceptuje albo stałą bitrate -b:v
, albo możesz określić profil, który powinien być wartością z zakresu od 0 do 3 , przy czym szybkości bitów są wybierane zgodnie z profilem. Wyższy oznacza lepszy:
ffmpeg -i input.mp4 -c:v prores -profile:v 0 output.mov
Ffmbc Wiki sugeruje, że nazwy profili mogą być używane - to jednak nie w FFmpeg 1.0.
ffmpeg -i input.mp4 -c:v libx264 output.mp4
? CRF: 23 i preset: średni?Zrobiłem test, w którym transkodowałem (używając kodowania libx264
.mp4
) wysokiej jakości wideo z kamery Sony przy użyciu pełnego zakresu wstępnie ustawionych wartości (oprócz placebo) w zakresie wartości CRF (18, 21, 24 i 27 ). Chciałem wiedzieć, co dałoby mi najlepszą kombinację szybkości kodowania, jakości wyjściowej i rozmiaru pliku.Dla każdej wartości CRF podałem każdej operacji transkodowania wynik za czas kodowania (np. Dla CRF = 18, czas ultraszybkiej wartości zadanej 5,7 sekundy uzyskał wynik 1,0, czas bardzo powolny 162 sekund otrzymał 0, ze wszystkimi inne wyniki skalowane pomiędzy). Podobnie obliczyłem wyniki rozmiaru pliku wyjściowego, oczywiście dając najmniejszemu plikowi najlepszy wynik. Następnie dodałem dwa wyniki dla „połączonego” wyniku prędkości / rozmiaru.
W przypadku każdej z czterech wartości CRF „bardzo szybkie” ustawienie wstępne okazało się bezkonkurencyjnym zwycięzcą, z prawie doskonałymi wynikami 1,94 (dla CRF 18 i 21), 1,96 (CRF 24) i 1,97 (CRF 27). Uważam za bardzo ciekawe, że „bardzo szybki” za każdym razem produkował prawie najmniejszy rozmiar pliku , tracąc tylko do „bardzo wolnego” i nigdy za bardzo.
Jedną z różnic, które zauważyłem wśród różnych wstępnie ustawionych wartości, było to, że system operacyjny (Windows 7) dawałby mi różne miniatury. Szybsze ustawienia wstępne pokazywałyby miniaturę kilka sekund w filmie, przy czym miniatury dla wolniejszych ustawień wstępnych odzwierciedlałyby początkowe klatki filmu. To nie jest dla mnie ważne; dowiedziałem się, że „ustawienie predefiniowane bardzo szybkie” wydaje się łatwym wyborem.
Oto moje wyniki (jako migawka arkusza kalkulacyjnego Excel):
Oto arkusz kalkulacyjny Excel jako tekst CSV:
źródło