( 44 ψήφοι )

4.1-video-compress-algorithm

Ζούμε σε μια εποχή όπου οι απαιτήσεις σε ποιότητα βίντεο αυξάνονται κατακόρυφα. Από αναλύσεις εικόνας της τάξης 720x576 ανεβήκαμε στα 1920x1080 και εσχάτως στα 4096x2160. Σύμφωνα με μία προ διετίας έρευνα, το Netflix  από μόνο του είναι υπεύθυνο για το... 37% της συνολικής κίνησης στο ίντερνετ με το YouTube να ακολουθεί με 15% και λοιπές υπηρεσίες βίντεο να τρώνε άλλο ένα 6.5%. Χονδρικά λοιπόν το 58.5% της κίνησης στο ίντερνετ είναι συμπιεσμένο βίντεο, χωρίς να υπολογίζουμε τα torrents ταινιών, το Twitch.tv ή τα διάφορα βίντεο που είναι αποθηκευμένα σε ανεξάρτητες σελίδες. Οι δύο λύσεις που υπάρχουν προκειμένου να μην μπλοκάρει η κίνηση και να μην γεμίζουν δίσκοι μας από τις αυξανόμενες απαιτήσεις σε χώρο, είναι είτε η συνεχής αναβάθμιση υποδομών, είτε η βέλτιστη συμπίεση βίντεο έτσι ώστε αυτό να έχει μικρότερο μέγεθος με  την καλύτερη δυνατή ποιότητα. Είναι κάτι τέτοιο όμως δυνατόν;

Ιστορία: Media formats

Το πρώτο επίσημο μέσο που μπορούσε να υποστηρίξει βίντεο σε μια τυποποιημένο μορφή  ήταν το  VideoCD. Κυκλοφόρησε το 1987 και προσέφερε ανάλυση 352x288 (σε PAL) και 25 καρέ / δευτερόλεπτο με 1.1Mbit/sec bit rate. Η συμπίεση γίνονταν μέσω ενός MPEG1 αλγόριθμου που την εποχή εκείνη ήταν πολύ δύσκολο να τρέξει ακόμη και σε 16/32bit επεξεργαστές που μετά βίας μπορούσαν να αποσυμπιέσουν mp3 σε real time!

Πριν πούμε οτιδήποτε άλλο θα πρέπει να διευκρινίσουμε εδώ πως τα δύο πράγματα μας ενδιαφέρουν όταν κωδικοποιούμε/συμπιέζουμε μια κινούμενη εικόνα είναι (α) το bit-rate δηλαδή το μέγεθος των bits που θα διαθέσουμε ανά δευτερόλεπτο για να περιγράψουμε την κινούμενη εικόνα (άρα όσο περισσότερο τόσο το καλύτερο), και (β) ο αλγόριθμος συμπίεσης που όσο πιο αποδοτικός είναι, τόσο καλύτερα εκμεταλλεύεται το bit-rate που του διαθέτουμε.

Όπως και να έχει επιστρέφοντας στο VideoCD, αυτό ποτέ δεν κέρδισε την εύνοια του ευρύ κοινού, κάτι που κατάφερε το DVD format το 1997. Με ανάλυση που πλέον έφτανε τα 720x576 και με bit-rate που μπορούσε να κυμανθεί από 4 έως 8~10Mbit/sec. Το τελευταίο ήταν εφικτό χάρης την μεγαλύτερη χωρητικότητα του DVD media (4.7GB έως 8.5GB σε σχέση με τα 800MB του CD media).

Τέλος, η τελευταία γενιά των Blu-Ray discs, με χωρητικότητα έως και 50GB (για βίντεο), μπορεί να υποστηρίξει βίντεο ανάλυσης έως και 3840x2160 στα 60 καρέ/δευτερόλεπτο με bit-rate της τάξης των 54Mbit/sec και αλγόριθμο συμπίεσης το γνωστό και μη εξαιρετέο H.264. Παρόλες πάντως τις δυνατότητες αποθήκευσης που έχει το  Blu-Ray, ποτέ δεν μπόρεσε να πλησιάσει σε δόξα το DVD, τουλάχιστον στον κόσμο των υπολογιστών. Μπορεί στα home cinema συστήματα το Blu-Ray να θεωρείται σήμερα στάνταρ, παρόλα αυτά, ζούμε στην εποχή του ίντερνετ και της NAND μνήμης, και αυτό σημαίνει εν συντομία πως το Blu-Ray θα είναι κατά πάσα πιθανότητα το τελευταίο μέσο/δισκάκι που θα δούμε πριν αυτές οι (πάνω-κάτω απαρχαιωμένες) πρακτικές, εκλείψουν τελείως από οποιοδήποτε PC, Mac  ή home cinema.

Αλγόριθμοι

Με συγκίνηση ενθυμούμαι περιοδικά της εποχής (λέγε με Pixel) να απορούν γιατί πρωτοποριακό μηχάνημα ονόματι CDTV δεν παρείχε υποστήριξη hardware decoding για MPEG. Η αλήθεια είναι πως το software ωρίμασε μαζί με το hardware αφού χωρίς την ανάπτυξη των επεξεργαστών και των 3D καρτών γραφικών θα ήταν αδύνατη η εφαρμογή των πολύπλοκων αλγόριθμων.

Τί εστί αλγόριθμος συμπίεσης βίντεο κατ' αρχάς; Πρόκειται για ένα ιδιαίτερα πολύπλοκο πρόγραμμα που αναλαμβάνει να μειώσει το μέγεθος μας εικόνας βίντεο όσο το δυνατόν περισσότερο με όσο το δυνατόν μικρότερες απώλειες ποιότητας. Για όσους απορούν, ναι, όλοι οι αλγόριθμοι συμπίεσης βίντεο μειώνουν την ποιότητα  και ναι, όλοι οι σύγχρονοι αλγόριθμοι μπορούν να ρυθμιστούν ώστε να έχουν μεταβλητό bit-rate ώστε σε κάποιο κομμάτι της ταινίας που δεν έχει δράση να μειώνουν το μέγεθος σε και άλλο κομμάτι να αυξάνουν την ποιότητα.

Όσο λοιπόν αυξάνεται το μέγεθος της εικόνας (π.χ. από τα 320x200 στα 1920x1080) τόσο αυξάνεται και η ανάγκη ενός πιο αποδοτικού αλγόριθμου, και όσο πιο αποδοτικοί αλγόριθμοι εμφανίζονται, τόσο αυξάνει με τη σειρά της η ανάγκη για υπολογιστική ισχύ προκειμένου να αποκωδικοποιηθεί ένα αρχείο βίντεο προκειμένου να παιχτεί σε πραγματικό χρόνο.

Έτσι από το MPEG πήγαμε στο MPEG2, στο MPEG4 και στο H.264 (επίσης γνωστό ως, MPEG4 Part 10, ή AVC). Ανάμεσα σε αυτά υπάρχουν αρκετές υποεκδόσεις ή παραλλαγές (π.χ. QuickTime) αλλά το σημαντικό είναι απλά να γνωρίζουμε πως αυτοί είναι οι ευρέως διαδεδομένοι αλγόριθμοι οι οποίοι είτε δεσμεύουν πολύτιμο εύρος συχνοτήτων όταν π.χ. βλέπετε ψηφιακή τηλεόραση είτε καταλαμβάνουν εύρος στο ίντερνετ είτε χώρο στον σκληρό σας δίσκο ή και στην φωτογραφική σας μηχανή όταν τραβάει βίντεο.

Πώς ακριβώς γίνεται η συμπίεση ενός βίντεο

Χωρίς να προσπαθήσουμε καν να μπούμε στα «βαθιά» τεχνικά της συμπίεσης, θα ξεκινήσουμε με την ανάλυση της JPEG συμπίεσης στατικών εικόνων. Ο JPEG αλγόριθμος λοιπόν, προσπαθεί σε μια εικόνα να βρει σημεία που έχουν κοινό χρώμα (μεγάλες περιοχές με μαύρο κ.λπ.) και να τις συμπιέσει. Εν ολίγοις αν μια εικόνα έχει πολλές μικρές πολύπλοκες περιοχές με pixels μεγάλων χρωματικών διαφορών, θα συμπιεστεί πολύ λιγότερο αποδοτικά από ότι μια εικόνα με μεγάλες περιοχές όπου κυριαρχεί ένα χρώμα ή ένα είδος χρώματος.

Παράδειγμα: Παρακάτω είναι δύο εικόνες που ο γραφών έφτιαξε με το Microsoft Paint. Και οι δύο έχουν ίδια ανάλυση (584x356 pixels) και ασυμπίεστα θα καταλάμβαναν χώρο της τάξης των 600KB:

4.2-paint-images

Συμπιέζοντας και τις δύο εικόνες με JPEG η πρώτη που είναι και αρκετά πιο πολύπλοκη καταλαμβάνει χώρο της τάξης των 114 Kbytes τη στιγμή που η δεύτερη (και πολύ απλούστερη) εικόνα καταλαμβάνει χώρο μόλις 50 Kbytes!

Στην JPEG συμπίεση η εικόνα «σπάει» σε νοητές ενότητες των 8x8 ή και 16x16 pixels με σκοπό να μειωθεί όσο το δυνατόν η πληροφορία με όσο το δυνατόν μικρότερο χάσιμο ποιότητας στο μάτι και περνάει από πολλές διεργασίες προκειμένου αυτό να επιτευχθεί. Φυσικά το JPEG πρότυπο έχει δυνατότητα ποιότητας (=bit-rate), εάν λ.χ. διαλέξουμε την χειρότερη ποιότητα με την καλύτερη συμπίεση, τότε τα όρια των blocks αρχίζουν να γίνονται ορατά ενώ η ποιότητα πέφτει κατακόρυφα. Αν λόγου χάρη πάρουμε την δεύτερη εικόνα παραπάνω και την συμπιέσουμε στο μέγιστο βαθμό τότε θα μοιάζει ακριβώς έτσι:

4.3-paint-image-compressed

..ενώ το μέγεθος της δεν θα ξεπερνάει τα 10 Kbytes!

Για να επιστρέψουμε στα δικά μας, η διαφορά μεταξύ ενός αλγόριθμου συμπίεσης εικόνας σε σχέση με τον αλγόριθμο συμπίεσης βίντεο είναι πως ο δεύτερος προσπαθεί να επιτύχει συμπίεση συγκρατώντας τα κοινά μέρη ανάμεσα στα διάφορα καρέ του βίντεο και απομνημονεύοντας μόνο τις αλλαγές. Έτσι για παράδειγμα όταν ένας άνθρωπος περνάει έναν δρόμο και η κάμερα είναι σταθερή, το μόνο που αλλάζει (χονδρικά) είναι ο άνθρωπος ενώ το φόντο (δρόμος, κτίρια κ.λπ.) παραμένουν ίδια.

Βίντεο στο οποίο μπορούμε να διακρίνουμε τα MPEG4 artifacts (τετραγωνάκια, και άλλα κουλά), που δημιουργούνται από κακή λήψη.

Φυσικά υπάρχουν περεταίρω διεργασίες όπως το motion compensation και το deblocking, όλες με τον ίδιο σκοπό: Την μείωση του χώρου χωρίς να υπάρχει αισθητή διαφορά στο μάτι.  Η όλη διεργασία έχει αρκετά τεχνικά θέματα που δεν χρειάζεται να αναφερθούν. Αυτό που πρέπει να γνωρίζουμε είναι πως το σημερινό hardware στους υπολογιστές (από την AMD Radeon X1000 και από τις NVidia σειράς 7xxx και μετά) και στις τηλεοράσεις μας, είναι κατασκευασμένο ώστε να αποκωδικοποιεί ακριβώς αυτούς τους αλγόριθμους σε πραγματικό χρόνο, ώστε να απολαμβάνουμε την εικόνα και τον ήχο χωρίς να αντιλαμβανόμαστε την όλη διεργασία.

Γιατί χρειαζόμαστε ένα νέο πρότυπο συμπίεσης;

Η απάντηση στο παραπάνω ερώτημα ίσως είναι το «γιατί ο κόσμος προχωράει μπροστά». Το YouTube πριν κάποια χρόνια είχε χρονικό όριο βίντεο κάπου στα τρία λεπτά και ανάλυση 360p ενώ σήμερα επιτρέπει να ανεβάζουμε 4K video ωρών.

4.4-4k-to-vcd

Η εικόνα λέει πολλά για τον αριθμό pixels του 4K σε σχέση με τα προηγούμενα formats!

Ας  κάνουμε μια υπόθεση λοιπόν πως έχετε ένα 4K βίντεο του ενός λεπτού συμπιεσμένο με H264 αλγόριθμο σε βέλτιστη ποιότητα. Τι μέγεθος έχει ένα τέτοιο βίντεο σε H264 format; Περίπου... 550Mbytes! Έστω πως διαθέτετε την πιο γρήγορη VDSL σύνδεση, η ταχύτητα upload είναι 5MBps ήτοι 625Kbytes/sec (στην καλύτερη). Αυτό θα σημαίνει πως για να ανεβάσετε το βίντεο σας θα πρέπει να περιμένετε περί τα 15 λεπτά. Αν τώρα έχετε μια συμβατική ADSL γραμμή, τότε αυτός ο χρόνος ανεβαίνει στην... μία ώρα και δεκαπέντε λεπτά! Όπως καταλαβαίνετε, προκειμένου στο μέλλον να μην απαιτούνται ημέρες για το ανεβοκατέβασμα βίντεο ποιότητας, θα πρέπει είτε να αναβαθμιστεί όλη η υποδομή του ίντερνετ είτε να βρεθούν πιο αποδοτικοί τρόποι συμπίεσης.

Η265 ενάντια σε VP9 και Daala

4.5-h264-vs-hevc

Τα καλά νέα λοιπόν είναι πως νέοι –πιο αποδοτικοί– αλγόριθμοι έχουν κάνει την εμφάνιση τους και το όνομα αυτών, H265, VP9 και Daala. Το πρώτο (με το οποίο θα ασχοληθούμε περισσότερο καθότι τείνει να γίνει το στάνταρ στην βιομηχανία) είναι η φυσική συνέχεια του H264 που χρησιμοποιείται ευρέως σήμερα. Το δεύτερο αναπτύσσεται από την Google ως δωρεάν πρότυπο (σε αντίθεση με το H265 που θα έχει royalty fees της τάξης των $0.20 ανά συσκευή) ενώ το Daala είναι το outsider της υπόθεσης αν και διατείνεται ακόμη καλύτερα αποτελέσματα σε σχέση με το H265.

Στην πράξη, το H265 και το VP9 βρίσκονται πολύ κοντά το ένα στο άλλο όσον αφορά την απόδοση και την ποιότητα, κάτι που έχει επιβεβαιωθεί από αρκετές ανεξάρτητες μετρήσεις που έχουν γίνει έως σήμερα. Όσον αφορά δεν την σύγκριση με το παρελθόν, τότε τα πράγματα αλλάζουν άρδην!

Αν συγκρίνουμε την απόδοση του H265 αλγόριθμου (που συχνά τον συναντάμε και ως MPEG-H Part 2, ή HEVC) σε σχέση με τον H264 τότε θα διαπιστώσουμε πως ο πρώτος αλγόριθμος παράγει αρχεία που έχουν μέγεθος από 25% έως και 55% μικρότερα σε σχέση με το H264 για ίδια ή καλύτερη οπτική απόδοση.

4.6-h265-vs-h264

Πρόκειται για μια τεράστια νίκη του software που όμως δεν έρχεται δωρεάν: Προκειμένου να κωδικοποιηθεί ένα H265 βίντεο, απαιτείται υπολογιστική ισχύ 5 με 10 φορές περισσότερο από ότι του H264!

Και εδώ γεννιέται το ερώτημα: Μπορεί η σημερινή (ή χθεσινή) τεχνολογία ν' ανταπεξέλθει στις απαιτήσεις ενός τόσο πολύπλοκου αλγόριθμου;

Πόσο μας αφορά αυτή η νέα τεχνολογία;

Στην πρακτική ερώτηση του άρθρου, θα πρέπει να απαντήσουμε με ένα «πολύ». Το H265 ή και τα άλλα προτεινόμενα formats συμπίεσης είναι πολύ σημαντικά για:

  • Όσους «κατεβάζουν» ταινίες από το ίντερνετ, το συνηθέστερο format που αυτές είναι συμπιεσμένες είναι το H264 ενώ ήδη έχουν κάνει την εμφάνιση τους, H265 ταινίες. Αυτή τη στιγμή αν πάρετε έναν τετραπύρηνο υπολογιστή και προσπαθήσετε με μια φτηνή (ή και... ακριβότερη) κάρτα γραφικών να παίξετε H265 περιεχόμενο σε ανάλυση πέραν του FullHD, πιθανότατα δεν θα τα καταφέρετε!
  • Όσοι αρέσκονται να βλέπουν τις αγαπημένες τους ταινίες ή σειρές στην Smart TV τους, και πάλι πιθανότατα θα βρεθούν προ εκπλήξεων!
  • Όσοι κάνουν επεξεργασία βίντεο

Σε όλες αυτές τις περιπτώσεις οι καινούργιοι αλγόριθμοι (και κυρίως ο H265 που είναι κάπως ποιο πιθανόν να επικρατήσει) πιθανόν να βάλουν δύσκολα στον εξοπλισμό σας. Πόσο έτοιμοι είστε για την νέα τεχνολογία είπαμε;

info  Όσον αφορά τους υπολογιστές:

  • Επεξεργαστές 6ης γενιές (Skylake) και μετά έχουν δυνατότητα αποσυμπίεσης τόσο H265 όσο και VP9.
  • Επεξεργαστές της AMD με κωδικό γενιάς Carizzo ή νεότερο
  • Κάρτες γραφικών της AMD με κωδικό γενιάς Fiji ή νεότερο (Radeon R9 Fury, Fury X...)
  • Κάρτες γραφικών της NVidia της σειράς GTX9xx έχουν μερικές δυνατότητες υποστήριξης H265 ενώ (περιέργως) η GTX960 είναι η μοναδική με πλήρεις δυνατότητες συμπίεσης/αποσυμπίεσης (για όσους δεν το κατάλαβαν, η GTX970 είναι χειρότερη σε αυτό το τομέα). Πιθανότατα η νέα Pascal (GTX1070, GTX1080) αρχιτεκτονική έχει πλήρεις δυνατότητες.

info  Όσον αφορά τα smartphones και τις ταμπλέτες:

  • Κινητά με επεξεργαστή Snapdragon 805/615/410/208 SoCs ή νεότερο. Η μέγιστη ανάλυση «παίζει» από 720p έως 4K ανάλογα με το μοντέλο.
  • NVidia Tegra X1 SoCs ή νεότερα
  • Samsung Exynos 5 Octa 5530 SoCs ή νεότερα
  • Apple A8 SoCs ή νεότερα
  • Μερικά MediaTek SoCs από τα μέσα του 2014 και μετά

info  Όσον αφορά τις παιχνιδομηχανές και τους δημοφιλείς media players

ΔΕΝ υποστηρίζεται το H265 από τις δύο πρώτες γενιές του Google Chromecast, δεν υποστηρίζεται από το AppleTV,  το Roku, το Amazon Fire TV (2004) stick, από τα προϊόντα WD TV της Western Digital, από όλες τις κονσόλες Playstation και από το Xbox360.

Αντίθετα το H265 υποστηρίζεται από το Roku4, το Amazon FireTV (2015) και το Xbox One.

info  Όσον αφορά τις Smart τηλεοράσεις

Πολλές (αλλά όχι όλες) από τις σύγχρονες 4K SmartTVs υποστηρίζουν HVEC/H265 συμπίεση. Όσοι σκοπεύουν να αγοράσουν μια τέτοια τηλεόραση, θα πρέπει να εξετάσουν πολύ σοβαρά τα χαρακτηριστικά των προϊόντων που τους ενδιαφέρουν γιατί είναι πραγματικά κρίμα να επενδύεις πάνω από €1.000 για κάτι που δεν θα υποστηρίζει μια τόσο ανερχόμενη τεχνολογία.

Στην αντίπερα όχθη, οι περισσότερες FulllHD τηλεοράσεις (1080p) δεν έχουν δυνατότητα να παίξουν HVEC/H265 περιεχόμενο και η μόνη λύση είναι είτε να τις συνδέσετε μέσω μιας HDMI θύρας με έναν αποκωδικοποιητή ή να κάνετε μετατροπή της ταινίας στον υπολογιστή σας, από H265 σε H264 format.  Είναι δε μάλλον αδύνατον υπάρχουσες τηλεοράσεις να μπορούν να αναβαθμιστούν στο λογισμικό τους, ώστε να υποστηρίζουν το νέο format.

info  Όσον αφορά τις φωτογραφικές μηχανές

Μέχρι αυτή τη στιγμή, μόνο η Samsung με τις NX1 και NX500 υποστηρίζει H265 video (είναι άξιον απορίας το τι επεξεργαστή φοράνε για να κάνουν real-time encoding τα 4K videos),  κάτι λυπηρό αν αναλογιστούμε πως η εν λόγω εταιρεία μάλλον αποσύρεται από τις φωτογραφικές μηχανές επιδόσεων.

info  Software support στα PC

Τα Windows 10 υποστηρίζουν το H265 format, και από εκεί και πέρα, υπάρχουν αρκετά προγράμματα που διατείνονται πως τα καταφέρνουν. Software όπως ο PotPlayer, ο 5ΚPlayer το VLC ή και codecs που θεωρητικά μπορούν να χρησιμοποιηθούν από οποιοδήποτε Player.

Προκειμένου να καταφέρουμε να δούμε με τα μάτια μας το πόσο το... χθεσινό hardware είναι έτοιμο να ανταπεξέλθει στις απαιτήσεις, χρησιμοποιήσαμε δύο υπολογιστές, έναν με επεξεργαστή AMD PhenomII X4 965 (4core, 3.4GHz) με 4GB RAM, Windows7 32bit μία απλή Radeon HD6450 καθώς και έναν Intel Pentium G3258 (2core 3.2GHz) με  8GB RAM,  Windows7 64bit και μία GTX650. Δοκιμάσαμε 2 codec packs καθώς και με όλους τους γνωστούς players (5KPlayer, PotPlayer, BSPlayer, VLC, Media Player, Media Player Classic). Στην αποκωδικοποίηση ενός 1080p video, οι περισσότεροι κουτσά-στραβά μπορούσαν να δείξουν αποδεκτά αποτελέσματα σε framerate, έστω και με τον Phenox να... τερματίζει τους τέσσερις πυρήνες του:

4.7-cpu-load-on-1080p

Η πραγματική σφαγή πάντως ήταν η προσπάθεια να παιχτεί το H.265 βίντεο με ανάλυση 3840x2160! Εκεί, οι Potplayer, τον BSPlayer και ο Media Player Classic κατάφεραν μετά βίας να παίζουν μερικά καρέ ανά δευτερόλεπτο την ίδια ώρα που το VLC και ο 5Kplayer έδειχναν σταθερές εικόνες. Λόγω πίεσης χρόνου δεν μπορούμε να παρουσιάσουμε νούμερα σχετικά με τις επιδόσεις, μπορούμε να πούμε μόνο πως αυτή τη στιγμή η υποστήριξη τόσο στο software όσο και στο hardware acceleration είναι ελλιπής, αφού προβλήματα αποκωδικοποίησης έχουμε συναντήσει ακόμη και σε μηχανήματα με θεωρητικά ανώτατα χαρακτηριστικά τύπου Core i7-3820 και κάρτες γραφικών τύπου GTX970 και GTX760.

Επίλογος

Θα μπορούσαμε να πούμε πως όπως λ.χ. η HTML5 παραγκωνίζει το Flash πρότυπο, έτσι και το HVEC/H.265 (και οι λοιπές αντίστοιχες προτάσεις) θα παραγκωνίσουν σύντομα το H.264 και όλες τις παλαιότερες γενιές αλγόριθμων συμπίεσης βίντεο. Τα οφέλη είναι πολύ μεγάλα για όλους, τόσο σε ποιότητα όσο και σε οικονομία εύρους/αποθηκευτικού χώρου. Για όσους λοιπόν σκοπεύουν να αγοράσουν σύντομα οποιουδήποτε είδους hardware είτε αυτό είναι κάρτα γραφικών είτε κινητό τηλέφωνο, παιχνιδομηχανή ή τηλεόραση, καλό είναι να κάνουν την μικρή τους έρευνα αγοράς σχετικά με την υποστήριξη αυτής της νέας τεχνολογίας.


 Πηγές: eetimes.com | donmelton.com | x265.com


δημοψήφισμα

Νέα επικαιρότητας: Ποιότητα ή ποσότητα;