Будь ласка , прочитайте документацію для FFmpeg, і запустити ffmpeg -h full
в списку опцій. Також подивіться цю статтю, яку я написав, яка показує відмінності між режимами контролю швидкості в кодерах, таких як x264 та x265.
Як правило, ось що означають варіанти:
-b:v
(або -vb
те саме) визначає цільову середню швидкість передачі бітів для використання кодера:
-b
<int>
E..VA
. встановити бітрейт (у бітах / с) (від 0 до INT_MAX)
-minrate
визначає мінімальний допуск, який слід використовувати:
-minrate
<int>
E..VA
. Встановити мінімальний допуск бітрейта (у бітах / с). Найбільш корисно для налаштування коду CBR. Інакше мало користі. (від INT_MIN до INT_MAX)
-maxrate
вказує максимальний допуск. Однак, як вказує документація, це використовується лише у поєднанні з bufsize
:
-maxrate
<int>
E..VA
. Встановити максимальний допуск бітрейта (у бітах / с). Потрібно bufsize
встановити. (від INT_MIN до INT_MAX)
-bufsize
<int>
E..VA
. встановити розмір буфера управління контролем швидкості (у бітах) (від INT_MIN до INT_MAX)
Це має сенс лише для кодування змінної бітової швидкості, де замість використання постійної бітової швидкості або моделі постійної якості кодер імітує передачу з віртуальним буфером на декодер. В -minrate
/ -maxrate
/ -bufsize
опції управління , що розмір буфера. Зазвичай цей режим використовується тільки для потокової передачі, оскільки техніка обмежує швидкість передачі бітів, щоб не перевищувати певне значення, яке може спричинити переповнення або перелив буфера декодера.
Підводячи підсумок, у вас є кілька варіантів обмеження бітрейта:
Щоб налаштувати процес CBR, ви повинні перевірити, що пропонує енкодер. Зазвичай ви не можете досягти "ідеального" постійного бітрейта, оскільки кодер не витрачає біти. Якщо встановити -b:v
, -minrate
і -maxrate
на тих самих рівнях, ви досягнете цього, наприклад, для libx264:
ffmpeg -i input.mp4 -c:v libx264 -x264-params "nal-hrd=cbr" -b:v 1M -minrate 1M -maxrate 1M -bufsize 2M output.ts
Попередження: Це може призвести до низької якості для відео, які важко кодувати, і це витратить біти. Якщо вам абсолютно не потрібно досягти постійної швидкості виходу, не використовуйте цю опцію.
Налаштування обмеженого / змінної швидкості передачі бітів для потокового передавання. Використовуйте -b:v 3500K -maxrate 3500K -bufsize 1000K
, наприклад. Вам доведеться, очевидно, скорегувати швидкість і розміри буфера під контекст. Чим більший розмір буфера, тим вище допустима зміна бітрейта.
Використовуйте постійну ціль якості та обмежте бітрейт лише для лову шипів. Наприклад, використовуйте -c:v libx264 -crf 23 -maxrate 4M -bufsize 4M
для кодування за змінною бітрейтом з цільовим CRF 23, але обмежте висновок максимум до 4 Мбіт / с.