Begini Cara Pahami Beda MJPEG & YUY2 Biar Gak Salah Pilih Format Video

Table of Contents

Ketika kamu berurusan dengan kamera digital, webcam, atau sistem pengolahan video, mungkin kamu akan menemukan pilihan format output seperti MJPEG dan YUY2. Dua format ini sering muncul sebagai opsi, tapi apa sebenarnya perbedaan mendasar di antara keduanya? Memahami perbedaannya penting, terutama jika kamu ingin mendapatkan kualitas video terbaik, efisiensi bandwidth, atau kinerja sistem yang optimal untuk kebutuhan spesifikmu.

Perbedaan MJPEG dan YUY2
Image just for illustration

Pada dasarnya, MJPEG dan YUY2 adalah dua cara berbeda untuk mengemas data gambar bergerak (video). Salah satunya menggunakan kompresi, yang lain lebih mendekati format mentah (raw) per frame. Pilihan di antara keduanya akan sangat memengaruhi bagaimana data video diproses, ditransfer, dan disimpan. Mari kita bedah satu per satu.

Apa Itu MJPEG?

MJPEG adalah singkatan dari Motion Joint Photographic Experts Group. Sesuai namanya, MJPEG adalah adaptasi dari standar kompresi gambar JPEG yang biasa kita temui pada foto. Cara kerjanya cukup sederhana: setiap frame (bingkai) dalam video diperlakukan sebagai gambar diam tunggal.

What is MJPEG
Image just for illustration

Setiap gambar diam ini kemudian dikompresi menggunakan algoritma kompresi JPEG. Hasilnya adalah urutan gambar-gambar JPEG yang ditampilkan secara berurutan untuk menciptakan ilusi gerakan. Karena setiap frame dikompresi secara independen, proses pengkodean (encoding) dan penguraian (decoding) MJPEG relatif mudah bagi hardware atau software.

Kompresi JPEG sendiri adalah kompresi lossy, artinya ada sedikit data yang hilang selama proses kompresi untuk mencapai ukuran file yang lebih kecil. Tingkat kompresi bisa diatur; kompresi yang lebih tinggi menghasilkan ukuran file lebih kecil tetapi potensi kehilangan detail dan munculnya artefak lebih besar. Karena setiap frame berdiri sendiri, editing non-linear seperti memotong atau menggabungkan bagian video menjadi lebih mudah tanpa perlu menguraikan (decode) frame sebelumnya atau sesudahnya.

Apa Itu YUY2?

YUY2 adalah salah satu format piksel dalam keluarga YUV (atau YCbCr). Berbeda dengan MJPEG yang merupakan format video terkompresi, YUY2 lebih tepat disebut sebagai format piksel mentah atau tidak terkompresi per frame. Data YUY2 menyimpan informasi warna menggunakan model YUV, bukan RGB seperti yang umum kita lihat.

What is YUY2
Image just for illustration

Model YUV memisahkan informasi kecerahan (Luminance - Y) dari informasi warna (Chrominance - U dan V, atau Cb dan Cr). Mata manusia lebih sensitif terhadap perubahan kecerahan daripada perubahan warna. Format YUY2 memanfaatkan ini dengan menggunakan teknik yang disebut chroma subsampling. Secara spesifik, YUY2 menggunakan subsampling 4:2:2.

Ini berarti untuk setiap dua piksel horizontal, ada data kecerahan (Y) yang lengkap, tetapi data warna (U dan V) dibagi di antara keduanya. Jadi, untuk sebaris piksel, datanya akan seperti ini: Y0 U0 Y1 V0 Y2 U2 Y3 V2, dan seterusnya. Data warna “diambil sampelnya” (subsampled) secara horizontal. Ini mengurangi jumlah data warna yang perlu disimpan tanpa penurunan kualitas yang terlalu terlihat oleh mata, tetapi tetap menyimpan data Y secara penuh. Format ini pada dasarnya tidak terkompresi per frame, hanya diatur ulang dan dikurangi sebagian data warna (bukan kompresi dalam arti mengurangi redundansi seperti JPEG).

Perbandingan Detil: MJPEG vs YUY2

Sekarang mari kita bandingkan kedua format ini secara langsung berdasarkan beberapa aspek kunci. Perbedaan paling mendasar terletak pada metode “pengemasan” data video.

Metode Pengemasan Data

  • MJPEG: Mengompresi setiap frame video sebagai gambar JPEG terpisah. Ini adalah format video yang terkompresi frame-by-frame.
  • YUY2: Menyimpan data piksel mentah (raw) dalam format YUV 4:2:2 per frame. Ini adalah format data video yang tidak terkompresi per frame, meskipun menggunakan subsampling untuk mengurangi ukuran data warna.

Kualitas Gambar

  • MJPEG: Kualitas gambar per frame bergantung pada tingkat kompresi JPEG yang digunakan. Kompresi tinggi bisa menimbulkan artefak blok (blocking artifacts) atau detail yang hilang, terutama pada area dengan banyak detail halus atau gerakan cepat. Namun, pada tingkat kompresi rendah, kualitasnya bisa sangat baik per frame.
  • YUY2: Karena pada dasarnya ini adalah data mentah dengan subsampling 4:2:2, kualitas gambar per frame sangat tinggi tanpa artefak kompresi lossy. Data warna 4:2:2 memberikan detail warna yang lebih baik daripada format subsampling yang lebih agresif seperti 4:2:0 (yang umum pada H.264/HEVC).

Perbandingan MJPEG vs YUY2
Image just for illustration

Bandwidth dan Ukuran File

  • MJPEG: Bandwidth dan ukuran file bervariasi tergantung pada resolusi, frame rate, dan tingkat kompresi. Pada resolusi dan frame rate tinggi dengan kualitas baik (kompresi rendah), bandwidth MJPEG bisa sangat besar, bahkan lebih besar daripada format mentah seperti YUY2. Namun, jika kompresi dinaikkan, bandwidth bisa berkurang drastis dengan mengorbankan kualitas.
  • YUY2: Ukuran data YUY2 per frame adalah tetap berdasarkan resolusi (Resolusi Horizontal * Resolusi Vertikal * 2 byte per piksel karena 4:2:2 subsampling menyimpan rata-rata 2 byte per piksel). Bandwidth total adalah ukuran per frame dikalikan frame rate. Ukuran ini biasanya lebih besar daripada format video terkompresi modern seperti H.264 atau HEVC, tetapi seringkali lebih kecil daripada format RGB mentah (raw RGB) 24-bit (3 byte per piksel) atau 32-bit.

Beban Pemrosesan (Processing Load)

  • MJPEG: Pengkodean (encoding) di sisi sumber (kamera) relatif sederhana karena hanya perlu melakukan kompresi JPEG per frame. Namun, penguraian (decoding) di sisi penerima (komputer) memerlukan daya prosesor atau hardware khusus untuk menguraikan setiap gambar JPEG. Ini bisa menjadi beban pada CPU komputer jika resolusi dan frame rate tinggi.
  • YUY2: Pengemasan data YUY2 di sisi sumber (kamera) juga relatif sederhana; hanya perlu mengubah data sensor menjadi format YUV 4:2:2. Tidak ada kompresi yang rumit. Di sisi penerima, data YUY2 siap digunakan atau diolah lebih lanjut (misalnya, diubah ke RGB untuk ditampilkan, atau dikompresi menjadi H.264). Beban pemrosesan awal di penerima lebih ringan daripada decoding MJPEG, tetapi jika data ini kemudian ingin disimpan atau dikirim lewat jaringan yang terbatas, perlu dilakukan kompresi video (misalnya H.264), yang akan membutuhkan beban pemrosesan yang signifikan.

Latensi

  • MJPEG: Karena setiap frame berdiri sendiri, proses pengkodean dan penguraiannya cenderung cepat per frame. Ini bisa menghasilkan latensi (jeda waktu antara kejadian dan tampilannya) yang rendah, menjadikannya pilihan yang baik untuk aplikasi yang sensitif terhadap waktu tunda seperti video konferensi atau streaming langsung sederhana.
  • YUY2: Juga cenderung memiliki latensi rendah karena tidak ada kompresi antar-frame yang rumit. Data YUY2 pada dasarnya adalah data mentah yang bisa segera diproses setelah diterima. Namun, jika data ini perlu dikompresi lagi (misalnya ke H.264) sebelum dikirim atau ditampilkan, proses kompresi tambahan tersebut akan menambah latensi.

Kapan Memilih Masing-masing?

Memilih antara MJPEG dan YUY2 sangat bergantung pada skenario penggunaannya.

Pilih MJPEG Jika:

  • Kamu membutuhkan kompatibilitas yang luas. Banyak webcam dan perangkat penangkap video lama maupun baru mendukung MJPEG karena kesederhanaannya.
  • Sisi sumber (kamera/perangkat) memiliki keterbatasan daya pemrosesan untuk kompresi video yang lebih canggih (seperti H.264), tetapi mampu melakukan kompresi JPEG sederhana per frame.
  • Kamu memprioritaskan latensi rendah dan kemudahan pemrosesan per frame di sisi penerima untuk aplikasi tertentu.
  • Kamu memiliki bandwidth yang memadai atau tidak merekam/mengirim pada resolusi dan frame rate sangat tinggi secara bersamaan. MJPEG sering jadi cara perangkat sederhana menawarkan resolusi tinggi atau frame rate tinggi (tapi jarang keduanya sekaligus pada spesifikasi maksimal) karena kompresi JPEG-nya.
  • Kamu membutuhkan kemudahan editing non-linear tanpa perlu decoding frame sebelumnya/sesudahnya.

Pilih YUY2 Jika:

  • Kamu membutuhkan kualitas gambar terbaik per frame tanpa artefak kompresi lossy sebelum data diolah lebih lanjut.
  • Kamu berencana untuk mengolah data video secara real-time (misalnya, analisis gambar, pengenalan objek) di sisi penerima, di mana mendapatkan data piksel mentah lebih efisien.
  • Data YUY2 akan dikirimkan ke sistem lain yang memiliki daya pemrosesan kuat untuk melakukan kompresi video yang lebih efisien (seperti H.264 atau HEVC) untuk penyimpanan atau transmisi jarak jauh.
  • Bandwidth bukan masalah besar, atau kamu menggunakan resolusi dan frame rate yang tidak terlalu tinggi sehingga data YUY2 masih bisa ditangani.
  • Perangkat sumber (kamera) tidak memiliki hardware kompresi video yang canggih, dan lebih mudah untuk mengirim data YUV mentah daripada melakukan kompresi MJPEG yang mungkin menghasilkan kualitas rendah.

Pilih MJPEG atau YUY2
Image just for illustration

Aspek Teknis Lainnya

Penting juga untuk mengetahui beberapa hal teknis tambahan. YUY2 adalah salah satu dari beberapa format YUV subsampling (4:2:2). Ada juga format YUV lain seperti YV12 atau NV12 yang menggunakan subsampling 4:2:0, yang berarti data warna hanya diambil sampelnya seperempat dari data kecerahan (baik horizontal maupun vertikal). Format 4:2:0 menghasilkan ukuran data per frame yang lebih kecil daripada 4:2:2. YUY2 memberikan keseimbangan yang baik antara ukuran data yang relatif lebih kecil dari RGB mentah penuh dan retensi detail warna yang lebih baik daripada 4:2:0.

MJPEG, di sisi lain, sebenarnya bisa menggunakan subsampling YUV yang berbeda di balik layar saat mengompresi setiap frame menjadi JPEG. Umumnya, JPEG menggunakan 4:2:0 atau 4:2:2 subsampling. Jadi, meskipun MJPEG adalah format kompresi, data yang dikompresikan di dalamnya seringkali sudah dalam format YUV dengan subsampling. Namun, “wajah” yang ditampilkan ke luar adalah aliran frame JPEG, bukan data YUV mentah langsung.

Perbedaan utama dengan format kompresi video modern seperti H.264, HEVC (H.265), atau VP9 adalah bahwa format-format ini menggunakan kompresi antar-frame. Mereka mencari kesamaan antara frame-frame berurutan dan hanya menyimpan perbedaan, serta menggunakan teknik prediksi gerakan yang kompleks. Ini membuat kompresi mereka jauh lebih efisien daripada MJPEG (yang hanya mengompresi per frame) dan menghasilkan ukuran file yang jauh lebih kecil untuk kualitas yang sama. Namun, kompresi antar-frame membutuhkan daya pemrosesan yang jauh lebih besar dan bisa meningkatkan latensi.

Technical aspects of video formats
Image just for illustration

YUY2 dan MJPEG sering muncul sebagai pilihan pada webcam atau kartu penangkap video sederhana karena relatif mudah diimplementasikan secara hardware dibandingkan codec video modern yang kompleks. Ini memungkinkan perangkat dengan sumber daya terbatas untuk menghasilkan output video. Kemudian, software di komputerlah yang akan memproses lebih lanjut (misalnya, mengompres YUY2 menjadi H.264 untuk streaming atau penyimpanan, atau mendekode MJPEG untuk ditampilkan).

Tips Praktis

Jika kamu sedang memilih kamera atau mengatur software video, perhatikan format yang ditawarkan.

  1. Cek Kemampuan Perangkat: Lihat spesifikasi kamera atau capture card. Apakah mereka mendukung MJPEG, YUY2, atau bahkan format lain seperti NV12 atau H.264 hardware encoding?
  2. Sesuaikan dengan Kebutuhan: Untuk streaming langsung dari webcam sederhana di mana latensi rendah penting dan kualitas absolut tidak terlalu krusial (atau resolusi/frame rate moderat), MJPEG mungkin cukup. Untuk penangkapan video berkualitas tinggi sebelum diolah atau dikompresi lebih lanjut, YUY2 bisa jadi pilihan yang lebih baik, asalkan sistemmu mampu menangani bandwidth-nya.
  3. Perhatikan Beban Sistem: Jika CPU komputermu sudah bekerja keras, memilih format yang membutuhkan sedikit decoding atau pemrosesan awal di software (seperti MJPEG yang sudah terkompresi, atau YUY2 yang hanya perlu diubah ke RGB) bisa membantu. Namun, jika data YUY2 perlu dikompresi ke H.264 oleh software, ini akan sangat membebani CPU. Sebaliknya, jika perangkat memiliki hardware encoder H.264, itu akan jauh lebih efisien daripada MJPEG atau YUY2 diikuti software encoding.
  4. Uji Coba: Jika memungkinkan, coba kedua format (jika perangkatmu mendukung keduanya) pada skenario penggunaan aslimu. Perhatikan kualitas video, kelancaran (frame rate stabil atau putus-putus), dan penggunaan CPU/bandwidth.

Tips memilih format video
Image just for illustration

Memahami perbedaan antara MJPEG dan YUY2 memungkinkanmu membuat keputusan yang lebih tepat saat menyiapkan sistem videomu, memastikan kamu mendapatkan kinerja dan kualitas yang sesuai dengan ekspektasimu tanpa membebani sistem secara berlebihan. Kedua format ini memiliki tempatnya masing-masing tergantung pada apa yang ingin kamu capai.

Apakah kamu punya pengalaman menggunakan MJPEG atau YUY2? Pernah mengalami masalah kinerja atau kualitas terkait format video? Bagikan pengalaman atau pertanyaanmu di kolom komentar di bawah!

Posting Komentar