Handbrake використовує кодер x264 для перетворення відео. Існує сайт з оглядом усіх параметрів x264 та їх аналогів FFmpeg . Однак вони трохи застарілі, і деякі з цих варіантів більше не працюють або можуть бути перейменовані. Ви повинні використовувати профілі x264 для більшості детальних варіантів - але ми дістанемося.
Багато основних параметрів Handbrake (наприклад, частота кадрів) не характерні для x264, і вони розкидані по документації FFmpeg в Інтернеті .
Перш ніж розпочати, перевірте, чи використовуєте ви останню версію FFmpeg. На їхньому веб-сайті завантажуються статичні версії для всіх основних операційних систем.
Ходімо:
--input "d:\input.mpg" --output "d:\output.mp4"
Синтаксис FFmpeg є ffmpeg -i input.mpg … d:\output.mp4
.
--rate 29.97
Вкажіть частоту відео кадрів за допомогою -r 29.97
. (Ручний гальмо --cfr
просто встановлює постійну частоту кадрів. Тут не потрібно).
--arate 44.1
Встановіть частоту дискретизації звуку за допомогою -ar 44100
(у Гц).
--format mp4
Не потрібен, оскільки FFmpeg знає, що ви хочете MP4.
--width 1920 --height 1080 --custom-anamorphic --display-width 1920 --keep-display-aspect --modulus 8 --crop 0:0:0:0
Це не робить нічого, крім встановлення розміру 1920 × 1080. У FFmpeg, зробіть це -s:v 1920x1080
, або якщо ви хочете використовувати фільтри, -filter:v "scale=1920:1080"
.
--encoder x264 --vb 5200
Встановіть кодер з -c:v libx264
та швидкість передачі бітів на постійну -b:v 5200K
. Зауважте, що ми ще не там, що стосується налаштувань якості.
--aencoder faac --ab 128 --mixdown stereo
Аналогічно вище, с -c:a libfaac -b:a 128K -ac 2
. Зауважте, що FAAC більше не підтримується у FFmpeg; замість цього використовуйте вбудований FFmpeg-кодер -c:a aac -b:a 128K
.
-x bitrate=5200:vbv-bufsize=5200:vbv-maxrate=5200
Це встановлює режим кодування VBV, який орієнтується на сценарій потокового потоку, а не просто постійний бітрейт або постійну якість. Постійна якість також називається CRF , за замовчуванням для x264 - у Handbrake це називається "коефіцієнт швидкості". Хоча CRF зазвичай дає найкращі якості кодування, режим VBV надає вам файл, який краще підходить для потокової передачі в Інтернеті або для певних пристроїв з обмеженими можливостями.
Щоб встановити VBV, використовуйте параметри -maxrate 5200K
та -bufsize 5200K
параметри у ffmpeg.
Щоб встановити CRF, використовуйте -crf 23
ffmpeg.
level=42
Використовуйте -level 42
. Це рівень H.264 .
bframes=2:min-keyint=60:keyint=60:ref=4
Встановіть кількість B-кадрів за допомогою -bf 2
. Мінімальний інтервал ключових кадрів встановлюється з -keyint_min 60
, а максимальний інтервал - -g 60
. Кількість еталонних зображень встановлюється за допомогою -refs 4
.
me=umh:merange=64:subme=7:8x8dct:cabac=1
Це параметри, які ви можете встановити у ffmpeg додатково за допомогою -x264-params me=umh:merange=64:subme=7:8x8dct:cabac=1
- як і будь-який інший параметр кодера x264, який безпосередньо не відображається на параметри ffmpeg.
Ось версія "TL; DR", якщо ви лінуєтесь, не хвилюйтесь до деталей, або якщо щось не працює: Використовуйте -preset:v medium
(або залиште його, оскільки стандартний замовчування за замовчуванням). Пресети x264 вибирають набір параметрів, які торгують швидкість кодування для ефективності стиснення. Вони зручно названі з ultrafast
, superfast
, veryfast
, faster
, fast
, medium
до slow
, slower
і veryslow
. Вибирайте все, що вам зручніше.
Отже, підсумовуючи, довга версія:
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
Або короткий, який я б використав (із кодуванням VBV та видаленими кількома детальними параметрами):
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
Змінюючи на постійне кодування якості для цільового перетворення, використовуйте це та змініть -crf
параметр з 18 до 28, де нижчий означає кращу якість, а 23 - за замовчуванням:
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