Ο καλύτερος τρόπος για να διαχειριστείτε τα βίντεο σε κλίμακα

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

Εισαγωγή της εταιρείας μας -

Είμαστε μια πλατφόρμα από 3 lakh επαληθευμένους γιατρούς, μεγαλύτερους στη χώρα. Ως ταχέως μεταβαλλόμενη εταιρεία, πειραματίζουμε πολύ με το προϊόν και παράλληλα φροντίζουμε να παρέχουμε ποιοτικό προϊόν για όλους. Πρόσφατα, επιτρέψαμε στους χρήστες μας να ανεβάζουν βίντεο από χειρουργικές επεμβάσεις κ.λπ., να μοιράζονται τα ευρήματά τους και να αναζητούν προτάσεις από τους συναδέλφους τους γιατρούς.

Οι περισσότεροι από τους χρήστες μας, εν κινήσει, έχουν ελάχιστη υποδοχή σε ταχύτερες ταχύτητες στο διαδίκτυο και αυτή είναι μια πρόκληση όταν παρέχουμε βαρύ περιεχόμενο όπως τα βίντεο.

Διαπιστώσαμε ότι είναι προφανές να χρησιμοποιήσουμε το πρωτόκολλο HLS για την παράδοση βίντεο, καθώς υποστηρίζεται ευρέως, αναπτύχθηκε από την Apple και χρησιμοποιείται από πολλές μεγάλες εταιρείες όπως το Facebook. HLS σημαίνει HTTP Live Streaming. Πρόκειται για ένα πρωτόκολλο ροής πολυμέσων για την παροχή περιεχομένου βίντεο και ήχου. Ένα βίντεο mp4 χωρίζεται σε μικρά τμήματα συνήθως 10 δευτερολέπτων και για κάθε τμήμα δημιουργούνται επίσης πολλά τμήματα ποιότητας βίντεο τα οποία μπορούν να μεταφορτωθούν για αναπαραγωγή με βάση το διαθέσιμο εύρος ζώνης διαδικτύου.

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

Ακολουθούν οι αναλύσεις που χρησιμοποιήσαμε για την περίπτωση χρήσης μας εκτός από την αρχική ανάλυση του βίντεο -

Αναλύσεις βίντεο που θα δημιουργηθούν

Η πρόκληση ήταν να μετατραπούν τα βίντεο που έχουν μεταφορτωθεί στην απαιτούμενη μορφή καθώς και να δημιουργηθεί η μικρογραφία για το σύμβολο κράτησης θέσης του βίντεο. Υπάρχουν πολλοί πάροχοι υπηρεσιών που παρέχουν μετασχηματισμό βίντεο και παράδοση περιεχομένου, αλλά το κύριο πρόβλημα είναι ότι είναι προσιτά μέχρι ένα συγκεκριμένο σημείο και με την ανάπτυξη της εταιρείας χρειάζεστε μια λύση η οποία δεν είναι επιβάρυνση για την τσέπη σας. Το AWS MediaConvert και το S3 είναι τα εργαλεία που επιλέγουμε να μετατρέψουμε και να παραδώσουμε τα βίντεό μας. Χρησιμοποιώντας τη λύση που συζητήσαμε παρακάτω, είμαστε σε θέση να μειώσουμε το κόστος μας κατά 90 τοις εκατό, το οποίο είναι αρκετά σημαντικό για μια εταιρεία οποιασδήποτε κλίμακας. Ακολουθήστε μέσω του άρθρου εάν θέλετε να μάθετε πώς έχουμε μηδενιστεί στη λύση.

Αρχική προσέγγιση

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

Η ανάπτυξη ήταν ταχύτερη, καθώς δεν χρειάζεται να ανησυχούμε για τον μετασχηματισμό. Κάποιος πρέπει να φορτώσει το βίντεο, να επιλέξει τη μετατροπή που χρειάζεται και η Cloudinary θα κάνει τα υπόλοιπα. Αρχικά, ο Cloudinary ήταν καλά μέσα στον προϋπολογισμό μας, αλλά καθώς το χαρακτηριστικό άρχισε να κερδίζει περισσότερη έλξη, περισσότεροι χρήστες άρχισαν να ανεβάζουν βίντεο. Αυτή η αύξηση αύξησε το ποσό που δαπανούσαμε για το Cloudinary και ήρθε η ώρα να ψάξουμε για άλλες επιλογές.

Τα πειράματά μας

Πρώτον, δοκιμάσαμε τη διάσημη βιβλιοθήκη ανοιχτού κώδικα - ffmpeg η οποία είναι ικανή να κάνει τον μετασχηματισμό βίντεο που χρειαζόμασταν. Είχαμε δύο επιλογές για τη χρήση της βιβλιοθήκης ffmpeg - χρησιμοποιήστε τις λειτουργίες Cloud ή χρησιμοποιήστε μία από τις ήδη εκτελούμενες υποδείξεις VM στο GCP (Google Cloud Platform).

Δεδομένου ότι η όλη διαδικασία λειτουργεί με ένα μοντέλο κατ 'απαίτηση, η τελευταία επιλογή απορρίφθηκε. Οι λειτουργίες σύννεφων βασίζονται στο μοντέλο υπολογιστών-κατ 'απαίτηση, πράγμα που σημαίνει ότι θα λάβουμε τους πόρους, όποτε χρειαστεί, χωρίς να επηρεάσουμε τις άλλες υπηρεσίες μας. Καθώς είναι στη διάθεσή μας, δεν χρειάζεται να πληρώσουμε το κόστος του διακομιστή όταν είναι αδρανές.

Οι λειτουργίες σύννεφων είναι πραγματικά εύκολο στη χρήση και δίνουν τη δυνατότητα να γράψουμε τον κώδικα σε δύο πιο δημοφιλείς γλώσσες - κόμβο και python. Αποφασίσαμε να πάμε με το python καθώς είμαστε άνετοι με το πρότυπο αφού η στοίβα μας είναι στο python. Η εγκατάσταση των εξαρτήσεων είναι πολύ εύκολη, απλά πρέπει να την αναφέρετε στο αρχείο requirements.txt και έχετε ρυθμίσει.

Πήραμε το σενάριο να λειτουργεί για λειτουργία σύννεφου όπου κατεβάζουμε πρώτα το βίντεο από το cloud storage, το μετατρέπουμε στην απαιτούμενη μορφή και το μεταφέρουμε πίσω στο cloud storage για streaming.

Αλλά υπήρχε μια αλίευση. Αφήσαμε τους χρήστες μας να ανεβάσουν βίντεο έως και 100 MB και για να χειριστεί το βίντεο αυτής της συνάρτησης σύννεφων μεγέθους χρειάστηκε πολύς χρόνος και τελικά τερματίζεται πριν ολοκληρωθεί ολόκληρη η διαδικασία λόγω του χρονικού ορίου (540 δευτερόλεπτα). Στην υπεράσπισή μας, δεν έχουμε σκεφτεί αυτό το σενάριο νωρίτερα.

Μετά από να εξερευνήσουν άλλες επιλογές και πολλές έρευνες, το AWS MediaConvert φαινόταν πολλά υποσχόμενο. Η συνεργασία με το MediaConvert ήταν δύσκολη, καθώς δίνει πολλές επιλογές για να προσαρμόσετε τον μετασχηματισμό σας και μπορεί κανείς εύκολα να χαθεί σε αυτή την κατάσταση (χαλασμένος από την επιλογή). Αλλά αφού κοιτάξαμε για κάποιο χρονικό διάστημα πήραμε το πρότυπο που απαιτείται για τον επιθυμητό μετασχηματισμό μας. (επισυνάψτε το πρότυπο)

Ολόκληρη η ροή μας φαινόταν κάτι σαν -

Μεταφορτώνουμε ένα βίντεο στον κάδο S3 που με τη σειρά του ενεργοποιεί μια λειτουργία Lambda. Στο λάμδα καταλαβαίνουμε τις παραμέτρους που απαιτούνται ως είσοδο για το MediaConvert χρησιμοποιώντας μόνο το ffmpeg. Αφού υπολογίσουμε όλες τις παραμέτρους, υποβάλλουμε ένα αίτημα στο AWS MediaConvert για να μετατρέψουμε το βίντεό μας. Για να λάβετε ειδοποίηση σχετικά με την ολοκλήρωση του μετασχηματισμού, μπορείτε να δημιουργήσετε ένα συμβάν ρολογιού σύννεφο της αλλαγής κατάστασης εργασίας που υποβάλατε στο MediaConvert από την 'progressing' στην 'ολοκλήρωση' η οποία με τη σειρά της θα ενεργοποιήσει μια λειτουργία λάμδα. Η ενεργοποιημένη λειτουργία lambda μπορεί είτε να κάνει κλήση api είτε να κάνει μια ενημέρωση db με βάση τη σκοπιμότητα του έργου σας.

Εν συντομία :

Η λύση AWS δούλευε σαν γοητεία και ήταν πραγματικά γρήγορη. Αυτό μπορεί να μοιάζει με πολλή δουλειά, αλλά αξίζει να το κάνετε αν χρειαστεί να κάνετε κλίμακα.

Οφέλη από τη χρήση αυτής της λύσης -

  • Χρησιμοποιούμε το S3 για να αποθηκεύουμε και να παραδίδουμε το περιεχόμενο πολυμέσων μας, το οποίο είναι πολύ κλιμακωτό και οικονομικό.
  • Το AWS MediaConvert είναι πραγματικά γρήγορο και παρέχει τη λειτουργικότητα για τη διατήρηση πολλών ουρών για την υποβολή εργασιών για μετασχηματισμό. Έτσι, δεν χρειάζεται να ανησυχείτε για ξαφνικό άλμα σε αιτήματα χειρισμού βίντεο. Επίσης, η τιμολόγηση είναι πραγματικά οικονομική, δεν υπάρχουν μηνιαίες χρεώσεις και πρέπει να πληρώσετε μόνο για τις υπηρεσίες που χρησιμοποιήσατε.
  • Η AWS Lambda βασίζεται στον υπολογισμό κατ 'απαίτηση, τον οποίο έχουμε ήδη συζητήσει παραπάνω. Εκτός από αυτό AWS σας δίνει κάποια ελεύθερη επίκληση lambda και CPU χρόνο Λάμδα λειτουργία το μήνα που είναι πραγματικά μεγάλη και ακόμη και για τη χρήση πέρα ​​από την ελεύθερη τιμολόγηση δεν βάζει βάρος στην τσέπη σας.

Προβλήματα που αντιμετωπίσατε κατά τη διάρκεια της ανάπτυξης του AWS:

  • Να θυμάστε πάντα ότι η AWS παρέχει υπηρεσίες βασισμένες στις περιοχές, εκτός από μερικούς, όπως το S3 που είναι διαθέσιμο σε παγκόσμιο επίπεδο. Χρησιμοποιήστε υπηρεσίες στην ίδια περιοχή διαφορετικά ενδέχεται να μην είστε σε θέση να πιάσετε συμβάντα ή να ενεργοποιήσετε λειτουργίες lambda.
  • Δώστε την απαραίτητη άδεια στο ρόλο IAM σας για τις υπηρεσίες που χρησιμοποιείτε.
  • Όπως αναφέρθηκε παραπάνω, η μεταφόρτωση βίντεο στον κάδο S3 ενεργοποιεί μια λειτουργία lambda όπου συμπληρώνουμε τις απαραίτητες λεπτομέρειες μετασχηματισμού, όπως η ανάλυση των βίντεο που προκύπτουν, το ρυθμό bit κ.λπ. και για την τιμή αυτή πρέπει να βρείτε τα μεταδεδομένα του βίντεο που ανεβάζετε όπως το ύψος , πλάτος και bitrate. Πρέπει να χρησιμοποιήσετε κάποια βιβλιοθήκη επεξεργασίας βίντεο, όπως ffmpeg, για να αποκτήσετε αυτή την τιμή η οποία δεν είναι προφορτωμένη στο δοχείο που λειτουργεί το lambda, καθώς το lambda τρέχει σε ένα ή περισσότερα δοχεία που δημιουργούνται και διαγράφονται κατόπιν αιτήσεως.
  • Σε αντίθεση με τις Λειτουργίες Google Cloud όπου μπορείτε απλά να προσθέσετε το όνομα της βιβλιοθήκης στο requirements.txt και θα χειριστούν τα υπόλοιπα, για το AWS lambda πρέπει να δημιουργήσετε ένα αρχείο zip όλων των βιβλιοθηκών και των δυαδικών αρχείων που χρησιμοποιούνται στη λειτουργία λάμδα. Αφού κάναμε κάποια έρευνα, ανακαλύψαμε ότι μπορείτε να προσθέσετε δυαδικά αρχεία του ffmpeg στο φάκελο / tmp και να τα χρησιμοποιήσετε στη λειτουργία σας. Για βήματα για να συμπεριλάβετε το ffmpeg στην διαδρομή σας επισκεφθείτε εδώ και για να δημιουργήσετε aws πακέτο ανάπτυξης λάμβδα επισκεφθείτε εδώ.
  • Κατά τη διάρκεια των δοκιμών διαπιστώσαμε ότι τα βίντεο που τραβήχτηκαν σε συσκευές iOS περιστρέφονταν από πορτραίτο σε τοπίο μετά από μετασχηματισμό (συζήτηση StackOverflow και φόρουμ AWS). Ο λόγος για αυτό είναι η λήψη βίντεο σε συσκευή iOS αποθηκεύτηκε αρχικά σε λειτουργία οριζόντιου προσανατολισμού με μια σημαία σε δεδομένα μεταδεδομένων βίντεο, η οποία επιτρέπει στη συσκευή αναπαραγωγής να περιστρέφει βίντεο κατά την αναπαραγωγή. Κατά την εκτέλεση του μετασχηματισμού, το αναγνωριστικό περιστροφής χάθηκε και λόγω του ότι το βίντεο αναπαράγεται σε λειτουργία οριζόντιου προσανατολισμού και η εμφάνιση του αρέσει να περιστρέφεται.
  • Για να το ξεπεράσουμε, εντοπίσαμε πρώτα αυτά τα βίντεο χρησιμοποιώντας το ffmpeg. Αυτά τα βίντεο έχουν την τιμή "περιστροφής" στο "Matrix Display" των μεταδεδομένων βίντεο που μπορείτε να αποκτήσετε χρησιμοποιώντας το ffmpeg. Στη συνέχεια περιστρέψτε αυτά τα βίντεο με βάση την περιστροφή που δίνεται και τώρα έχετε το περιστρεφόμενο βίντεο το οποίο μπορεί εύκολα να μετατραπεί χρησιμοποιώντας την παραπάνω τεχνική.

Αν βρείτε αυτό το άρθρο χρήσιμο, τότε πατήστε το πλήκτρο πιέζοντας όσες φορές θέλετε. Μη διστάσετε να επικοινωνήσετε εάν χρειάζεστε βοήθεια σε οποιοδήποτε από τα παραπάνω βήματα.