CONCATÉNATION DE VIDÉOS AVEC DES MANIFESTES HLS

Photo de bc_campaign_editor_2
bc_campaign_editor_2
blog-placeholder image

Cet article se concentre sur la diffusion en direct par HTTP (HLS), mais les concepts de base sont également valables pour d'autres protocoles de diffusion en continu basés sur HTTP. Un examen approfondi du protocole HLS dépasse le cadre de cet article, mais une mine d'informations est disponible en ligne, y compris la norme publiée : HTTP Live Streaming.

La concaténation et l'ancienne méthode

Le contenu est synonyme de valeur. Dans le monde de la vidéo, une façon de créer plus de valeur est de prendre une seule vidéo et de la mélanger à d'autres vidéos pour créer un nouveau contenu. Cela se fait souvent par concaténation, ou par la possibilité d'assembler plusieurs vidéos, ce qui représente une forme d'édition de base. Ajoutez à cela la création de clips à l'aide de listes de montage et vous obtenez deux des fonctions les plus élémentaires d'un éditeur non linéaire.

Aussi prometteuse que la concaténation puisse paraître, elle peut également représenter un fardeau pour l'infrastructure et les opérations. Imaginez un portail de vidéos sociales. En fonction des appareils ciblés, il peut y avoir entre une poignée et plusieurs dizaines de formats de sortie par vidéo. S'il décide de concaténer plusieurs vidéos pour augmenter la valeur de sa bibliothèque, il constatera également une augmentation massive des coûts de stockage et de la complexité de la gestion des actifs. Chaque fois qu'une nouvelle combinaison de vidéos est créée, une série d'actifs fixes est générée et doit être stockée.

HTTP Live Streaming et le fichier Manifest

L'introduction de protocoles de diffusion en continu basés sur le protocole HTTP a créé un paradigme entièrement nouveau pour la création d'expériences de visionnage dynamiques. Traditionnellement, la seule option pour fournir de multiples combinaisons de clips à partir d'un seul élément de contenu était le montage, ce qui signifie la création d'actifs fixes. Avec une technologie telle que HLS - puisque l'élément lisible n'est plus un fichier vidéo, mais un simple fichier texte - modifier une vidéo revient à modifier un document dans un traitement de texte.

Pour une plateforme vidéo, il y a deux façons de traiter le fichier manifeste HLS m3u8. Plus simplement, le fichier m3u8 peut être traité comme une ressource discrète et lisible. Dans ce modèle, le fichier m3u8 est stocké sur le serveur d'origine avec les fichiers TS segmentés et transmis aux appareils. Le résultat est simple et rapide à mettre en œuvre, mais le fichier m3u8 ne peut être modifié que par un processus manuel.

En revanche, en traitant le manifeste comme un élément généré dynamiquement, il devient possible de proposer aux téléspectateurs une combinaison virtuellement illimitée de clips. Dans ce modèle, le m3u8 est généré à la volée, il ne reste donc pas sur le serveur, mais est créé et livré à chaque fois qu'il est demandé

Génération dynamique de manifestes

Qu'est-ce qu'un fichier manifeste ? Il s'agit essentiellement d'une combinaison de métadonnées et de liens vers des segments de vidéo.

  • Vidéo exemplaire A
  • #EXTM3U
  • #EXT-X-MEDIA-SEQUENCE:0
  • #EXT-X-TARGETDURATION:10
  • #EXTINF:10,
  • Exemplaire_A_segment-01.ts
  • #EXTINF:10,
  • Exemplaire_A_segment-02.ts

Le m3u8 ci-dessus comporte deux segments vidéo de 10 secondes chacun, de sorte que la durée totale de la vidéo est de 20 secondes. La vidéo exemplaire A, qui est d'ailleurs une excellente vidéo, dure 20 secondes. Imaginons maintenant que nous ayons également :

  • Vidéo exemplaire B
  • #EXTM3U
  • #EXT-X-MEDIA-SEQUENCE:0
  • #EXT-X-TARGETDURATION:10
  • #EXTINF:10,
  • Exemplaire_B_segment-01.ts
  • #EXTINF:10,
  • Exemplaire_B_segment-02.ts

Disons également que nous savons qu'un téléspectateur particulier serait ravi de regarder une combinaison des deux vidéos, la vidéo B passant en premier et la vidéo A en second :

  • Superbe vidéo
  • #EXTM3U
  • #EXT-X-MEDIA-SEQUENCE:0
  • #EXT-X-TARGETDURATION:10
  • #EXTINF:10,
  • Exemplaire_B_segment-01.ts
  • #EXTINF:10,
  • Exemplaire_B_segment-02.ts
  • #EXT-X-DISCONTINUITÉ
  • #EXTINF:10,
  • Exemplaire_A_segment-01.ts
  • #EXTINF:10,
  • Exemplaire_A_segment-02.ts

Maintenant, instantanément, sans créer d'actifs permanents devant être stockés à l'origine, et sans avoir fait appel à un éditeur pour créer un nouvel actif, nous avons généré une nouvelle vidéo pour l'utilisateur qui commence par la vidéo B suivie de la vidéo A. Comme si ce n'était pas assez cool, la vidéo sera lue de manière transparente comme s'il s'agissait d'une seule et même vidéo.

Vous avez peut-être remarqué un petit ajout au m3u8 :

EXT-X-DISCONTINUITÉ

En plaçant cette balise dans le m3u8, le lecteur s'attend à ce que le segment vidéo suivant ait une résolution différente ou un profil audio différent du précédent. Si les vidéos sont toutes encodées avec la même résolution, les mêmes codecs et les mêmes profils, cette balise peut être omise.

Extension du nouveau modèle

Pour qu'une plate-forme vidéo soit capable de fournir des expériences de lecture personnalisées à la volée, il faut traiter le manifeste m3u8 non pas comme un actif fixe, mais comme quelque chose qui doit être généré à chaque demande. Cela signifie que le backend doit connaître l'emplacement de chaque segment vidéo, le nombre total de segments par élément et la durée de chaque segment.

Il existe des moyens de simplifier ce processus. Par exemple, en nommant les fichiers de manière cohérente, seul le nom du fichier de base doit être connu pour tous les segments, et l'itération des segments peut être gérée de manière programmatique. On peut supposer que tous les segments, à l'exception du segment final, auront la même durée cible, de sorte que seule la durée du segment final doit être stockée. Ainsi, pour un fichier vidéo unique comportant de nombreux segments vidéo, il suffit de stocker le chemin de base, le nom du fichier de base, le nombre de segments, la durée moyenne du segment et la durée du dernier segment.

En considérant même les titres de longue durée comme une combinaison de scènes, ou même plus loin, en considérant les scènes comme une combinaison de plans, il y a une quantité incroyable de puissance qui peut être débloquée grâce à la génération de manifestes dynamiques. Si elle est planifiée et mise en place dès le début, l'architecture de la plateforme de diffusion peut atteindre une grande flexibilité sans augmentation subséquente des coûts opérationnels ou d'infrastructure.

Brightcove a aidé un fabricant d'équipements de diagnostic à réduire le temps et les dépenses consacrés à la salle de classe tout en améliorant la réussite ...
Brightcove a aidé la place de marché automobile la plus reconnue à gérer son énorme vidéothèque et à la rentabiliser...
Pour préserver l'intégrité de leur marque, les enseignes de distribution ont besoin de lecteurs vidéo personnalisables qui leur permettent d'ajuster les couleurs, la police...

PRÊT À COMMENCER ?

Contactez-nous pour savoir comment nous pouvons améliorer vos efforts de marketing vidéo et vous aider à générer les résultats et le retour sur investissement dont vous avez besoin.