Η κωδικοποίηση βίντεο (encoding) είναι η διαδικασία συμπίεσης ενός ψηφιακού σήματος βίντεο σε μορφή κατάλληλη για αποθήκευση και μετάδοση μέσω δικτύου με ελάχιστη απώλεια ποιότητας. Χωρίς κωδικοποίηση, ένα λεπτό ασυμπίεστου βίντεο σε ανάλυση 4K καταλαμβάνει περίπου 30 GB, καθιστώντας αδύνατη τη μετάδοση μέσω διαδικτύου. Σύμφωνα με την έκθεση Sandvine Global Internet Phenomena (2025), το βίντεο αποτελεί το 65% όλης της διαδικτυακής κίνησης και η κωδικοποίηση είναι η βασική τεχνολογία που το καθιστά δυνατό.
Σημεία Κλειδιά
Κωδικοποίηση βίντεο (encoding) είναι η διαδικασία μετατροπής ενός ασυμπίεστου σήματος βίντεο σε ψηφιακή μορφή με χρήση αλγορίθμων συμπίεσης. Οι αλγόριθμοι που υλοποιούνται σε κωδικοποιητές βίντεο αφαιρούν πλεονάζουσες πληροφορίες τόσο στο χωρικό πεδίο (εντός ενός καρέ) όσο και στο χρονικό πεδίο (μεταξύ διαδοχικών καρέ).
Το ασυμπίεστο βίντεο είναι μια ακολουθία καρέ, κάθε ένα από τα οποία αποθηκεύεται ως πίνακας εικονοστοιχείων σε μορφή RGB ή YUV. Χωρίς συμπίεση, ένα δευτερόλεπτο βίντεο 1080p στα 30 FPS απαιτεί περίπου 1,5 GB μνήμης. Ο κωδικοποιητής H.264 συμπιέζει αυτή τη ροή στα 3–5 Mbps, 2500 φορές λιγότερο από τον αρχικό όγκο.
Οι κωδικοποιητές βίντεο χρησιμοποιούν δύο τύπους συμπίεσης: ενδο-καρέ (intra-frame) και δια-καρέ (inter-frame). Η συμπίεση intra-frame εφαρμόζεται σε κάθε καρέ ανεξάρτητα, χρησιμοποιώντας αλγόριθμους παρόμοιους με το JPEG: διακριτό μετασχηματισμό συνημιτόνου (DCT), κβαντοποίηση και εντροπική κωδικοποίηση.
Η συμπίεση inter-frame αναλύει τη διαφορά μεταξύ διαδοχικών καρέ και κωδικοποιεί μόνο τις αλλαγές. Εάν το φόντο είναι στατικό, ο κωδικοποιητής στέλνει το πλήρες καρέ μόνο μία φορά (I-frame) και στη συνέχεια μόνο τη διαφορά (P και B καρέ), μειώνοντας σημαντικά τον όγκο δεδομένων για σκηνές με χαμηλή δυναμική.
Η επιλογή κωδικοποιητή βίντεο καθορίζει την αναλογία ποιότητας-μεγέθους, τη συμβατότητα με συσκευές και τα τέλη αδειοδότησης. Στην αγορά εφαρμογών κινητών κυριαρχούν τέσσερις κύριοι κωδικοποιητές: H.264 (AVC), H.265 (HEVC), VP9 και AV1.
| Κωδικοποιητής | Πρότυπο | Έτος | Συμπίεση vs H.264 | Αδειοδότηση |
|---|---|---|---|---|
| H.264/AVC | MPEG-4 Part 10 | 2003 | 1x (βασική) | Με δικαιώματα (MPEG LA) |
| H.265/HEVC | MPEG-H Part 2 | 2013 | 40–50% πιο αποδοτικός | Με δικαιώματα (δύο ομάδες) |
| VP9 | 2013 | 30–40% πιο αποδοτικός | Δωρεάν | |
| AV1 | AOM | 2018 | 50–60% πιο αποδοτικός | Δωρεάν (Χωρίς δικαιώματα) |
H.264 (AVC — Advanced Video Coding) παραμένει ο πιο συμβατός κωδικοποιητής βίντεο: υποστηρίζεται από όλες τις κινητές συσκευές, τα προγράμματα περιήγησης και τις Smart TV από το 2005. Η επιτάχυνση υλικού της αποκωδικοποίησης H.264 είναι διαθέσιμη ακόμα και σε οικονομικές συσκευές, καθιστώντας το ιδανικό για καθολική ροή.
Το κύριο μειονέκτημα του H.264 — η σχετικά χαμηλή απόδοση συμπίεσης σε σύγκριση με τους σύγχρονους κωδικοποιητές. Στο ίδιο bitrate, οι H.265 και AV1 παρέχουν αισθητά υψηλότερη ποιότητα, κάτι που είναι ιδιαίτερα σημαντικό για περιεχόμενο HDR και 4K.
H.265 (HEVC — High Efficiency Video Coding) παρέχει 40–50% καλύτερη συμπίεση από τον H.264 με την ίδια οπτική ποιότητα. Αυτό επιτυγχάνεται μέσω πιο ευέλικτης διαίρεσης του καρέ σε μπλοκ (CTU έως 64×64 pixel αντί για 16×16) και βελτιωμένων αλγορίθμων πρόβλεψης κίνησης.
Ο HEVC υποστηρίζεται σε όλες τις συσκευές Apple (από το iPhone 6), στο Android (από την έκδοση 5.0 με αποκωδικοποίηση υλικού) και στις περισσότερες Smart TV. Τα τέλη αδειοδότησης του HEVC είναι υψηλότερα από του H.264 και διαχειρίζονται από δύο ομάδες διπλωμάτων ευρεσιτεχνίας, περιπλέκοντας τη νόμιμη χρήση.
AV1 — κωδικοποιητής βίντεο που αναπτύχθηκε από την Alliance for Open Media (AOM), μια κοινοπραξία υπό την ηγεσία των Google, Netflix, Amazon, Intel και Mozilla. Ο AV1 παρέχει 50–60% καλύτερη συμπίεση από τον H.264 και είναι εντελώς απαλλαγμένος από δικαιώματα, καθιστώντας τον ελκυστικό για υπηρεσίες streaming.
Το κύριο μειονέκτημα του AV1 — η υψηλή υπολογιστική πολυπλοκότητα της κωδικοποίησης. Η κωδικοποίηση AV1 μπορεί να είναι 5–10 φορές πιο αργή από τον H.264 στον ίδιο εξοπλισμό, αν και η αποκωδικοποίηση υλικού εμφανίζεται ήδη σε συσκευές του 2024–2025 (Snapdragon 8 Gen 3, Apple A17 Pro).
Οι κωδικοποιητές ήχου σε εφαρμογές κινητών δεν είναι λιγότερο σημαντικοί από τους κωδικοποιητές βίντεο. Για το streaming βίντεο απαιτείται ήχος με ελάχιστη καθυστέρηση, υψηλή ποιότητα και συμβατότητα με κοντέινερ MP4 και WebM. Τρεις κύριοι κωδικοποιητές ήχου καλύπτουν το 99% των εφαρμογών streaming κινητών.
AAC (Advanced Audio Coding) — ο διάδοχος του MP3, που αναπτύχθηκε από το MPEG το 1997 και έγινε ο τυπικός κωδικοποιητής ήχου για iTunes, YouTube και Android. Το AAC παρέχει την ίδια ποιότητα με το MP3 σε 30% χαμηλότερο bitrate και υποστηρίζει πολυκαναλικό ήχο έως 7.1.
Για εφαρμογές κινητών, συνιστάται AAC-LC σε bitrate 128–192 kbps για στερεοφωνικό και AAC-HE για χαμηλά bitrate 32–64 kbps. Η αποκωδικοποίηση υλικού AAC είναι διαθέσιμη σε όλες τις σύγχρονες συσκευές, ελαχιστοποιώντας την κατανάλωση ενέργειας.
Opus — ανοιχτός κωδικοποιητής ήχου από το IETF (RFC 6716), που παρέχει την καλύτερη ποιότητα μεταξύ όλων των κωδικοποιητών ήχου σε bitrate από 6 έως 510 kbps. Το Opus συνδυάζει τα SILK (αλγόριθμος για ομιλία) και CELT (για μουσική) και αλλάζει αυτόματα λειτουργίες ανάλογα με το περιεχόμενο.
Το Opus χρησιμοποιείται στο WebRTC για βιντεοκλήσεις, στις εφαρμογές Spotify και Discord, και υποστηρίζεται στο HLS από το iOS 11 και το Android 5.0. Η χαμηλή καθυστέρηση του Opus (5–26 ms έναντι 40–100 ms στο AAC) το καθιστά προτιμότερη επιλογή για ζωντανές μεταδόσεις και βιντεοδιασκέψεις.
Οι παράμετροι κωδικοποίησης καθορίζουν το τελικό μέγεθος αρχείου, την ποιότητα βίντεο και τη συμβατότητα με συσκευές. Ο προγραμματιστής εφαρμογής κινητού πρέπει να επιλέξει βέλτιστες ρυθμίσεις για κάθε τύπο περιεχομένου: ταινίες, αθλητικές μεταδόσεις, περιεχόμενο χρήστη.
Bitrate — ο αριθμός των bit που χρησιμοποιούνται για την κωδικοποίηση ενός δευτερολέπτου βίντεο. Διακρίνονται CBR (Constant Bitrate) — σταθερό bitrate για ζωντανές μεταδόσεις, VBR (Variable Bitrate) — μεταβλητό με ποιότητα-στόχο για αρχειοθέτηση και ABR (Average Bitrate) — μέσο όρο για streaming.
| Ανάλυση | H.264 (συνιστάται) | H.265/HEVC | AV1 |
|---|---|---|---|
| 360p | 400–800 kbps | 250–500 kbps | 200–400 kbps |
| 720p | 1,5–4 Mbps | 1–2,5 Mbps | 0,8–2 Mbps |
| 1080p | 3–8 Mbps | 2–5 Mbps | 1,5–4 Mbps |
| 4K (2160p) | 15–40 Mbps | 10–25 Mbps | 8–20 Mbps |
CRF (Constant Rate Factor) — παράμετρος κωδικοποίησης σε x264 και x265 που ορίζει την ποιότητα-στόχο αντί για σταθερό bitrate. Η κλίμακα CRF από 0 (lossless) έως 51 (χειρότερη ποιότητα), όπου 18–28 είναι το εύρος εργασίας. Για εφαρμογές κινητών, συνιστάται CRF 23 για x264 και CRF 25 για x265.
CRF 18–20 παρέχει υψηλή ποιότητα για περιεχόμενο παρουσίασης και offline προβολή. CRF 24–28 είναι κατάλληλο για streaming και περιεχόμενο χρήστη, όπου το μέγεθος αρχείου είναι πιο σημαντικό από την απόλυτη ποιότητα.
Το πρότυπο H.264 ορίζει προφίλ (Baseline, Main, High) και επίπεδα (Level 1–5.2) που περιορίζουν τις μέγιστες παραμέτρους βίντεο. Baseline Profile είναι συμβατό με όλες τις συσκευές, αλλά δεν υποστηρίζει B καρέ. High Profile παρέχει μέγιστη ποιότητα και χρησιμοποιείται για περιεχόμενο 1080p.
Για streaming 4K απαιτείται Level 5.1 και άνω, το οποίο υποστηρίζεται από τις περισσότερες κινητές συσκευές από το 2018. Το επίπεδο κωδικοποιητή καθορίζει τη μέγιστη ανάλυση, bitrate και μέγεθος buffer, εγγυώμενο σωστή αποκωδικοποίηση σε όλες τις πιστοποιημένες συσκευές.
Η κωδικοποίηση για streaming διαφέρει από την αρχειακή κωδικοποίηση στην ανάγκη δημιουργίας πολλαπλών παραλλαγών ποιότητας (ABR ladder) και βελτιστοποίησης για μετάδοση δικτύου. Οι πάροχοι περιεχομένου χρησιμοποιούν transcoding σε πραγματικό χρόνο ή προκαταρκτική κωδικοποίηση για VOD.
Ένα τυπικό σετ ABR για εφαρμογές κινητών περιλαμβάνει 4–6 παραλλαγές: από 144p (200 kbps) για αδύναμα δίκτυα έως 1080p (8 Mbps) για Wi-Fi. Συνιστώμενες αναλύσεις: 144p, 240p, 360p, 480p, 720p, 1080p. Για περιεχόμενο 4K προστίθενται 1440p και 2160p.
val mediaCodec = MediaCodec.createEncoderByType(
MediaFormat.MIMETYPE_VIDEO_AVC
)
val format = MediaFormat.createVideoFormat(
MediaFormat.MIMETYPE_VIDEO_AVC,
1280, 720
).apply {
setInteger(MediaFormat.KEY_BIT_RATE, 3_000_000)
setInteger(MediaFormat.KEY_FRAME_RATE, 30)
setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 2)
setInteger(MediaFormat.KEY_PROFILE,
MediaCodecInfo.CodecProfileLevel.AVCProfileHigh)
setInteger(MediaFormat.KEY_LEVEL,
MediaCodecInfo.CodecProfileLevel.AVCLevel31)
}
mediaCodec.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE)
Για ζωντανές μεταδόσεις η χαμηλή καθυστέρηση είναι ιδιαίτερα σημαντική. Οι ρυθμίσεις κωδικοποίησης πρέπει να ελαχιστοποιούν την καθυστέρηση εισόδου/εξόδου του κωδικοποιητή: συνιστάται μέγεθος GOP 1–2 δευτερόλεπτα (κάθε 30–60 καρέ), B καρέ απενεργοποιημένα ή ελαχιστοποιημένα, για H.264 χρησιμοποιείται Baseline Profile.
Σύγχρονα πρωτόκολλα για χαμηλή καθυστέρηση — LL-HLS και CMAF-Low Latency — απαιτούν κατακερματισμένη κωδικοποίηση με τμήματα 1–2 δευτερολέπτων και δυνατότητα μερικής φόρτωσης (Partial Segments). Ο κωδικοποιητής πρέπει να υποστηρίζει moof-box σε κάθε τμήμα για κατακερματισμένο MP4.
Συχνές Ερωτήσεις
Κωδικοποίηση βίντεο — η διαδικασία συμπίεσης ψηφιακού σήματος βίντεο με χρήση κωδικοποιητών για μείωση του όγκου δεδομένων. Σε εφαρμογές κινητών, η κωδικοποίηση επιτρέπει τη μετάδοση και αποθήκευση βίντεο, μειώνοντας το μέγεθος εκατοντάδες φορές χωρίς αισθητή απώλεια ποιότητας στην οθόνη της συσκευής.
Ο H.264 παρέχει μέγιστη συμβατότητα με παλιές συσκευές, ενώ ο H.265 είναι 40–50% πιο αποδοτικός στην ίδια ποιότητα. Για περιεχόμενο 1080p και κάτω αρκεί ο H.264, για 4K συνιστάται H.265 ή AV1 εάν η συσκευή το υποστηρίζει.
Bitrate — η ποσότητα δεδομένων ανά δευτερόλεπτο βίντεο. Για 1080p, το βέλτιστο bitrate είναι 3–8 Mbps για H.264, 2–5 Mbps για H.265. Η επιλογή εξαρτάται από το περιεχόμενο: δυναμικές σκηνές (αθλητικά) απαιτούν υψηλότερο bitrate, στατικές σκηνές (συνεντεύξεις) χαμηλότερο.
VP9 — ο προκάτοχος του AV1 από την Google, που παρέχει συμπίεση σε επίπεδο H.265. Το AV1 συμπιέζει 20–30% πιο αποδοτικά από το VP9, αλλά απαιτεί 5–10 φορές περισσότερους πόρους για κωδικοποίηση. Το VP9 είναι καλύτερο για το YouTube, το AV1 — για το Netflix και σύγχρονες υπηρεσίες streaming.
Για ζωντανές μεταδόσεις χρησιμοποιήστε H.264 Baseline Profile με GOP 1–2 δευτερόλεπτα, χωρίς B καρέ, bitrate 2–4 Mbps για 1080p. Ενεργοποιήστε το κατακερματισμένο MP4 (CMAF) για LL-HLS και χρησιμοποιήστε κωδικοποίηση υλικού μέσω MediaCodec ή VideoToolbox.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης