Setelan yang Direkomendasikan
Bagian ini mencantumkan rekomendasi encoding VP9 untuk berbagai profil umum:
- Video yang sangat dioptimalkan untuk web dan seluler (VOD)
- Distribusi konten premium (VOD)
- Olahraga, Animasi, konten 10-bit (VOD)
- Enkoding langsung
- WebRTC
Pengantar
Saat mengenkode video, ada beberapa pertimbangan yang perlu diperhatikan:
- Apakah Anda membuat satu versi media, atau beberapa versi dengan kecepatan bit dan resolusi yang berbeda?
- Apakah Anda membuat live stream video, atau file video on demand?
- Jenis media apa yang Anda encoding - apakah memiliki banyak gerakan? Detail? Animasi?
- Apakah Anda melakukan encoding untuk kualitas maksimum (misalnya, konten premium) atau kecepatan (misalnya, konferensi web)?
Bagian ini dimulai dengan setelan untuk file video on-demand dasar, lalu memberikan rekomendasi untuk semua pertanyaan ini.
Setelan Dasar
Kecepatan Bit Encoding
Kecepatan bit berikut disarankan sebagai dasar untuk distribusi web dan seluler. Saran ini meminimalkan bitrate yang mencapai kualitas video yang sesuai untuk distribusi web dan seluler konsumen; anggap saja saran ini sebagai rekomendasi bitrate 'rendah' yang masih dapat mencapai kualitas yang wajar.
Target Bitrate yang Disarankan
Ukuran/Kecepatan Frame | Kecepatan Bit Rata-Rata (VOD, kbps) | Kecepatan Bit Rata-Rata (Live, kbps) |
---|---|---|
320x240p @ 24,25,30 | 150 | 250 |
640x360p @ 24,25,30 | 276 | 386 |
640x480p @ 24,25,30 | 512 (LQ), 750 (MQ) | 720 (LQ), 1024 (MQ) |
1280x720p @ 24,25,30 | 1024 | 1440 |
1280x720p @ 50,60 | 1800 | 2500 |
1920x1080p @ 24,25,30 | 1800 | 2500 |
1920x1080p @ 50,60 | 3000 | 4200 |
2560x1440p @ 24,25,30 | 6000 | 8400 |
2560x1440p @ 50,60 | 9000 | 12600 |
3840x2160p @ 24,25,30 | 12.000 | 16800 |
3840x2160p @ 50,60 | 18000 | 25200 |
Gambar 2a: Kecepatan Bit Target
Setelan Encoding VOD
Setelan untuk Sebagian Besar Jenis Konten
Untuk sebagian besar jenis konten, sebaiknya gunakan mode kualitas terbatas (CQ), dengan batas bitrate. Sebagian besar video berisi campuran adegan dengan gerakan tinggi (misalnya, urutan adegan aksi), dan adegan dengan lebih sedikit detail (misalnya, percakapan). Mode CQ memungkinkan encoder mempertahankan tingkat kualitas yang wajar selama adegan yang lebih panjang dan lebih mudah (tanpa membuang bit) sekaligus mengalokasikan lebih banyak bit untuk urutan yang sulit.
Sebaiknya izinkan rentang kecepatan bit dari 50% hingga 150% dari target, menggunakan nilai kualitas seperti yang ditunjukkan dalam diagram di bawah. Mode ini memerlukan encoding dua tahap, dan sebaiknya gunakan setelan yang lebih cepat untuk HD dan yang lebih tinggi seperti yang ditunjukkan di bawah.
Setelan Encoder untuk Encoding CQ
Tinggi Bingkai | Kualitas Target (CQ) | Mode Encoding |
---|---|---|
240 | 37 | TWO_PASS_MEDIUM |
360 | 36 | TWO_PASS_MEDIUM |
480 | 34 (kualitas rendah) atau 33 (kualitas sedang) | TWO_PASS_MEDIUM |
720 | 32 | TWO_PASS_FAST |
1080 | 31 | TWO_PASS_FAST |
1440 | 24 | TWO_PASS_FAST |
2160 | 15 | TWO_PASS_FAST |
Gambar 2b: Setelan yang direkomendasikan CQ
Terakhir, sebaiknya gunakan 240 frame video di antara keyframe (untuk konten 30 fps, ini setara dengan 8 detik). Keyframe adalah frame video yang mandiri; tidak bergantung pada frame lain untuk dirender (lihat Struktur GOP untuk penjelasan yang lebih mendetail). Untuk pemutaran web dan seluler, kami mengizinkan jarak yang cukup jauh antar-frame utama karena hal ini memungkinkan encoder memilih penempatan 'terbaik' frame utama untuk memaksimalkan kualitas.
Contoh Parameter Command Line: Video 640x360
Dari penjelasan di atas, rekomendasi untuk video 360p adalah sebagai berikut:
- Tingkat CQ 36 (lihat Gambar 2b)
- Kecepatan bit target 276 kbps (lihat Gambar 2a)
- Kecepatan bit minimum yang diizinkan adalah 138 kbps (50% dari target)
- Kecepatan bit maksimum yang diizinkan adalah 414 kbps (150% dari target)
- Jarak antar-bingkai utama maksimum 240 detik
- Profil dua-pass, "Medium"
Hal ini memberikan parameter command line berikut untuk libvpx dan FFmpeg:
libvpx
--end-usage=cq --cq-level=36 --target-bitrate=276 --minsection-pct=50 \
--maxsection-pct=150 --kf-max-dist=240 --passes=2 --good --cpu-used=2
FFmpeg
-crf 36 -b:v 276k -minrate 138k -maxrate 414k -g 240 -good -speed 2
Setelan Konten Premium
Dalam contoh di atas, kami menggunakan setelan encoding yang cukup cepat untuk membuat streaming video secara efisien. Namun, untuk beberapa konten (seperti film premium), sebaiknya luangkan lebih banyak waktu selama encoding untuk mendapatkan output berkualitas lebih tinggi.
Untuk konten premium, sebaiknya gunakan setelan yang sama seperti di atas, tetapi dengan preset yang berbeda, yang menginstruksikan encoder untuk meluangkan lebih banyak waktu dalam mengoptimalkan kualitas:
Mode Encoding Konten Premium dan Parameter Command Line
Tinggi Bingkai | Mode Encoding | libvpx | FFmpeg |
---|---|---|---|
240 | TWO_PASS_VERY_SLOW |
--good --cpu-used 0 |
-good -speed 0 |
360 | TWO_PASS_VERY_SLOW |
--good --cpu-used 0 |
-good -speed 0 |
480 | TWO_PASS_VERY_SLOW |
--good --cpu-used 0 |
-good -speed 0 |
720 | TWO_PASS_SLOW |
--good --cpu-used 1 |
-good -speed 1 |
1080 | TWO_PASS_MEDIUM |
--good --cpu-used 2 |
-good -speed 2 |
1440 | TWO_PASS_MEDIUM |
--good --cpu-used 2 |
-good -speed 2 |
2160 | TWO_PASS_MEDIUM |
--good --cpu-used 2 |
-good -speed 2 |
Gambar 2c: Mode encoding Konten Premium
Setelan Konten Olahraga dan Gerakan Tinggi
Sebaiknya gunakan encoding VBR untuk konten olahraga. Olahraga cenderung memiliki tingkat gerakan tinggi dan kompleksitas yang cukup konsisten, dan penggunaan VBR mencapai kualitas yang lebih tinggi selama periode gerakan yang lebih rendah daripada encoding QP.
Untuk command line, perbedaan utama antara mode QP dan VBR adalah Anda tidak akan menentukan tingkat CQ; jika tidak, setelan yang direkomendasikan sama.
Contoh Parameter Command Line VBR: Video 640x360
libvpx
--end-usage=vbr --target-bitrate=276 --minsection-pct=50 --maxsection-pct=150 \
--kf-max-dist=240 --passes=2 --good --cpu-used=2
FFmpeg
-b:v 276k -minrate 138k -maxrate 414k -g 240 -good -speed 2
Setelan Animasi dan Game
Setelan Konten Bising / Berkualitas Rendah
Untuk konten yang bising, sebaiknya tingkatkan jumlah dan kekuatan frame alt-ref. Frame referensi alternatif adalah frame 'tidak terlihat', yang tidak pernah ditampilkan kepada pengguna, tetapi digunakan sebagai referensi saat membuat frame akhir (Anda dapat membaca informasi selengkapnya di sini).
Parameter berikut direkomendasikan untuk menginstruksikan VP9 agar menggunakan frame alt-ref lainnya:
libvpx
--auto-alt-ref=1 --lag-in-frames-16 --arnr-maxframes=5 --arnr-strength=3
FFmpeg
Encoding 10 Bit/HDR
Untuk encoding 10-bit, Anda sebaiknya menggunakan VP9 Profile 2. Encoding pada 10-bit tidak memerlukan lebih banyak bit, sehingga parameter lainnya tetap sama:
libvpx
--profile=2
FFmpeg
-profile 2
Setelan Encoding Live
Live Streaming
Encoding live biasanya dilakukan sebagai CBR, yang membatasi kemampuan encoder untuk memaksimalkan kualitas. Oleh karena itu, kami akan menggunakan bitrate yang lebih tinggi seperti yang ditunjukkan pada Gambar 2a.
Untuk encoding live, kita juga ingin memaksimalkan threading. Hal ini dilakukan dengan:
- Mengizinkan VP9 membagi video menjadi kolom (yang lebarnya tidak boleh kurang dari 256 piksel, dan harus merupakan pangkat dua);
- Menunjukkan kepada VP9 untuk menggunakan lebih banyak daya CPU. Tabel berikut mencantumkan rekomendasi untuk setiap resolusi.
Rekomendasi Pengubinan dan Threading
Setelan Encoder untuk Encoding CQ
Ukuran Bingkai | Jumlah kolom petak | Jumlah thread |
---|---|---|
320x240 | 1 | 2 |
640x360 | 2 | 4 |
640x480 | 2 | 4 |
1280x720 | 4 | 8 |
1920x1080 | 4 | 8 |
2560x1440 | 8 | 16 |
3840x2160 | 8 | 16 |
Gambar 2d. Pengaturan ubin dan thread yang direkomendasikan untuk encoding live
Encoding live juga akan menetapkan batas waktu ke 'realtime' untuk memastikan performa, dan akan menginstruksikan frame alt-ref untuk tidak melihat ke masa depan (yang akan memperkenalkan latensi):
Dari sini, rekomendasi untuk video 360p live adalah sebagai berikut:
- CBR, target kecepatan bit 386 kbps (lihat Gambar 2a)
- 2 kolom kartu (lihat Gambar 2d)
- 4 rangkaian pesan (lihat Gambar 2d)
- Performa real-time
- Tidak ada latensi karena frame alternatif (tidak ada jeda frame)
Hal ini memberikan parameter command line berikut untuk libvpx dan FFmpeg:
libvpx
--end-usage=cbr --target-bitrate=386 --cpu-used=4 --tile-columns=2 --rt --lag-in-frames=0
FFmpeg
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -r 29.97 -b:v 386k \
-minrate 386k -maxrate 386k -c:v libvpx-vp9 -c:a libopus output.webm