Agence web » Actualités du digital » Traitez la vidéo dans le cloud avec Elastic Transcoder d'AWS

Traitez la vidéo dans le cloud avec Elastic Transcoder d'AWS

Shutterstock / phloxii

La bande passante coûte de l'argent et le streaming vidéo depuis CloudFront coûte très cher. Vous pouvez réduire ce coût en transcodant vos vidéos au préalable avec Elastic Transcoder d'AWS, qui traite les vidéos pour réduire la taille des fichiers.

La bande passante coûte de l'argent

Les fichiers vidéo sont assez volumineux aussi équitables que les médias, par rapport aux images et à l'audio. AWS vous facture l'espace de stockage et la bande passante utilisée. Si vous possédez un fichier vidéo de 100 Mo qui est visionné 1 000 fois, cela représente près de 100 Go de bande passante ou 8,50 USD en bande passante en utilisant CloudFront pour diffuser le contenu. Si votre application héberge une vidéo, cela peut être un facteur de coût majeur.

Heureusement, la vidéo n'a pas besoin d'être aussi volumineuse. Grâce à un processus appelé transcodage, vous modifiez le débit binaire de la vidéo. Chaque vidéo est encodée à un certain débit de données; par exemple, un enregistrement peut être codé à 10 Mb / s.

Jetez un œil à cette image agrandie à partir de séquences de test d'une méduse. Celui de gauche est codé à un débit raisonnable de 3 Mo / s, et celui de droite est codé à un débit très élevé de 100 Mo / s. Pouvez-vous faire la différence?

Il y a un peu de distorsion et une vidéo à faible débit peut certainement devenir floue avec beaucoup de mouvement, mais pour la plupart, la vidéo 3 Mo / s semble tout à fait acceptable.

Vous remarquerez cependant la différence de taille: le fichier à débit binaire inférieur occupe 11 Mo pour 30 secondes de métrage, et le fichier à débit binaire supérieur prend 358 Mo. De toute évidence, vous n’utilisez jamais un fichier aussi volumineux en production, mais si vous ne nettoyez pas les entrées utilisateur, vous risquez de rencontrer ce problème. Même une petite diminution de la taille du fichier peut entraîner des économies importantes sur les fichiers téléchargés assez souvent. Pour les grandes entreprises comme Netflix, le transcodage multimédia est une énorme affaire.

Le transcodage est également utilisé pour générer des vidéos de différentes tailles pour différents appareils. Les petits appareils mobiles qui regardent une vidéo en mode portrait n'ont probablement pas besoin d'une vidéo 4K, ni même d'une vidéo 1080p. Les utilisateurs sur des connexions lentes peuvent uniquement être en mesure de diffuser une vidéo 480p. Elastic Transcoder d'AWS peut générer plusieurs fichiers vidéo pour chaque entrée.

C'est exactement ce que fait YouTube chaque fois que vous mettez en ligne une vidéo: votre vidéo est traitée et transcodée pour être diffusée sur plusieurs plates-formes (et si vous êtes particulièrement en avance sur une vidéo YouTube, vous remarquerez peut-être que la qualité ne dépasse pas 480p, car le transcodage 1080p n'est pas encore terminé).

Comment utiliser Elastic Transcoder d'AWS

Rendez-vous sur la console Elastic Transcoder. Vous souhaiterez créer un nouveau pipeline, une file d'attente qui gère les travaux de transcodage. Les pipelines utilisent des compartiments S3 pour l'entrée et la sortie. Vous souhaiterez donc créer deux nouveaux compartiments à partir de S3 Management Console.

Donnez un nom à votre pipeline, puis sélectionnez votre compartiment d'entrée:

Vous voudrez vous assurer que votre bucket et votre pipeline se trouvent dans la même région AWS, ou vous serez facturé pour les données traitées et le transcodage sera plus lent. Sélectionnez le compartiment de sortie et un compartiment à utiliser pour les miniatures. (Cela peut être le compartiment de sortie.)

Créez votre bucket et notez l'ID de pipeline:

En fait, l'utilisation d'Elastic Transcoder est un processus étrangement manuel. Vous devez créer un nouveau travail à partir de la console pour chaque fichier et le mettre en file d'attente avec les paramètres appropriés. Heureusement, vous pouvez automatiser l'ensemble du processus avec une fonction Lambda qui s'exécutera chaque fois qu'un nouveau fichier vidéo est téléchargé sur S3.

Rendez-vous sur la console Lambda et créez une nouvelle fonction. Choisissez NodeJS 10 comme runtime et collez ce script, avec l'aimable autorisation de Swapnil Pawar sur Medium.

Vous souhaiterez modifier les valeurs de pipelineId et bucket, en les plaçant entre guillemets comme ceci:

Vous voudrez également modifier PresetId au préréglage que vous souhaitez transcoder, que vous pouvez trouver dans AWS Docs. Vous pouvez créer le vôtre à partir de la console du transcodeur si ceux par défaut ne sont pas suffisants. Si vous souhaitez mettre en file d'attente plusieurs transcodes pour un seul fichier, ajoutez d'autres éléments à ce tableau:

Une fois que vous avez tout rempli, ajoutez un déclencheur pour que votre fonction Lambda s'exécute chaque fois qu'un objet est créé dans votre bucket d'entrée:

Sous le rôle d'exécution, assurez-vous que le rôle a accès à Elastic Transcoder.

Vous pouvez utiliser cet exemple de séquence de méduses pour tester votre fonction. Téléchargez un fichier à débit binaire moyen (30 Mo / s environ) et téléchargez-le dans votre bucket d'entrée. Si cela réussit, vous devriez voir un nouveau travail en file d'attente dans l'onglet «Travaux» de la console Elastic Transcoder, et vous devriez voir un nouveau dossier «vidéos» dans votre compartiment de sortie contenant les fichiers produits. Le préréglage «Generic 1080p» a pris une vidéo de 112 Mo à 30 Mo / s et l'a encodée à seulement 18 Mo (environ 5 Mo / s):

Si votre fonction Lambda échoue, vous pouvez afficher les journaux sous l'onglet "Surveillance". Vous pouvez également créer un scénario de test pour tester la fonction sans rien télécharger sur S3, bien que le travail envoyé au transcodeur soit superposé.

Ce script, en particulier, enregistrera les fichiers de sortie avec exactement le même nom que l'entrée, bien que vous puissiez ajouter un préfixe si vous le souhaitez. Le transcodeur fonctionne assez rapidement. Vous pourrez donc accéder à votre vidéo dans le bucket de sortie peu de temps après la mise en ligne.

★★★★★