รูปแบบพิกเซลคือการจัดวางของแต่ละพิกเซลในข้อมูลภาพดิบของรูปภาพหรือวิดีโอ ใช้บอกโปรแกรมว่าภาพมีองค์ประกอบสีใดบ้างและแต่ละส่วนใช้กี่บิต
รายงานวิดีโอมักแสดงฟิลด์นี้เป็น pix_fmt โดยมีค่าเช่น yuv420p ค่าแบบนี้บอกแบบจำลองสี chroma subsampling และ ความลึกบิต ส่วน สีสเปซ จะเป็นฟิลด์แยกต่างหาก
ไฟล์ใดที่มีรายการนี้อยู่
โปรแกรม ffprobe ของ FFmpeg แสดง pix_fmt สำหรับแต่ละสตรีมวิดีโอ ครอบคลุมไฟล์ MP4, MOV, MKV และ WebM
รูปภาพก็มีการรายงานค่าด้วยเช่นกัน FFmpeg ให้ค่า yuvj420p กับไฟล์ JPEG ที่ใช้การสุ่มตัวอย่าง 4:2:0 และให้ค่า rgb24 กับไฟล์ PNG แบบ RGB 8 บิต
ไฟล์เสียงที่มีภาพหน้าปกก็สามารถรายงานรูปแบบพิกเซลได้เช่นกัน FFmpeg จะมองภาพนั้นเป็นสตรีมวิดีโอ
ExifTool อ่านแท็กชื่อ PixelFormat จากไฟล์ Windows HD Photo (HDP และ WDP) โดยแสดงค่าเช่น 24-bit RGB และ 8-bit Gray
ลักษณะของค่าเป็นอย่างไร
FFmpeg สร้างชื่อค่าจากส่วนสั้น ๆ ค่า yuv420p10le มีทั้งหมด 5 ส่วน:
yuv: แบบจำลองสี Y คือความสว่าง ส่วน U และ V ใช้เก็บสี U และ V เรียกอีกอย่างว่า Cb และ Cr เช่นใน YCbCr420: การสุ่มตัวอย่าง สีมีความละเอียดกว้างและสูงเป็นครึ่งหนึ่งของข้อมูลความสว่างp: แบบ planar แต่ละองค์ประกอบอยู่บนระนาบแยกกัน รูปแบบแบบ packed จะเก็บองค์ประกอบทั้งหมดไว้รวมกันในอาร์เรย์เดียว10: จำนวนบิตต่อองค์ประกอบ ค่าyuv420pจะไม่มีตัวเลขตรงนี้และใช้ 8 บิตle: ลำดับไบต์ แบบ little-endian ส่วนท้ายbeหมายถึงแบบ big-endian
ค่าทั่วไป
ตัวเลขด้านล่างคือค่าเฉลี่ยจำนวนบิตต่อพิกเซลในข้อมูลภาพดิบ:
yuv420p: 12 บิต สีมีความละเอียดกว้างและสูงเป็นครึ่งหนึ่งyuv422p: 16 บิต สีมีความละเอียดกว้างเป็นครึ่งหนึ่งyuv444p: 24 บิต มีข้อมูลสีทุกพิกเซลyuvj420p: 12 บิต ใช้เลย์เอาต์แบบyuv420pแต่ใช้ช่วงค่าสีเต็มที่เหมือน JPEGrgb24: 24 บิต บรรจุสีแดง เขียว และน้ำเงินไว้ด้วยกันrgba: 32 บิต เพิ่มค่าอัลฟาสำหรับความโปร่งใสgray: 8 บิต มีเฉพาะความสว่างpal8: 8 บิต แต่ละค่าอ้างอิงไปยังสีในพาเลต
เมื่อใช้ช่วงค่าสีเต็ม ความสว่าง 8 บิตจะมีค่า 0 ถึง 255 หากเป็นช่วงจำกัดจะมีค่า 16 ถึง 235 FFmpeg แนะนำให้ใช้ฟิลด์ช่วงค่าสีแยกต่างหากแทนชื่อแบบ yuvj
แหล่งที่มาของค่า
โปรแกรมที่เข้ารหัสสตรีมเป็นตัวกำหนดรูปแบบพิกเซล ใน FFmpeg คุณเลือกรูปแบบพิกเซลได้ด้วยออปชัน -pix_fmt
ตามปกติชื่อรูปแบบจะไม่ได้ถูกเก็บไว้ในไฟล์ โปรแกรมที่อ่านไฟล์จะสร้างชื่อนี้จากรายละเอียดที่เก็บอยู่
สำหรับ H.264 FFmpeg ใช้ความลึกบิตและรูปแบบโครมาในส่วนหัวของสตรีม สำหรับ PNG FFmpeg ใช้ความลึกบิตและชนิดสีจากส่วนหัวของรูปภาพ
เหตุใดจึงสำคัญต่อไฟล์ของคุณ
รูปแบบพิกเซลเป็นตัวกำหนดขนาดของข้อมูลภาพดิบ เฟรมแบบ rgb24 มี 24 บิตต่อพิกเซล และเฟรมแบบ yuv420p มี 12 บิต จากนั้นโค้เดกจะบีบอัดข้อมูลนี้ต่อไป ดังนั้นตัวเลขนี้จึงไม่ได้บอกขนาดไฟล์สุดท้ายโดยตรง
รูปแบบพิกเซลยังเป็นตัวกำหนดว่ามีการเก็บรายละเอียดสีไว้มากแค่ไหน สายตามนุษย์มองเห็นรายละเอียดด้านความสว่างได้มากกว่าสีมาก จึงแทบไม่เห็นความสูญเสียเมื่อใช้ 4:2:0
หากคุณแปลงจาก 4:2:0 เป็น 4:4:4 โปรแกรมจะคำนวณค่าที่ขาดหายไปจากตัวอย่างที่อยู่ใกล้กัน แต่รายละเอียดสีที่หายไปจาก 4:2:0 จะไม่กลับคืนมา
โปรไฟล์ H.264 เป็นอีกเหตุผลหนึ่งที่ควรตรวจสอบค่านี้ โปรไฟล์ Main และ High รองรับสี 8 บิตพร้อมการสุ่มตัวอย่างแบบ 4:2:0
สตรีม H.264 ที่ใช้ yuv444p หรือ yuv420p10le ต้องใช้โปรไฟล์ที่สูงกว่า กฎของ HLS จาก Apple กำหนดให้ใช้ H.264 ที่โปรไฟล์ High หรือต่ำกว่า YouTube แนะนำให้ใช้โปรไฟล์ High ร่วมกับ 4:2:0 สำหรับไฟล์อัปโหลด