Perbedaan CBR, VBR, CVBR di Video Transcoding
Belum lama ini saya diberi kesempatan untuk mengeksplor mengenai video transcoding. Banyak hal yang saya pelajari selama eksplorasi yang saya lakukan.
Dalam video transcoding kita akan dihadapkan pada beberapa masalah, permasalahan yang cukup penting adalah kualitas, serta size dari hasil transcoding. Kenapa itu penting? Karena saat kita mengubah video input menjadi suatu output yang baru, kita tidak ingin video output tadi misal, menjadi jelek kualitasnya ataupun menjadi sangat besar outputnya. Salah satu hal utama yang akan kita kenal adalah bitrate.
What is bitrate? Bitrate, as the name implies, describes the rate at which bits are transferred from one location to another. In other words, it measures how much data is transmitted in a given amount of time. TechTerms
Dari penjelasan bitrate oleh TechTerms itu, dalam konteks video transcoding, secara singkat bisa kita simpulkan kalau semakin besar bitrate maka semakin banyak data bisa ditransmisikan, dan semakin banyak data maka logikanya, semakin besar file yang dihasilkan. Kalau begitu, kenapa kita tidak kecilkan saja bitrate di video yang kita ingin transcode? Karena bitrate secara langsung mempengaruhi kualitas dari video. Karena itu pemilihan bitrate yang tepat menjadi salah satu hal yang perlu diperhatikan dalam video transcoding.
Judul dari tulisan ini ada istilah-istilah CBR, VBR, CVBR, apa arti istilah-istilah tersebut?
CBR adalah Constant Bitrate, maksudnya adalah saat sebuah video ditranscode menggunakan CBR dengan bitrate misal 1500kbps, maka setiap bagian dari video itu akan memiliki bitrate yang sama yaitu 1500kbps.
VBR adalah Variable Bitrate, jika menggunakan CBR, video akan ditranscode dengan bitrate yang konstan, VBR akan menghasilkan video dengan bitrate yang bervariasi.
Kenapa ada CBR, VBR? Apa bedanya? Lalu apa CVBR? Jadi perbedaan dari CBR dan VBR adalah bitrate yang dihasilkan apakah bervariasi atau tidak? Seperti yang dijelaskan tadi bitrate sangat erat hubungannya dengan kualitas dari video. Jadi kalau kita melakukan transcode dengan CBR, misal kita memiliki video sepanjang 60 detik, dan kita set bitratenya menjadi 2000kbps misalnya, maka video yang akan dihasilkan memiliki size kurang lebih ~15 MB, kalian bisa cari rumusnya atau cek disini. Apa salahnya dengan hal itu? karena video memiliki banyak adegan/scene, bisa jadi pada suatu scene yang kompleks membutuhkan bitrate > 2000 untuk menampilkan gambar dengan kualitas yang baik, tapi karena kita set menjadi 2000, gambar yang dihasilkan bisa menjadi kotak-kotak, buram, pixellated dsb, yang intinya kualitas gambarnya lebih buruk. Sebaliknya saat scene yang simple, karena bitratenya terlalu besar, file size yang dihasilkan bisa lebih besar dari yang seharusnya.
Kalau begitu kenapa tidak pakai VBR saja? Secara umum, penggunaan VBR memungkinkan kita untuk menghasilkan video dengan kualitas yang lebih baik. Saat transcoding menggunakan VBR, pada scene yang tidak membutuhkan bitrate besar maka bitrate akan dikecilkan, sedangkan pada scene yang kompleks, bitrate akan diperbesar. Tidak ada masalah lagi kan, kalau menggunakan VBR? Ya, tapi pada kasus tertentu ada masalah.
Salah satu penggunaan video transcoding yang paling umum adalah untuk livestreaming. Mulai dari Youtube, Twitch dan sebagainya mereka membutuhkan untuk melakukan live transcoding dari input user menjadi output yang akan dikonsumsi oleh penonton. Dan mayoritas video streaming di internet, memungkinkan video dipotong-potong menjadi segmen-segmen kecil sehingga penonton bisa segera menonton livestreaming tersebut. Jika, kita hanya menggunakan VBR saja, tentu kualitas dari video akan baik-baik saja tapi dengan bertambahnya bitrate begitu pula file size. Karena tidak semua orang memiliki kualitas internet yang sama, membuat kita mungkin ingin membatasi besar maksimal dari segmen yang dihasilkan. Maka dari itu ada juga yang namanya CVBR.
CVBR adalah Constrained Variable Bitrate. Bedanya apa dengan VBR? Dari namanya kita bisa tebak kalau ada sebuah rule atau constrain, maksudnya adalah penggunaan CVBR adalah VBR yang kita batasi juga bitratenya. Video yang ditranscode dengan CVBR akan menghasilkan video yang bitratenya bisa bervariasi tapi kita bisa set atau berikan rule tertentu, misal maksimal bitratenya adalah 2500kbps. Jadi output yang dihasilkan, bisa memiliki variasi bitrate tapi pada suatu scene yang kompleks, misal jika VBR akan memperbesar bitrate sampai 4000kbps, CVBR akan memperbesar bitrate sampai sekitar 2500kbps. Apa gunanya?
Seperti kasus livestreaming tadi, kita tidak ingin segmen yang harus diunduh oleh penonton terlalu besar, karena dapat menyebabkan buffer/lag saat menonton. Maka penggunaan CVBR akan sangat membantu disini. Saat scene yang simple segmen yang dihasilkan bisa berukuran kecil, tapi saat scene yang kompleks, segmen yang dihasilkan bisa diperkirakan sizenya sehingga penonton tidak merasakan buffer/lag walaupun ada kemungkinan kualitas gambarnya tiba-tiba menjadi lebih buruk karena bitrate yang tidak cukup.
Dari eksplorasi tersebut hal ini awalnya cukup membuat saya bingung, dan akhirnya semua bacaan dan eksprimen yang saya lakukan bisa menjadi penjelasan yang saya tuangkan di artikel ini. Terima kasih semoga, artikel ini bermanfaat.