Guide: Κωδικοποίηση βίντεο (Quick Sync/CUDA/OCL)

Περιεχόμενα Άρθρου



Τι εννοούμε όταν λέμε «συμπίεση του βίντεο»;
Εννοούμε την μείωση του αρχείου της πηγής, απλά αφαιρώντας περιττά στοιχεία. Το αρχείο δηλαδή περνά από μια σειρά ειδικών αλγορίθμων που δημιουργούν ένα νέο αρχείο με μικρότερο μέγεθος, διαδικασία γνωστή και ως encoding. Για να αναπαράξουμε το αρχείο στον υπολογιστή ή σε κάποιο άλλο μέσο, ακολουθείται μια αντίστροφη διαδικασία γνωστή ως decoding. Εδώ να θυμίσουμε πως αρκετές κάρτες γραφικών έρχονται πλέον με hardware decoders/encoders όπως το UVD (Unified Video Decoder) και VCE (Video Codec Engine HD7900+) για την AMD και το PureVideo για την nVidia. Όλοι οι παραπάνω encoders αποκωδικοποιούν περιεχόμενο H.264/MPEG-4 AVC και χωρίς αυτούς τους encoders δεν θα υπήρχε ο εν λόγω οδηγός! Εδώ μπαίνει ο codec που στην ουσία είναι μια συλλογή από αλγορίθμους για αποκωδικοποίηση και κωδικοποίηση των δεδομένων (encoder/decoder) και πρέπει να είναι απαραίτητα εγκατεστημένος στο σύστημα όπου θα γίνει η διαδικασία. Αρκετά προγράμματα όπως ο Media Player Classic προσφέρουν μαζί μερικούς codecs και έτσι δεν χρειάζεται να εγκαταστήσετε άλλους. Ο MPC επίσης είναι ένας από τους πληρέστερους Players στο διαδίκτυο και πολλοί προγραμματιστές συνεχίζουν να τον αναπτύσσουν. Υπάρχει φυσικά και σε portable μορφή και μπορείτε να την κατεβάσετε από εδώ.


Λίγα λόγια για τους τύπους αρχείων
 
  • H.264 - MPEG4 AVC Το εν λόγω format είναι σίγουρα γνωστό στους περισσότερους χρήστες υπολογιστών από τα αρχεία video που κυκλοφορούν ευρέως στο διαδίκτυο αλλά και επειδή είναι το πιο διαδεδομένο format που χρησιμοποιείται σε συσκευές του εμπορίου ενώ τρανταχτό παράδειγμα είναι η Ελληνική επίγεια ψηφιακή τηλεόραση. Ο λόγος που χρησιμοποιείται είναι απλός, το H.264 προσφέρει αρκετά καλό λόγο συμπίεσης/ποιότητας και έτσι διατηρεί ένα σχετικά μικρό μέγεθος στα αρχεία του (χαμηλό bitrate – καλή ποιότητα – μικρό μέγεθος) με την ποιότητα δηλαδή να κυμαίνεται σε υψηλά επίπεδα.
  • AVI – (Audio Video Interleave) Είναι δημιούργημα της Microsoft πίσω στο μακρινό 1992. Μπορεί να ενσωματώσει βίντεο και ήχο ενώ μπορούν να αποθηκευτούν αρκετά streams ήχου, αν και δεν χρησιμοποιούνται αρκετά σήμερα.mp4 – Ένα φορμάτ που βασίζεται στο QuickTime της Apple αλλά με μεγαλύτερη υποστήριξη. Το συγκεκριμένο format μπορεί να στεγάσει και AAC audio και είναι γενικά καλύτερο από το AVI.
  • m4v – Φυσικά δεν θα αφήναμε έξω την πρόταση της Apple στον τομέα των multimedia. Το m4v είναι το φορμάτ-στάνταρ στις iOS συσκευές της εταιρείας.


    Σύστημα δοκιμής και προγράμματα που χρησιμοποιήθηκαν

    Τα εργαλεία που θα χρησιμοποιήσουμε είναι τα: MediaCoder (δωρεάν), Sony Vegas Pro 12 (599$ - Trial), Media Play Classic – Home Cinema (δωρεάν) και ArcSoft MediaConverter 8 (επί πληρωμή). 
 
 
 
Μεθοδολογία
Σκοπός μας είναι να δείξουμε τις διαφορές των παραγόμενων βίντεο στα οποία χρησιμοποιήθηκε η κάρτα γραφικών μόνο, ή ο επεξεργαστής μόνο για την κωδικοποίησή τους (encoding). Για τον λόγο αυτό με τη βοήθεια του IrfanView καταγράψαμε σε υψηλή ποιότητα screenshots από τα ίδια (ή τα πιο "γειτονικά") frames για την καλύτερη σύγκριση. Το πρόγραμμα MediaCoder το χρησιμοποιήσαμε για την κωδικοποίηση και των 3 βίντεο της δοκιμής.

Τα βίντεο που χρησιμοποιήθηκαν είναι το trailer της ταινίας 2 Guns σε ανάλυση 1080p το οποίο μετατρέψαμε σε 720p με τη βοήθεια του MediaCoder και στη συνέχεια με του Sony Vegas Pro 12, έχοντας τις ίδιες ακριβώς ρυθμίσεις εξαγωγής. Ακολούθησε το sample video “birds” ανάλυσης 1080p και μπορείτε να το κατεβάσετε δωρεάν εδώ. Τέλος χρησιμοποιήσαμε την «ανάποδη» τεχνική και πραγματοποιήσαμε upscale ενός βίντεο από τα 720p στα 1080p παρατηρώντας τις αλλαγές στην τελική ποιότητα. Το βίντεο αυτό ήταν ένα δείγμα της NASA (Radiation Belt Storm Probes Launch) το οποίο μπορείτε να κατεβάσετε εδώ.

Τα properties των βίντεο ήταν:

Birds Sample: 1080p, MKV (AVC High@4.1), 40Mbps, No Audio, 23.9 FPS
2 Guns Trailer: 1080p, MOV (MPEG-4), 9.5Mbps, AVC (Main@L4.0), AAC (128 Kbps, 44.1 KHz), 23.9 FPS
NASA Video Sample: 720p, MPEG-4, 6Mbps, AVC (Main @3.2), AAC (192 Kbps, 48 KHz), 24 FPS



Τεχνολογίες - Hardware Encoders
Intel Quick Sync
Η τεχνολογία της Intel αξιοποιεί GPUs της εταιρείας, συγκεκριμένα αυτές που βρίσκονται τοποθετημένες στους επεξεργαστές Sandy Bridge, Ivy Bridge και τελευταία Haswell, ενώ αναμένεται να συνεχιστεί και στις επόμενες γενιές επεξεργαστών της. Η δουλειά του είναι απλή, μέσω των hardware h.264 encoders προσφέρει αρκετές φορές ταχύτερη κωδικοποίηση του βίντεο σε αντίθεση με τα «λειψά» επεξεργαστικά threads ενός επεξεργαστή.

nVidia CUDA
Η πρόταση της nVidia δίνει θεωρητικά τα γρηγορότερα αποτελέσματα καθώς οι κάρτες της ξεχειλίζουν από performance, ενώ εξοπλίζονται με πολλαπλούς πυρήνες. Η τεχνολογία δεν διαφέρει από αυτή της Intel. Έτσι κι εδώ βρίσκουμε hardware κωδικοποιητές οι οποίοι επεξεργάζονται το βίντεο ταχύτατα. Η τεχνολογία δεν σταματά εκεί καθώς η nVidia έχει προσδώσει έναν διαφορετικό χαρακτήρα. Μπορείτε επίσης να επιταχύνετε την διαδικασία debugging ενός προγράμματος στις γλώσσες προγραμματισμού που υποστηρίζει.

OpenCL (AMD – nVidia - Intel)
Η κοινή γραμμή για όλες τις εταιρείες [nVidia, Intel, AMD]. Η AMD τα τελευταία χρόνια έχει υλοποιήσει στις τελευταίες κάρτες γραφικών της (HD 5000 series και νεότερες) το OpenCL πρότυπο το οποίο δείχνει τον heterogeneous χαρακτήρα του, κάτι που πιστεύει η AMD αρκετά ειδικά με την έλευση των Kaveri APUs. Το OpenCL έρχεται από τα άδυτα της Apple όταν από τις πρώτες εκδόσεις του, απορροφήθηκε από την AMD.

Τα περισσότερα προγράμματα της αγοράς, είτε είναι δωρεάν είτε επί πληρωμή, δεν δίνουν τη δυνατότητα να χρησιμοποιήσετε την AMD κάρτα γραφικών σας για να επιταχύνεται τη διαδικασία. Αυτό οφείλεται κυρίως στην μικρή διάδοση που έχει ο hardware encoder της AMD σε σχέση με την nVidia και ακόμη πιο πρόσφατα, στο QuickSync της Intel. Αυτή τη στιγμή ένα από τα (paid) προγράμματα που υποστηρίζουν AMD κάρτες είναι το MediaConverter της ArcSoft ενώ εναλλακτικά μπορείτε να χρησιμοποιήσετε τον transcoder από τον Catalyst Control Center.


amd, intel, gpu, encoding, video, codec, mp4, avi, filetype, mediacoder

yanni

Members
2014-07-14T23:03:53Z

Πολύ μυγιάγγιχτο πρόγραμμα το Mediacoder. Με το παραμικρό σου πετάει πρόβλημα στο color space και τα cuda encoder parameters. Ο λόγος που το σούταρα στο παρελθόν και μόλις θυμήθηκα. Παλιά υπήρχε μια έκδοση αποκλειστικά για CUDA encoding που δούλευε καλά, αλλά την καταργήσανε, την ενσωμάτωσαν στο main πρόγραμμα και τα κάνανε μαντάρα.

George_o/c

Members
2014-07-15T04:38:02Z

Συμπέρασμα από AMD Fanboy: Καλά μιλάμε ο 4770Κ είναι και πολύ αργός :hehe:

Ωραίος Λουκά, το διάβασα χθες, keep it up ρει :T:

yanni

Members
2014-07-15T06:04:17Z

Εμένα πάλι μου κάνει εντύπωση που ο cpu είναι τόσο αργός σε σχέση με τις κάρτες γραφικών. Θα τον περίμενα πολύ ποιο γρήγορο και αναρωτιέμαι αν αξιοποιεί σωστά όλους τους πυρήνες το πρόγραμμα.

Διαβάστε περισσότερα στο Φόρουμ...