Encoding Dasar

Dasar Kompresi Video

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

Jika Anda baru mengenal kompresi video, Anda mungkin ingin menonton video ini untuk mempelajari lebih lanjut perlunya kompresi video, dan cara kerjanya.

Encode Sederhana

Perintah FFmpeg berikut mengonversi file input menjadi 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

Enkode FFmpeg ini menggunakan parameter command line berikut:

Musik 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 menampilkan file WebM karena kami 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:

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

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

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 (kecepatan bit)

VP9 mendukung beberapa mode kecepatan bit yang berbeda:

modus
Quantizer Konstan (Q) Memungkinkan Anda menentukan nilai kuantisasi tetap; kecepatan bit akan bervariasi
Kualitas Dibatasi (CQ) Memungkinkan Anda menetapkan tingkat kualitas maksimum. Kualitas dapat bervariasi dalam parameter kecepatan bit
Kecepatan Bit Variabel (VBR) Menyeimbangkan kualitas dan kecepatan bit dari waktu ke waktu dalam batasan kecepatan bit
Kecepatan Bit Konstan (CBR) Berupaya menjaga kecepatan bit tetap konstan, tetapi kualitasnya bervariasi

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

Musik FFmpeg
-b:v <arg> Menetapkan target kecepatan bit (mis. 500 ribu)
-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 berkualitas lebih tinggi.

Misalnya, perintah FFmpeg berikut akan membuat file video 640x480 berkualitas sedang menggunakan mode CQ, dengan kecepatan bit rata-rata 750 kbps dan kualitas maksimum yang 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 dicapai, dan resolusi video. Serangkaian rekomendasi untuk kecepatan bit pada berbagai resolusi dapat ditemukan di sini.

Setelan Kualitas dan Kecepatan

Mengompresi video adalah kompromi antara kualitas output dan jumlah waktu yang diperlukan untuk membuatnya. Secara umum, Anda selalu bisa mendapatkan kualitas yang lebih tinggi dengan memberikan 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 diperlukan untuk mengompresi video. Mode yang tersedia adalah yang terbaik, baik, dan secara realtime.

  • Setelan thread 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:

Musik 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 ditetapkan ke good atau realtime. Setelan kecepatan 0-4 diterapkan untuk VoD di good dan best, dengan 0 sebagai kualitas tertinggi dan 4 sebagai yang terendah. Realtime nilai yang valid adalah 5-8; angka yang lebih rendah berarti kualitas yang lebih tinggi
-tile-columns Ubin membagi video menjadi area persegi panjang, yang memungkinkan multi-threading untuk encoding dan decoding. Jumlah kotak selalu pangkat dua. 0=1 ubin, 1=2, 2=4, 3=8, 4=16, 5=32.

Perintah FFmpeg berikut akan membuat file 640x480 dengan kualitas yang disetel ke 'baik' dan kecepatan disetel 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 tergantung resolusi dan daya pemrosesan yang tersedia. Kumpulan rekomendasi lengkap dapat ditemukan di bagian berikutnya.