Hamulec ręczny wykorzystuje koder x264 do konwersji wideo. Jest strona z przeglądem wszystkich opcji x264 i ich odpowiedników FFmpeg . Są one jednak nieco przestarzałe i niektóre z tych opcji już nie działają lub mogły zostać zmienione. Powinieneś użyć profili x264 do większości opcji szczegółowych - ale my tam dotrzemy.
Wiele podstawowych opcji hamulca ręcznego (np. Liczba klatek na sekundę) nie jest specyficznych dla x264 i jest rozproszonych w dokumentacji online FFmpeg .
Zanim zaczniemy, sprawdź, czy używasz najnowszej wersji FFmpeg. Ich ściągnij ma statyczny buduje dla wszystkich głównych systemów operacyjnych.
Chodźmy:
--input "d:\input.mpg" --output "d:\output.mp4"
Składnia FFmpeg to ffmpeg -i input.mpg … d:\output.mp4
.
--rate 29.97
Określ szybkość klatek wideo za pomocą -r 29.97
. (Hamulec ręczny --cfr
ustawia tylko stałą liczbę klatek. Nie jest tu potrzebny).
--arate 44.1
Ustaw częstotliwość próbkowania audio za pomocą -ar 44100
(w Hz).
--format mp4
Nie jest to konieczne, ponieważ FFmpeg wie, że chcesz MP4.
--width 1920 --height 1080 --custom-anamorphic --display-width 1920 --keep-display-aspect --modulus 8 --crop 0:0:0:0
Nie robi to nic poza ustawieniem rozmiaru na 1920 × 1080. W FFmpeg, zrób to z -s:v 1920x1080
, lub jeśli chcesz korzystać z filtrów -filter:v "scale=1920:1080"
.
--encoder x264 --vb 5200
Ustaw koder za pomocą -c:v libx264
i szybkość transmisji na stałą za pomocą -b:v 5200K
. Pamiętaj, że nie ma nas jeszcze, jeśli chodzi o ustawienia jakości.
--aencoder faac --ab 128 --mixdown stereo
Podobnie jak powyżej, z -c:a libfaac -b:a 128K -ac 2
. Zauważ, że FAAC nie jest już obsługiwany w FFmpeg; zamiast tego użyj wbudowanego kodera FFmpeg z -c:a aac -b:a 128K
.
-x bitrate=5200:vbv-bufsize=5200:vbv-maxrate=5200
To ustawia tryb kodowania na VBV, który jest ukierunkowany na scenariusz przesyłania strumieniowego zamiast po prostu stałej przepływności lub stałej jakości. Stała jakość nazywa się również CRF , domyślnie dla x264 - w hamulcu ręcznym nazywa się ją „Rate Factor”. Podczas gdy CRF zwykle zapewnia najlepszą jakość kodowania, tryb VBV daje plik, który lepiej nadaje się do przesyłania strumieniowego online lub do niektórych urządzeń o ograniczonych możliwościach.
Aby ustawić VBV, użyj opcji -maxrate 5200K
i -bufsize 5200K
w ffmpeg.
Aby ustawić CRF, użyj -crf 23
w ffmpeg.
level=42
Zastosowanie -level 42
. To jest poziom H.264 .
bframes=2:min-keyint=60:keyint=60:ref=4
Ustaw liczbę ramek B za pomocą -bf 2
. Minimalny interwał klatki kluczowej jest ustawiany za pomocą -keyint_min 60
, a maksymalny interwał za pomocą -g 60
. Liczbę zdjęć referencyjnych ustawia się za pomocą -refs 4
.
me=umh:merange=64:subme=7:8x8dct:cabac=1
Są to opcje, które można ustawić dodatkowo w ffmpeg -x264-params me=umh:merange=64:subme=7:8x8dct:cabac=1
- jak każde inne ustawienie kodera x264, które nie jest bezpośrednio mapowane na opcje ffmpeg.
Oto wersja „TL; DR”, jeśli jesteś leniwy, nie przejmuj się szczegółami lub jeśli coś nie działa: Użyj -preset:v medium
(lub pomiń, ponieważ domyślne ustawienie jest średnie). Ustawienia wstępne x264 wybierają zestaw opcji, które wymieniają prędkość kodowania w celu zwiększenia wydajności kompresji. Oni dogodnie nazwie z ultrafast
, superfast
, veryfast
, faster
, fast
, medium
do slow
, slower
i veryslow
. Wybierz, z czym czujesz się komfortowo.
Podsumowując, długa wersja:
ffmpeg -i input.mpg -c:v libx264 -r 29.97 -s:v 1920x1080 -b:v 5200K -maxrate 5200K -bufsize 5200K -level 42 -bf 2 -keyint_min 60 -g 60 -refs 4 -x264-params me=umh:merange=64:subme=7:8x8dct:cabac=1 -c:a aac -b:a 128K -ar 44100 d:\output.mp4
Lub krótki, którego użyłbym (z kodowaniem VBV i usuniętymi kilkoma opcjami szczegółowymi):
ffmpeg -i input.mpg -c:v libx264 -r 29.97 -s:v 1920x1080 -b:v 5200K -maxrate 5200K -bufsize 5200K -c:a aac -b:a 128K -ar 44100 d:\output.mp4
Zmieniając kodowanie na stałą jakość dla uniwersalnej konwersji, użyj tego i zmień -crf
parametr z 18 na 28, gdzie niższa oznacza lepszą jakość, a 23 jest domyślna:
ffmpeg -i input.mpg -c:v libx264 -r 29.97 -s:v 1920x1080 -crf 23 -c:a aac -b:a 128K -ar 44100 d:\output.mp4