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.