Kamus

Apa Itu Pixel Format?

Pixel format adalah cara video atau gambar menyusun data warna dari setiap piksel. Cari tahu apa arti nilai seperti yuv420p untuk file Anda.

pixel-format

Pixel format adalah tata letak setiap piksel dalam data gambar mentah dari sebuah gambar atau video. Ini memberi tahu program komponen warna apa saja yang dimiliki gambar dan berapa bit yang digunakan.

Laporan video sering menampilkan field ini sebagai pix_fmt, dengan nilai seperti yuv420p. Nilai seperti ini menunjukkan model warna, chroma subsampling, dan bit depth. Color space adalah field terpisah.

File mana yang membawanya

Program ffprobe milik FFmpeg mencantumkan pix_fmt untuk setiap stream video. Ini mencakup file MP4, MOV, MKV, dan WebM.

Gambar juga melaporkan nilai. FFmpeg memberi yuvj420p pada JPEG dengan sampling 4:2:0 dan rgb24 pada PNG RGB 8-bit.

File audio dengan cover art juga dapat melaporkan pixel format. FFmpeg memperlakukan gambar tersebut sebagai stream video.

ExifTool membaca tag bernama PixelFormat dari file Windows HD Photo (HDP dan WDP). Ini menampilkan nilai seperti 24-bit RGB dan 8-bit Gray.

Seperti apa bentuk nilainya

FFmpeg membentuk namanya dari bagian-bagian pendek. Nilai yuv420p10le memiliki 5 bagian:

  • yuv: model warna. Y adalah kecerahan, dan U serta V membawa warna. U dan V juga disebut Cb dan Cr, seperti pada YCbCr.
  • 420: sampling. Warna memiliki setengah lebar dan setengah tinggi dari data kecerahan.
  • p: planar. Setiap komponen memiliki bidang terpisah. Format packed menyimpan komponen bersama dalam satu array.
  • 10: jumlah bit untuk setiap komponen. Nilai yuv420p tidak memiliki angka di sini dan menggunakan 8 bit.
  • le: urutan byte, little-endian. Akhiran be berarti big-endian.

Nilai umum

Setiap angka di bawah ini adalah rata-rata bit per piksel dalam data gambar mentah:

  • yuv420p: 12 bit, warna pada setengah lebar dan setengah tinggi
  • yuv422p: 16 bit, warna pada setengah lebar
  • yuv444p: 24 bit, warna untuk setiap piksel
  • yuvj420p: 12 bit, tata letak yuv420p dengan rentang penuh yang digunakan JPEG
  • rgb24: 24 bit, merah, hijau, dan biru dalam bentuk packed
  • rgba: 32 bit, dengan nilai alpha tambahan untuk transparansi
  • gray: 8 bit, hanya kecerahan
  • pal8: 8 bit, setiap nilai mengarah ke satu warna palet

Dalam rentang penuh, kecerahan 8-bit berjalan dari 0 hingga 255. Dalam rentang terbatas, ini berjalan dari 16 hingga 235. FFmpeg menyarankan field rentang terpisah, bukan nama yuvj.

Dari mana nilai berasal

Program yang mengenkode stream menentukan pixel format. Di FFmpeg, Anda memilihnya dengan opsi -pix_fmt.

Namanya sendiri biasanya tidak disimpan di dalam file. Program pembaca membentuk nama dari detail yang disimpan.

Untuk H.264, FFmpeg menggunakan bit depth dan format chroma dalam header stream. Untuk PNG, FFmpeg menggunakan bit depth dan tipe warna dalam header gambar.

Mengapa ini penting bagi file Anda

Pixel format menentukan ukuran data gambar mentah. Satu frame rgb24 memiliki 24 bit per piksel, dan satu frame yuv420p memiliki 12. Codec kemudian mengompresi data ini, sehingga angka-angka ini tidak menunjukkan ukuran file akhir.

Pixel format juga menentukan seberapa banyak detail warna yang dipertahankan file. Mata manusia melihat jauh lebih banyak detail dalam kecerahan dibanding warna, sehingga 4:2:0 hanya menyebabkan sedikit kehilangan yang terlihat.

Jika Anda mengonversi 4:2:0 ke 4:4:4, program menghitung sampel yang hilang dari sampel di sekitarnya. Detail warna yang dihilangkan oleh 4:2:0 tetap hilang.

Profil H.264 adalah alasan lain untuk memeriksa nilainya. Profil Main dan High mendukung warna 8-bit dengan sampling 4:2:0.

Stream H.264 dalam yuv444p atau yuv420p10le memerlukan profil yang lebih tinggi. Aturan HLS Apple mewajibkan H.264 pada atau di bawah profil High. YouTube merekomendasikan profil High dengan 4:2:0 untuk upload.