Encoding Dasar

Dasar-Dasar Kompresi Video

Bagian ini membahas opsi dasar untuk encoding VP9, termasuk ukuran frame, kontrol bitrate dasar, dan kualitas.

Jika baru mengenal kompresi video, sebaiknya tonton video ini untuk mempelajari lebih lanjut kebutuhan akan kompresi video, dan cara kerjanya.

Encode Sederhana

Perintah FFmpeg berikut mengonversi file input ke video VP9 dengan audio Opus. Ini adalah encoding paling sederhana yang menggunakan setelan default.

ffmpeg -i tears_of_steel_1080p.webm -c:v libvpx-vp9 -c:a libopus output.webm

Encode FFmpeg ini menggunakan parameter command line berikut:

FFmpeg
-i <filename> Menentukan nama file input
-c:v libvpx-vp9 Memberi tahu FFmpeg untuk membuat video VP9
-c:a libopus Memberi tahu FFmpeg untuk membuat audio Opus
output.webm Menentukan nama file output

FFmpeg menyimpulkan jenis file yang akan dibuat dari nama file output yang Anda gunakan. Dalam contoh ini, FFmpeg akan menghasilkan file WebM karena kita meminta output.webm.

Resolusi

Setiap video memiliki ukuran frame (yang menunjukkan lebar dan tinggi piksel). Parameter command line FFmpeg berikut dapat digunakan untuk mengontrol ukuran frame video output untuk encoding VP9:

FFmpeg
-vf scale=<width>x<height> Lebar dan tinggi bingkai

Misalnya, perintah FFmpeg berikut akan menghasilkan video WebM VP9 640x480.

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
  -c:v libvpx-vp9 -c:a libopus output.webm

Resolusi yang lebih kecil memiliki kualitas yang lebih rendah, tetapi resolusi yang lebih besar memerlukan lebih banyak bandwidth, daya pemrosesan yang lebih besar untuk mendekode, dan mungkin tidak didukung di perangkat yang lebih lama. Untuk VP9, 640x480 dianggap sebagai resolusi yang aman untuk berbagai perangkat seluler dan web.

Kecepatan bit (bit rate)

VP9 mendukung beberapa mode bitrate yang berbeda:

mode
Penguantisasi Konstan (Q) Memungkinkan Anda menentukan nilai penguantisasi tetap; bitrate akan bervariasi
Kualitas Terbatas (CQ) Memungkinkan Anda menetapkan tingkat kualitas maksimum. Kualitas dapat bervariasi dalam parameter bitrate
Kecepatan Bit Variabel (VBR) Menyeimbangkan kualitas dan kecepatan bit dari waktu ke waktu dalam batasan kecepatan bit
Kecepatan Bit Konstan (CBR) Berusaha menjaga bitrate tetap konstan sementara kualitas bervariasi

Mode CQ direkomendasikan untuk video berbasis file (bukan live streaming). Parameter command line FFmpeg berikut digunakan untuk mode CQ:

FFmpeg
-b:v <arg> Menetapkan kecepatan bit target (misalnya, 500k)
-minrate <arg>
-maxrate <arg>
Menetapkan kecepatan bit minimum dan maksimum.
-crf <arg> Menetapkan tingkat kualitas maksimum. Nilai yang valid adalah 0-63, angka yang lebih rendah menunjukkan kualitas yang lebih tinggi.

Misalnya, perintah FFmpeg berikut akan membuat file video 640x480 berkualitas sedang menggunakan mode CQ, dengan bitrate rata-rata 750 kbps dan kualitas maksimum dibatasi hingga 33.

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
  -b:v 750k -crf 33 -c:v libvpx-vp9 -c:a libopus output.webm

Kecepatan bit akan bervariasi bergantung pada kualitas yang ingin Anda capai, dan resolusi video. Serangkaian lengkap rekomendasi untuk bitrate pada berbagai resolusi dapat ditemukan di sini.

Setelan Kualitas dan Kecepatan

Mengompresi video adalah pertukaran antara kualitas output dan waktu yang diperlukan untuk membuatnya. Secara umum, Anda selalu bisa mendapatkan kualitas yang lebih tinggi dengan mengizinkan lebih banyak waktu untuk mengenkode, tetapi waktu yang diperlukan untuk mendapatkan kualitas setinggi mungkin mungkin tidak praktis.

VP9 menawarkan beberapa setelan untuk menyeimbangkan kualitas dan kecepatan:

  • Setelan kualitas menginstruksikan encoder tentang pendekatan yang diambil untuk mengompresi video. Mode yang tersedia adalah terbaik, baik, dan real-time.

  • Setelan threading memungkinkan encoder menggunakan beberapa thread CPU untuk mengenkode video. Setelan ini dapat sedikit mengurangi kualitas, tetapi dapat meningkatkan kecepatan encoding dan decoding secara signifikan.

Kedua jenis setelan ini dikontrol oleh beberapa parameter command line:

FFmpeg
-threads Menunjukkan jumlah thread yang akan digunakan selama encoding.
-quality Dapat disetel ke good, best, atau realtime
-speed Parameter ini memiliki arti yang berbeda, bergantung pada apakah kualitas disetel ke good atau realtime. Setelan kecepatan 0-4 berlaku untuk VoD di good dan best, dengan 0 sebagai kualitas tertinggi dan 4 sebagai kualitas terendah. Nilai valid Realtime adalah 5-8; angka yang lebih rendah berarti kualitas yang lebih tinggi
-tile-columns Pengubinan membagi video menjadi beberapa wilayah persegi panjang, yang memungkinkan multi-threading untuk encoding dan decoding. Jumlah petak selalu merupakan pangkat dua. 0=1 petak, 1=2, 2=4, 3=8, 4=16, 5=32.

Perintah FFmpeg berikut akan membuat file 640x480 dengan kualitas yang ditetapkan ke 'good' dan kecepatan yang ditetapkan ke 0 (kualitas tinggi):

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
  -b:v 750k -quality good -speed 0 -crf 33 -c:v libvpx-vp9 -c:a libopus \
  output.webm

Pilihan Anda untuk setelan kualitas dan kecepatan dapat bervariasi bergantung pada resolusi dan daya pemrosesan yang tersedia. Kumpulan lengkap rekomendasi dapat ditemukan di bagian berikutnya.