Silakan baca dokumentasi untuk FFmpeg, dan jalankan ffmpeg -h full
untuk daftar opsi. Juga, lihat artikel yang saya tulis ini, yang menunjukkan perbedaan antara mode kontrol laju dalam penyandi seperti x264 dan x265.
Secara umum, inilah yang dimaksud dengan opsi:
-b:v
(atau -vb
, sama) menentukan laju bit rata-rata target untuk digunakan pembuat enkode:
-b
<int>
E..VA
. atur bitrate (dalam bit / s) (dari 0 hingga INT_MAX)
-minrate
menentukan toleransi minimum untuk digunakan:
-minrate
<int>
E..VA
. Tetapkan toleransi bitrate minimum (dalam bit / dtk). Paling berguna dalam menyiapkan pengkodean CBR. Tidak ada gunanya sebaliknya. (dari INT_MIN ke INT_MAX)
-maxrate
menentukan toleransi maksimum. Namun, seperti yang ditunjukkan dalam dokumentasi, ini hanya digunakan bersamaan dengan bufsize
:
-maxrate
<int>
E..VA
. Tetapkan toleransi bitrate maksimum (dalam bit / dtk). Harus bufsize
diatur. (dari INT_MIN ke INT_MAX)
-bufsize
<int>
E..VA
. setel ukuran buffer kontrol ratecontrol (dalam bit) (dari INT_MIN ke INT_MAX)
Ini hanya masuk akal untuk pengkodean bit rate variabel, di mana alih-alih menggunakan laju bit konstan atau model kualitas konstan, encoder mensimulasikan transmisi dengan buffer virtual di dekoder. Opsi -minrate
/ -maxrate
/ -bufsize
mengontrol ukuran buffer itu. Anda biasanya hanya menggunakan mode ini untuk streaming, karena teknik ini akan membatasi laju bit agar tidak melebihi nilai tertentu yang akan menyebabkan buffer decoder over-atau underflow.
Untuk meringkas, Anda memiliki beberapa opsi untuk membatasi bitrate:
Untuk mengatur proses CBR, Anda harus memeriksa apa yang ditawarkan oleh pembuat enkode. Biasanya, Anda tidak dapat mencapai bitrate konstan "sempurna", karena pembuat enkode tidak akan membuang-buang bit. Pengaturan -b:v
,, -minrate
dan -maxrate
ke level yang sama akan mencapai itu, misalnya untuk libx264:
ffmpeg -i input.mp4 -c:v libx264 -x264-params "nal-hrd=cbr" -b:v 1M -minrate 1M -maxrate 1M -bufsize 2M output.ts
Peringatan: Ini mungkin menghasilkan kualitas rendah untuk video yang sulit untuk disandikan, dan itu akan membuang-buang bit. Kecuali jika Anda benar-benar harus mencapai output laju konstan, jangan gunakan opsi ini.
Menyiapkan proses laju bit terbatas / variabel untuk streaming. Gunakan -b:v 3500K -maxrate 3500K -bufsize 1000K
, misalnya. Anda harus menyesuaikan kecepatan dan ukuran buffer ke konteksnya secara jelas. Semakin tinggi ukuran buffer, semakin tinggi variasi bitrate yang dibolehkan.
Gunakan target kualitas konstan dan batasi bitrate hanya untuk menangkap paku. Misalnya, gunakan -c:v libx264 -crf 23 -maxrate 4M -bufsize 4M
untuk menyandikan pada bitrate variabel dengan CRF target 23, tetapi batasi output hingga maksimum 4 MBit / s.