Notre utilisation de Elemental MediaConvert

Mis à jour : févr 13



Elemental MediaConvert est en effet un nouveau service de AWS qui à vu le jour au début de l'année 2018.


Notre problématique était assez simple.


Pouvoir convertir tout type de fichier vidéo, quel qu'en soit le codec d'entrée en un format compatible streaming HLS et DASH MPEG.

Pouvoir produire au moins 12 formats différents de vidéo en fonction des capacités de lecture du client, et de la rapidité de la connexion


Il faut savoir qu'avant que MediaConvert soit disponible, et notamment que sa feature CMAF n'existe nous nous sommes heurtés à plusieurs problèmes.


Comme nous voulions toujours conserver notre approche serverless, nous avions dors et déjà écarté l'option la plus classique qui consistait à faire tourner des clusters de machines exécutant FFMPEG ou toute autre librairie de transcodage. Le scaling d'une telle solution aurait été plus complexe, les mises à jour chronophages, et le coût de standby assez important.


De plus, nous voulions profiter des avantages du HEVC (H265), nouveau codec vidéo qui réduit par 1,8 la taille des blocs vidéos à transférer. Cela dans l'objectif de réduire notre facture CloudFront et S3.


Notre cible de lecture pour le HEVC se tourne principalement du coté des appareils Apple, qui se sont vus octroyer le support natif de ce codec il y à quelques années. Cependant un petit détail nous à fait perdre un temps précieux : En effet, Apple n'accepte qu'un seul type d'empaquetage du HEVC sur ses appareils. Le HVC1 est le seul format accepté et il n'est pas possible de contourner ce bloquage.


Avant l'arrivée de MediaConvert, la plupart des services d'encodage de contenu venaient tout juste d'ajouter le HEVC à leur panel de codecs disponibles et aucun d'entre eux ne proposaient le packaging type HVC1, mais seulement HEV1.


Par ailleurs la plupart d'entre eux ne connaissaient même pas la différence entre les deux formats, et il fallait donc s'adonner à de longues explications via les lignes de support de leur service.

Seule une société était capable d'encoder dans le bon format encoding.com . C'est donc avec eux que nous avons commencé nos essais. Mais la structure de coûts étaient mal proportionnée pour une startup. Obligation d'achetée des serveur virtuels réservés, sous peine d'avoir recours à un encodage partagé, et très lent.


Peu de temps après, AWS racheta Elemental Technologies, Inc.. Vient quelques mois après la sortie de Elemental MediaConvert l'ajout de plusieurs fonctionnalités clés, celle que le support du packaging CMAF avec la possibilité de choisir entre les tags HEV1 ou HVC1.


Egalement, une tarification à la minute nous permettait de revenir sur un modèle Pay As You Go, qui était bien plus adapté à notre situation.




Un autre problème subsistait, le temps de transcodage.


En effet, lors de l'utilisation d'un réseau social, les utilisateurs on besoin d'avoir un sentiment d'instantanéité et ne peuvent pas attendre que de longues operations techniques se terminent.

Pour pouvoir bénéficier d'une qualité vidéo optimale en toutes situations (3G, 4G, réseau wifi public instable, fibre optique), nous avons plusieurs formats vidéos correspondants à chacune des situations.


L'une des techniques qui permet d'obtenir une meilleure qualité vidéo en ayant un faible débit est l'encodage multi-pass. Pendant le processus, l'encodeur passe plusieurs fois sur la même vidéo, afin d'affiner encore et encore son approximation de l'original, pour le faible faible débit. Néanmoins ce processus peut prendre jusqu'à 15 minutes pour une vidéo de 70 secondes, car vous devez transcoder les 6 formats.


Il n'était donc pas possible de faire attendre 15 minutes à un utilisateur pour que son contenu soit visible.


Nous avons donc recours à un encodage en deux phases.


La premiere phase va transcoder la vidéo en une seule passe et un seul format. Créer les manifestes HLS et MPEG DASH, et la rentre disponible en moins de 20 secondes en moyenne. Ce qui permet à l'utilisateur d'avoir un aperçu rapide de son contenu, dans une qualité convenable.


La seconde phase, qui démarre en même temps que la première, va transcoder la vidéo en 6 formats, et en multi-pass. Quand le transcodage est terminé, une transition automatique d'opère automatiquement vers la nouvelle version multi-pass, dès la prochaine requête. La version single pass est conservée malgré tout pour éviter les erreurs 404 pendant la transition.




MediaConvert nous permet également de faire plusieurs opérations intéressantes pendant ce transcodage.


  • Génération des thumbnails en différentes tailles

  • Normalisation de l'audio

  • Réduction du bruit vidéo

  • Réductions des blocks MPEG

  • Conversion couleur REC.709 SDR pour les vidéos transférées en HDR

  • Downgrade du frame-rate à ≤ 30fps pour les vidéos supérieures à 30fps (seulement pour faible bitrate de sortie)