Présentation de l'API Transcoder

Cette page fournit une présentation technique de l'API Transcoder, y compris les fonctionnalités, la terminologie et les concepts utiles. L'API Transcoder implémente une API REST et RPC qui vous permet d'envoyer, de surveiller et de gérer des tâches de transcodage dans Google Cloud. Pour envoyer des tâches à l'aide de l'API Transcoder, vous devez d'abord importer les éléments multimédias dans Cloud Storage. Après le traitement d'une tâche, l'API Transcoder enregistre le contenu multimédia obtenu dans Cloud Storage.

Fonctionnalités

L'API Transcoder est compatible avec les fonctionnalités suivantes :

Pour en savoir plus sur les normes MP4 et MPEG-DASH, consultez le site Web de Moving Picture Experts Group. Pour en savoir plus sur la norme HLS, consultez la page HTTP Live Streaming.

Conteneurs compatibles pour le chiffrement de contenu

Le tableau suivant présente les conteneurs compatibles avec le chiffrement de contenu.

Protocole de streaming Conteneur Système DRM Schéma de chiffrement
HLS TS ClearKey aes128
HLS TS FairPlay sampleAes
HLS fMP4 FairPlay mpegCenc cbcs uniquement
MPEG-DASH fMP4 Widevine mpegCenc cenc ou cbcs
MPEG-DASH fMP4 PlayReady mpegCenc cenc ou cbcs

Contrôle des accès

Le modèle de contrôle des accès de l'API Transcoder est basé sur Identity and Access Management (IAM) de Google. Les autorisations IAM vous permettent de contrôler avec précision la manière dont les données multimédias peuvent être traitées, et par qui.

Limites

Le tableau suivant indique les limites par tâche de transcodage.

Limites des tâches
Largeur d'entrée maximale4 096 px
Hauteur d'entrée maximale4 096 px
Largeur de sortie maximale4 096 px
Hauteur de sortie maximale2 160 px
Taille totale de sortie400 Go
Durée EditList maximale24 heures
Nombre maximal de flux vidéo70
Nombre maximal de flux audio50
Nombre maximal de flux de texte50
Nombre maximal de flux multiplex100
Nombre maximal de fichiers manifestes100
Nombre maximal de feuilles de sprites10

Concepts

Cette section présente des concepts importants concernant les fichiers vidéo et leur utilisation avec l'API Transcoder.

Composants d'un fichier vidéo

Chaque fichier vidéo possède un conteneur, qui est le wrapper de l'ensemble du fichier. L'API Transcoder utilise MuxStreams pour définir le conteneur. Chaque conteneur inclut un ensemble d'ElementaryStreams pour définir l'encodage des pistes vidéo, audio et de texte de sous-titres du fichier. La vidéo et l'audio sont compressés à l'aide de codecs.

Dans l'exemple suivant, la vidéo est compressée avec H.264 et l'audio avec AAC. Les deux sont placés dans un conteneur MP4.

Composants d'un fichier vidéo et exemple
Figure 1. Composants d'un fichier vidéo (à gauche) et exemple de fichier MP4 (à droite).

Structure du protocole de streaming

Pour les contenus multimédias en streaming, les fournisseurs de contenu encodent le même contenu à plusieurs débits (mesurés en kilobits par seconde). Le fournisseur génère ensuite un fichier manifeste qui pointe vers les différents fichiers avec différents débits. Le lecteur multimédia en streaming utilise le fichier manifeste pour sélectionner le fichier approprié, puis extrait la vidéo par tranche de quelques secondes. Chaque débit peut être un seul fichier ou plusieurs fichiers courts, en fonction de ce que le lecteur accepte.

Les différentes résolutions de contenu multimédia sont généralement encodées pour cibler différents débits. Par exemple, les débits inférieurs sont encodés en définition standard (SD) au lieu de haute définition (HD). L'ensemble des débits, résolutions et codecs est appelé "échelle à débit adaptatif" (ABR). Les fournisseurs de contenus en streaming peuvent ajuster leur propre échelle en fonction des coûts du CDN, des types d'appareils des utilisateurs, de la bande passante dans la région et d'autres facteurs.

Composants d'une structure de protocole de streaming et exemple
Figure 2. Composants d'une structure de protocole de streaming (en haut) et exemple d'implémentation HTTP Live Streaming (HLS) (en bas).

Terminologie

Cette section fournit un glossaire contenant des termes utiles pour l'utilisation de l'API Transcoder.

Coupure publicitaire

Une coupure publicitaire est une courte annonce qui apparaît avant ou pendant la lecture d'un contenu multimédia. L'API Transcoder accepte une image clé de coupure publicitaire dans la configuration de la tâche. L'API Transcoder n'insère ou ne diffuse aucune publicité, et n'arrête pas la lecture des contenus multimédias. Les clients du lecteur vidéo sont responsables du traitement de l'image clé.

Atom

Un élément atom est une structure de données fondamentale permettant de définir les métadonnées et l'emplacement d'une vidéo. Une vidéo peut comprendre une hiérarchie imbriquée complexe de différents types d'élément atom, y compris des éléments atom audio, d'édition et de texte.

Élément atom audio

Un élément atom audio associe l'audio d'un flux élémentaire à une liste d'éditions.

Type de codec et profil

Lorsque vous sélectionnez le codec pour un flux vidéo, vous spécifiez le type de codec, tel que H.264, et le profil, par exemple le profil high par défaut.

Conteneur

Un conteneur est un wrapper qui décrit la relation entre les différents composants d'un flux multiplexé, y compris les fichiers multimédias et les métadonnées. L'API Transcoder est compatible avec les formats de conteneurs MP4, MPEG-DASH et HLS.

Élément atom d'édition

Un élément atom d'édition définit les décalages de début et de fin pour les segments spécifiques d'un flux que vous souhaitez combiner dans une liste d'éditions.

Modifier la liste

Une liste d'éditions définit une séquence d'éditions sous la forme d'une chronologie pour le fichier ou le fichier manifeste résultant d'une tâche de transcodage.

Flux élémentaire

Un flux élémentaire est un encodage d'un fichier d'entrée, par exemple une piste audio, vidéo ou de texte de sous-titres. Vous devez empaqueter les flux élémentaires avant de mapper et de partager le flux avec différents formats de sortie.

Codage entropique

Le codage entropique est une forme de compression sans perte compatible avec l'API Transcoder. Lors de la configuration des tâches, vous pouvez spécifier le codeur entropique CAVLC (Context-Adaptive Variable-Length Coding) ou CABAC (Context-Adaptive Binary Arithmetic Coding).

Tâche

Une tâche est l'unité de base pour la gestion du travail à réaliser avec l'API Transcoder. Lorsque vous envoyez une tâche à l'API Transcoder, elle est traitée de manière asynchrone dans un emplacement géographique également appelé région. Vous pouvez répertorier et gérer toutes les tâches d'une région.

Le cycle de vie d'une tâche comprend trois étapes : préparer, transcoder et empaqueter.

  • Préparer
    • Télécharger les entrées depuis Cloud Storage
    • Analyser les entrées
    • Valider les entrées
  • Transcoder
    • Exécuter des opérations de transcodage sur les entrées
  • Empaqueter
    • Entrées d'assemblage
    • Entrées multiplex
    • Importer les sorties dans Cloud Storage

Une tâche possède un état mis à jour. Le service signale les erreurs à l'aide du champ error.

Configuration de la tâche

Une configuration de tâche représente un grand nombre des paramètres que vous pouvez personnaliser lors de la création et de l'envoi d'une tâche à l'API Transcoder. Vous pouvez spécifier des paramètres de configuration tels que des listes d'éditions et l'endroit où insérer des tags de coupure publicitaire dans un fichier manifeste de sortie. Vous pouvez créer des configurations de tâches réutilisables en tant que modèles de tâches à utiliser dans une région Google Cloud.

Mode du job

L'API Transcoder est compatible avec deux modes de tâche : interactif et par lot.

Le mode interactif est le mode de tâche par défaut. Utilisez ce mode si vous souhaitez que le traitement des tâches commence dès que possible ou si vous souhaitez contrôler plus précisément les tâches à exécuter en premier. Dans ce mode, le quota de nombre de tâches simultanées contrôle le nombre de tâches exécutées simultanément. Une fois ce quota atteint, toutes les tâches que vous essayez de démarrer sont refusées.

Utilisez le mode par lot pour envoyer de nombreuses tâches pour lesquelles la latence de traitement n'est pas aussi critique que les tâches envoyées en mode interactif par défaut. Dans ce mode, vous pouvez spécifier la priorité de traitement des tâches pour une tâche. Les tâches envoyées en mode par lot avec la même valeur de priorité sont placées dans une file d'attente "premier arrivé, premier servi" et ont un état de tâche PENDING en attendant d'être exécutées. Dans ce mode, le quota de nombre de tâches en attente de traitement par lot contrôle le nombre de tâches mises en file d'attente. Une fois ce quota atteint, tous les jobs que vous essayez de démarrer sont rejetés. Une tâche passe à l'état RUNNING lorsqu'elle est exécutée. Le quota de jobs simultanés par lot contrôle le nombre de jobs exécutés simultanément.

Vous pouvez utiliser les deux modes en même temps. Aucun mode n'a la priorité sur l'autre. Pour en savoir plus sur le paramétrage du mode de tâche, consultez la section Créer des tâches en mode par lot.

Modèle de tâche

Par défaut, l'API Transcoder applique un modèle prédéfini appelé preset/web-hd pour renseigner une configuration de tâche. Cette configuration de tâche génère les fichiers de sortie suivants:

  • manifest.m3u8: la playlist principale pour un flux multimédia HLS. Ce fichier contient des références à des playlists pour la variante en haute définition (HD) de la sortie et la variante en définition standard (SD) de la sortie.
    • media-hd.m3u8 : playlist pour la variante en haute définition
      • media-hd0000000000.ts : fichier de séquence vidéo en haute définition
    • media-sd.m3u8 : playlist pour la variante en définition standard
      • media-sd0000000000.ts : fichier de séquence vidéo en définition standard
  • manifest.mpd : playlist pour un flux multimédia MPEG-DASH. Ce fichier contient des références aux fichiers de séquence vidéo uniquement et de séquence audio uniquement.
    • audio-only0000000000.m4s : fichier de séquence audio uniquement
    • video-only-hd0000000000.m4s : fichier de séquence vidéo uniquement en haute définition
    • video-only-sd0000000000.m4s : fichier de séquence vidéo uniquement en définition standard
  • sd.mp4 : fichier vidéo en définition standard autonome
  • hd.mp4 : fichier vidéo en haute définition autonome

Vous pouvez créer et gérer vos propres modèles de tâche personnalisés et les spécifier lors de la création des tâches.

Prétraitement

Le prétraitement est l'étape d'une tâche qui a lieu avant le transcodage principal.

Configuration du prétraitement

Une configuration de prétraitement représente les paramètres que vous pouvez appliquer à une vidéo avant l'étape de transcodage d'une tâche. Vous pouvez appliquer un recadrage ou une marge dans le cadre de cette configuration.

Mode de contrôle du taux

Le mode de contrôle du taux indique si une tâche doit être traitée à l'aide du mode CRF (facteur de taux constant) ou VBR (taux variable). Le mode CRF garantit une qualité constante tout au long des ressources multimédias traitées. Le mode VBR optimise le processus d'encodage afin de réduire la taille de fichier des ressources multimédias traitées. Pour les cas d'utilisation par flux, sélectionnez le mode de contrôle du taux VBR. À des fins d'archivage, sélectionnez le mode de contrôle du taux CRF.

Fichier manifeste

Un fichier manifeste est une description du contenu et des métadonnées disponibles d'un flux multimédia adaptatif vers un client. Dans l'API Transcoder, vous pouvez configurer une tâche pour générer un fichier manifeste avec un nom de fichier, une liste de flux multiplexés ainsi que le type du fichier manifeste, qui doit être au format HLS ou MPEG-DASH.

Élément atom de texte

Un élément atom de texte mappe le texte d'un flux élémentaire à une liste d'éditions.

Flux de texte

Un flux de texte encode les données de texte associées à une vidéo, telles que des sous-titres.

Étape suivante