Η μορφή εικονοστοιχείων είναι η διάταξη κάθε εικονοστοιχείου στα ακατέργαστα δεδομένα εικόνας μιας εικόνας ή ενός βίντεο. Ενημερώνει ένα πρόγραμμα ποια χρωματικά συστατικά έχει η εικόνα και πόσα bit χρησιμοποιούν.
Οι αναφορές βίντεο εμφανίζουν συχνά το πεδίο ως pix_fmt, με μια τιμή όπως yuv420p. Μια τέτοια τιμή δείχνει το χρωματικό μοντέλο, το chroma subsampling και το βάθος bit. Ο χρωματικός χώρος είναι ξεχωριστό πεδίο.
Ποια αρχεία το φέρουν
Το πρόγραμμα ffprobe του FFmpeg εμφανίζει το pix_fmt για κάθε ροή βίντεο. Αυτό καλύπτει αρχεία MP4, MOV, MKV και WebM.
Οι εικόνες αναφέρουν επίσης μια τιμή. Το FFmpeg δίνει yuvj420p σε ένα JPEG με δειγματοληψία 4:2:0 και rgb24 σε ένα PNG RGB 8 bit.
Ένα αρχείο ήχου με εικόνα εξωφύλλου μπορεί επίσης να αναφέρει μορφή εικονοστοιχείων. Το 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, όπως στο YCbCr.420: η δειγματοληψία. Το χρώμα έχει το μισό πλάτος και το μισό ύψος των δεδομένων φωτεινότητας.p: επίπεδη (planar) διάταξη. Κάθε συνιστώσα έχει ξεχωριστό επίπεδο. Μια packed μορφή κρατά τις συνιστώσες μαζί σε έναν πίνακα.10: τα bit για κάθε συνιστώσα. Η τιμήyuv420pδεν έχει αριθμό εδώ και χρησιμοποιεί 8 bit.le: η σειρά byte, little-endian. Το τέλοςbeσημαίνει big-endian.
Τυπικές τιμές
Κάθε αριθμός παρακάτω είναι ο μέσος όρος bit ανά εικονοστοιχείο στα ακατέργαστα δεδομένα εικόνας:
yuv420p: 12 bit, χρώμα στο μισό πλάτος και το μισό ύψοςyuv422p: 16 bit, χρώμα στο μισό πλάτοςyuv444p: 24 bit, χρώμα για κάθε εικονοστοιχείοyuvj420p: 12 bit, η διάταξηyuv420pμε το πλήρες εύρος τιμών που χρησιμοποιεί το JPEGrgb24: 24 bit, packed κόκκινο, πράσινο και μπλεrgba: 32 bit, με πρόσθετη τιμή άλφα για διαφάνειαgray: 8 bit, μόνο φωτεινότηταpal8: 8 bit, κάθε τιμή αντιστοιχεί σε ένα χρώμα παλέτας
Σε πλήρες εύρος, η φωτεινότητα 8 bit κυμαίνεται από 0 έως 255. Σε περιορισμένο εύρος, κυμαίνεται από 16 έως 235. Το FFmpeg προτείνει ξεχωριστό πεδίο για το εύρος αντί για τα ονόματα yuvj.
Από πού προέρχεται η τιμή
Το πρόγραμμα που κωδικοποιεί τη ροή αποφασίζει τη μορφή εικονοστοιχείων. Στο FFmpeg, την επιλέγετε με την επιλογή -pix_fmt.
Το ίδιο το όνομα συνήθως δεν αποθηκεύεται στο αρχείο. Το πρόγραμμα ανάγνωσης δημιουργεί το όνομα από τα αποθηκευμένα στοιχεία.
Για H.264, το FFmpeg χρησιμοποιεί το βάθος bit και τη μορφή chroma στην επικεφαλίδα της ροής. Για PNG, το FFmpeg χρησιμοποιεί το βάθος bit και τον τύπο χρώματος στην επικεφαλίδα της εικόνας.
Γιατί έχει σημασία για το αρχείο σας
Η μορφή εικονοστοιχείων ορίζει το μέγεθος των ακατέργαστων δεδομένων εικόνας. Ένα καρέ rgb24 έχει 24 bit ανά εικονοστοιχείο και ένα καρέ yuv420p έχει 12. Τα codecs στη συνέχεια συμπιέζουν αυτά τα δεδομένα, επομένως αυτοί οι αριθμοί δεν δίνουν το τελικό μέγεθος αρχείου.
Η μορφή εικονοστοιχείων ορίζει επίσης πόση λεπτομέρεια χρώματος διατηρεί το αρχείο. Το ανθρώπινο μάτι βλέπει πολύ περισσότερη λεπτομέρεια στη φωτεινότητα παρά στο χρώμα, οπότε το 4:2:0 προκαλεί μικρή ορατή απώλεια.
Αν μετατρέψετε 4:2:0 σε 4:4:4, ένα πρόγραμμα υπολογίζει τα ελλιπή δείγματα από τα κοντινά. Η λεπτομέρεια χρώματος που αφαίρεσε το 4:2:0 παραμένει χαμένη.
Το προφίλ H.264 είναι ένας ακόμη λόγος να ελέγχετε την τιμή. Τα προφίλ Main και High υποστηρίζουν χρώμα 8 bit με δειγματοληψία 4:2:0.
Μια ροή H.264 σε yuv444p ή yuv420p10le χρειάζεται υψηλότερο προφίλ. Οι κανόνες HLS της Apple απαιτούν H.264 σε προφίλ High ή χαμηλότερο. Το YouTube προτείνει προφίλ High με 4:2:0 για αποστολές.