Skip to main content
BlogVue d'ensemble du cloudTranscodage vidéo évolutif sur Linode : MP4 vers HLS avec Kubernetes et Capella

Transcodage vidéo évolutif sur Linode : MP4 vers HLS avec Kubernetes et Capella

DébloquerSeamlessStreamingHero

Alors que les plateformes de streaming continuent d'envahir nos écrans et de révolutionner notre façon de consommer du contenu, l'importance de mettre en place un service de streaming robuste et évolutif n'a jamais été aussi cruciale. Comment les entreprises peuvent-elles garantir la compatibilité entre les appareils et les plateformes, tout en réduisant les coûts et en optimisant l'efficacité ? Dans ce tutoriel, nous allons nous pencher sur le transcodage de la vidéo à la demande.

Nous allons mettre en place le transcodage vidéo à l'aide du Linode Kubernetes Engine afin de faciliter la mise à l'échelle de votre infrastructure de transcodage en fonction de la demande. Nous allons voir comment convertir un fichier mp4 en HLS (HTTP Live Streaming), un format couramment utilisé par les services de diffusion en continu. Le HLS utilise des capacités de diffusion en continu à débit adaptatif pour garantir une lecture fluide et une expérience de visionnage cohérente, quelle que soit la vitesse de l'appareil ou du réseau. Pour commencer, nous utiliserons un fichier mp4 (il peut s'agir d'un exemple de vidéo que vous possédez déjà au format mp4), nous le téléchargerons dans un bac d'entrée, puis nous l'enverrons à notre partenaire de transcodage, Capella, qui se chargera du transcodage de la vidéo. 

Capella est un partenaire d'Akamai qui propose des solutions prêtes à être déployées que vous pouvez exécuter sur Akamai Compute. Nous nous sommes associés à Capella sur ce point parce qu'ils peuvent exécuter des encodeurs sur notre plate-forme, stocker des ressources de vidéo à la demande sur le Compute d'Akamai et les diffuser sur le CDN d'Akamai. Object Storageet les diffuser via le CDN d'Akamai. Ce partenariat nous permet également de déployer avec Kubernetes et Helm, ce qui facilite grandement la montée en charge. Par exemple, dans le tutoriel ci-dessous, les machines d'encodage de Capella se mettent automatiquement en marche pour monter en charge en fonction du nombre de tâches, puis redescendent en charge une fois la tâche terminée, ce qui permet d'économiser des milliers de dollars de temps de calcul inutilisé.

Prérequis :

Pour réaliser ce tutoriel, vous devez vous inscrire à un compte Linode. L'inscription est gratuite et vous bénéficiez d'un crédit de 100 $ !

  1. Un jeton API Linode
  2. Installer kubectl
  3. Installer la barre
  4. Installer les outils Kubernetes externes listés ici.
  5. Licence A Capella (envoyer un courriel à sales@capellasystems.net pour obtenir une licence gratuite) 

Étape 1 : Créer un cluster Kubernetes

La première étape consiste à créer un cluster Kubernetes qui effectuera l'encodage. Dans le tableau de bord du Cloud d'Akamai, cliquez sur Kubernetes, puis sur Create Cluster.

Ensuite, entrons quelques configurations pour le cluster. Appelons-le "transcodage-demo". Choisissez ici la région la plus proche de chez vous. Pour moi, c'est Los Angeles. Il est également recommandé d'activer le plan de contrôle de haute disponibilité pour activer la haute disponibilité dans le cluster Kubernetes.

Dans la section Ajouter des pools de nœuds, ajoutons 3 nœuds du plan dédié de 8 Go. Ces trois nœuds sont les nœuds de gestion, dont l'un est automatiquement élu comme leader et les deux autres sont destinés à la redondance des gestionnaires.

Une fois que vous les avez ajoutés, vous verrez un bouton en haut de l'écran qui dit Create Cluster (Créer un cluster). Cliquez dessus pour créer le cluster Kubernetes. Remarque : cette opération peut prendre quelques minutes.

La configuration de votre environnement Kubernetes est maintenant terminée. Notez dans le tableau de bord du gestionnaire de cloud les 3 nœuds que vous avez créés, avec le statut Running. 

Ensuite, téléchargeons le fichier Kubeconfig en cliquant sur le lien ci-dessous depuis le tableau de bord. Il sera téléchargé sur votre machine locale. Assurez-vous de déplacer le fichier dans votre répertoire Kubernetes (au même endroit où vous avez configuré kubectl).  

Ensuite, cliquez sur le lien Kubernetes Dashboard pour ouvrir le tableau de bord Kubernetes.

Vous verrez ce message et vous voudrez cliquer sur l'option pour vous connecter avec votre fichier kubeconfig que vous venez de créer.

Dans le panneau de gauche, si vous cliquez sur Cluster, vous verrez les nœuds que vous venez de créer.

Étape 2 : Créer et modifier le fichier de configuration de Helm

Maintenant, créons et modifions le fichier de configuration Helm qui sera utilisé pour déployer le cluster Cambria dans l'environnement Kubernetes. Un cluster Cambria est un réseau de transcodage évolutif composé de plusieurs stations de travail Cambria FTC pour le traitement d'un grand volume de fichiers vidéo. Le gestionnaire du cluster Cambria achemine les actions à travers le réseau.

Tout d'abord, nous allons télécharger l'archive des fichiers de configuration du cluster Capella à l'aide des deux commandes suivantes :

curl -L -s -o capella-cluster.tgz

https://www.dropbox.com/scl/fi/160bla78xylc18wbr6xk8/capella-cluster-0.3.8.tgz?rlkey=lrmxiszcr5da02duefm2vr7cl

helm show values capella-cluster.tgz > capellaCambriaConfig.yaml 

Dans le fichier de configuration, nous devons mettre à jour deux champs : la clé de licence Capella et le jeton API Linode.

Ajoutez la clé de licence que vous avez reçue (de l'équipe Capella après avoir envoyé un email à sales@capellasystems.net dans la section des prérequis) dans le champ ftcLicenseKey. 

Ensuite, ajoutez votre jeton API Linode (utilisez le lien dans la section des prérequis pour en générer un) dans le champ linodeAPIToken.

Étape 3 : Installer le cluster Cambria

Nous devons maintenant installer le cluster Cambria. Ce cluster est utilisé pour traiter un grand volume de fichiers vidéo.

helm upgrade -install capella-cluster capella-cluster.tgz -values capellaCambriaConfig.yaml 

Vous verrez que l'état est passé à "déployé".

À ce stade, quelques composants sont en cours de déploiement dans votre environnement Kubernetes. Il est préférable d'attendre quelques minutes pour que tout soit déployé avant de continuer.

Étape 4 : Ouvrir l'interface Web de Cambria Cluster

Dans le panneau gauche du tableau de bord Kubernetes, cliquez sur Services. Copiez ensuite l'adresse IP du nœud central (port 8161). Ce port est spécifique à l'interface Web.

Dans un nouvel onglet, entrez "https://" et collez l'adresse IP. (Il se peut que vous deviez cliquer sur Avancé > Entrer le site pour entrer le site). Vous verrez maintenant l'interface Web du cluster Cambria. Connectez-vous avec les identifiants WebUI du fichier capellaCambriaConfig.yaml. (Consultez la page 8 ici pour plus de détails sur la façon de trouver ces informations d'identification).

Étape 5 : Créer des groupes d'entrée et de sortie.

Rappelons que nous convertissons une vidéo mp4 au format HLS. Nous allons créer un bac avec deux dossiers : un pour l'entrée de notre fichier mp4, appelé source, et un pour la sortie de notre fichier HLS, appelé sortie.

Accédez au gestionnaire du Cloud d'Akamai et cliquez sur Object Storage dans le panneau de gauche. Cliquez ensuite sur Create Bucket. Appelons-le capella. Veillez à choisir la même région que celle que vous avez choisie pour votre cluster Kubernetes ci-dessus. Cliquez ensuite sur Create Bucket.

Après avoir créé ce seau, nous devons copier son emplacement et le coller plus tard dans notre fichier XML. Cliquez sur le bouton Détails du seau, puis cliquez sur le bouton Copier comme indiqué ci-dessous à côté de son emplacement. Enregistrez ceci dans un bloc-notes car nous en aurons besoin plus tard.

Ensuite, nous devons créer des clés d'accès pour le seau. Cliquez sur Clés d'accès, puis sur Créer une clé d'accès.

C'est ce que nous appelons le capella-access.

Vous verrez une petite fenêtre contextuelle qui affichera votre clé d'accès et votre clé secrète. Copiez-les et collez-les dans un bloc-notes, car nous en aurons besoin plus tard. Une fois que vous les avez enregistrées, cliquez sur J'ai enregistré ma clé secrète.

Maintenant, dans notre bac de stockage d'objets, créons 2 dossiers : un pour l'entrée et un pour la sortie. Cliquez sur votre seau, puis sur Créer un dossier. Appelons le dossier d'entrée "source".

Faisons la même chose pour le dossier de sortie. Appelons-le "output".

Étape 6 : Modifier les champs dans l'exemple de document HLS.

Capella nous a envoyé ce fichier d'exemple pour effectuer des travaux de transcodage pour les conversions mp4 vers HLS. Il y a d'autres fichiers d'exemple à choisir, assurez-vous de leur demander lequel vous voulez lorsque vous leur envoyez un courriel (vérifiez les conditions préalables ci-dessus). Veillez à l'enregistrer dans votre dossier Kubernetes.

Copiez et collez votre clé d'accès et votre clé secrète dans la section de description du poste aux lignes 8 et 9 du fichier XML.

Ajoutez ces mêmes valeurs aux lignes 234 et 235 de la section Paramètres de téléchargement.

À la ligne 231, collons la région de notre seau. Vous devriez l'avoir copiée dans un bloc-notes à partir de l'étape précédente.

Ensuite, dans la section Upload Setting, nous devons mettre à jour les champs bucket et location. À la ligne 227, modifiez le champ "bucket" pour qu'il s'appelle "capella" et à la ligne 228, modifiez le champ "location" pour qu'il s'appelle "output". (Rappelez-vous que nous avons créé un seau appelé capella et que le dossier de sortie s'appelle output).

Étape 6 : Téléchargement d'un fichier mp4 dans le panier d'entrée

Ensuite, téléchargeons un fichier mp4 dans le panier d'entrée. Il peut s'agir d'une vidéo de votre chien, d'une vidéo de cuisine que vous avez enregistrée, de n'importe quel fichier mp4. J'utilise un fichier mp4 appelé flying5. Accédons au gestionnaire du Cloud d'Akamai et téléchargeons le fichier mp4 dans le seau source.

Revenons maintenant au fichier XML. Ajoutons l'emplacement du fichier source à la ligne 347 comme indiqué ci-dessous.

Étape 7 : Exécuter la tâche de transcodage

Nous sommes maintenant prêts à effectuer le transcodage ! Nous allons exécuter la tâche de transcodage à l'aide d'un appel API. Vous devrez remplacer quelques éléments dans la commande curl ci-dessous. Tout d'abord, naviguez vers votre tableau de bord Kubernetes et récupérez l'adresse IP du premier nœud (port 8650). Ce port est spécifique à la communication de la tâche d'encodage. Copiez-la dans votre presse-papiers et collez-la quelque part pour la sauvegarder (tout ce qui précède .ip). Vous en aurez besoin dans une minute. 

Ensuite, à partir de votre fichier capellaCambriaConfig.yaml, copiez le cambriaClusterAPIToken et sauvegardez-le. Dans la commande curl , remplacez la valeur usertoken par votre token API.

Ensuite, ajoutez le nom du fichier xml de la tâche de transcodage. J'ai enregistré le mien sous le nom mp4-hls-transcoding-job.xml.

Exécutons cette commande à partir de notre terminal.

curl -k -X POST "https://123.456.78.90:8650/CambriaFC/v1/Jobs/?usertoken=12345678-1234-5678-abcd-efghijklmn" -d @mp4-hls-transcoding-job.xml

Pour confirmer que le job est en cours d'exécution, consultons le tableau de bord Kubernetes. Naviguons vers le tableau de bord Kubernetes et ouvrons l'URL suivante pour le port 8161, qui est le port de la liste des tâches. 

Chaque fois que des travaux sont soumis au gestionnaire de cluster Cambria, ils apparaissent dans la liste des travaux de l'interface Web de Cambria.

Ces travaux seront distribués aux machines d'encodage FTC pour qu'elles les exécutent. Le Cambria Cluster Manager lancera automatiquement une nouvelle machine FTC s'il n'y avait pas de Jobs en file d'attente auparavant. Des machines FTC supplémentaires seront lancées pour gérer la charge si le nombre de travaux en attente est élevé.

Sur la page de résumé Akamai Linode Kubernetes, vous verrez qu'une nouvelle machine est en cours de provisionnement. Une fois la machine provisionnée, vous pouvez la voir sous Nœuds dans le tableau de bord Kubernetes et également dans l'interface Web du gestionnaire de cluster. Une fois disponible et automatiquement connecté au cluster, le job sera distribué à la machine FTC pour être exécuté. La liste des tâches de l'interface WebUI peut être utilisée pour suivre la progression.

Une fois le travail terminé, vous verrez le statut passer à "done" (terminé) dans l'interface WebUI.

Il créera 3 fichiers vidéo différents avec différents types de vidéo. Lorsque vous retournez dans la console Akamai, vous voyez dans votre dossier de sortie un fichier de sortie contenant plusieurs dossiers. Un dossier contient l'audio, un autre la vidéo et le dernier les métadonnées.

Vous pouvez les lire à l'aide d'un lecteur compatible HLS (il peut s'agir d'une sorte de plugin dans votre navigateur ou d'un tiers). 

Le transcodage vidéo est un aspect crucial de la diffusion multimédia moderne. En suivant les étapes de ce tutoriel, vous pouvez désormais relever ce défi facilement ! 

En résumé

Cet exemple de transcodage vidéo illustre la flexibilité et la puissance de la diffusion multimédia moderne à l'aide du Linode Kubernetes Engine (LKE). Les machines d'encodage tournent automatiquement pour s'adapter au nombre de travaux, puis se réduisent à nouveau lorsque le travail est terminé, ce qui démontre les économies significatives réalisées lorsque vous utilisez LKE.

Après avoir réussi à transcoder votre vidéo, vous pouvez exploiter le réseau de serveurs d'Akamai répartis stratégiquement dans le monde entier, afin de garantir que vos vidéos au format HLS sont diffusées rapidement et de manière transparente à votre public, quelle que soit sa situation géographique. Cela permettra d'alléger la charge de votre serveur d'origine en déchargeant la diffusion du contenu sur les serveurs périphériques distribués d'Akamai. Cela permet non seulement d'améliorer les performances et la montée en charge de votre diffusion vidéo, mais aussi d'améliorer l'expérience globale de l'utilisateur en réduisant la latence et la mise en mémoire tampon. En outre, le CDN d'Akamai offre des fonctionnalités avancées telles que le streaming à débit adaptatif, qui ajuste automatiquement la qualité de la vidéo en fonction des conditions du réseau de l'utilisateur, garantissant ainsi une lecture fluide sur une variété de dispositifs et de vitesses de connexion. Cette fonction est particulièrement importante pour la diffusion de contenus vidéo de haute qualité sur des appareils mobiles et dans des zones où la bande passante est limitée.

Les prochaines étapes

Dans ce tutoriel, nous avons utilisé Akamai pour transcoder une vidéo du format mp4 au format HLS. Cette conversion garantit la compatibilité avec les différents dispositifs de diffusion en continu. Vous trouverez ici une liste complète des formats d'entrée et de sortie possibles pour le transcodage vidéo. 

Si vous souhaitez en savoir plus sur la mise en œuvre du transcodage vidéo, inscrivez-vous à notre lettre d'information, connectez-vous avec nous sur Twitter ou LinkedIn, ou abonnez-vous à notre chaîne YouTube.

En plus de ces guides techniques, si vous ou votre organisation envisagez d'optimiser ses solutions de transcodage vidéo et Kubernetes, vous pouvez essayer les solutions de Linode en vous inscrivant pour obtenir 100 $ de crédits gratuits

Commentaires

Laissez un commentaire

Votre adresse électronique ne sera pas publiée. Les champs obligatoires sont marqués d'un *.