Cette page explique comment insérer des superpositions dans des vidéos transcodées. Une superposition se compose d'une image qui est insérée en haut de la vidéo de sortie. Il est également possible de la faire apparaître ou disparaître en fondu selon une période spécifiée. Pour insérer une superposition, utilisez le tableau overlays
dans le modèle JobConfig
.
Consultez la liste des formats de fichiers image compatibles.
Importer une image dans Cloud Storage
Pour commencer, procédez comme suit pour importer une image en superposition dans votre bucket Cloud Storage :
- Dans la console Google Cloud, accédez à la page du navigateur Cloud Storage.
Accéder à la page du navigateur Cloud Storage - Cliquez sur le nom de votre bucket pour l'ouvrir.
- Cliquez sur Importer des fichiers.
- Sélectionnez un fichier image à importer à partir de votre ordinateur local.
Créer une superposition
Vous pouvez créer deux types de superpositions : statique ou animée. Les deux types de superpositions utilisent une image statique. Vous pouvez afficher ou masquer les superpositions statiques. Les superpositions animées sont compatibles avec les effets de fondu.
Vous pouvez insérer plusieurs superpositions dans une seule vidéo de sortie.
Créer une superposition statique
Dans l'objet image
, spécifiez l'image de superposition dans Cloud Storage à l'aide du champ uri
. Dans l'objet resolution
, définissez les valeurs x et y de 0 à 1.0. Une valeur de 0 conserve la résolution de l'image source pour cette dimension. Une valeur de 1.0 étire l'image pour qu'elle corresponde à la dimension de la vidéo de sortie. Par exemple, utilisez les valeurs x: 1
et y:
0.5
pour étirer l'image en superposition sur toute la largeur et la moitié de la hauteur de la vidéo de sortie.
Dans le tableau animations
, créez un objet animationStatic
avec les coordonnées x et y de 0 à 1.0. Ces coordonnées sont basées sur la résolution de la vidéo de sortie. Utilisez les valeurs x: 0
et y: 0
pour placer l'angle supérieur gauche de la superposition dans l'angle supérieur gauche de la vidéo de sortie. Spécifiez le moment où la superposition doit apparaître dans la timeline de la vidéo de sortie à l'aide du champ startTimeOffset
.
Pour retirer l'animation statique, créez un objet animationEnd
. Spécifiez le moment où l'animation doit prendre fin (quand la superposition doit disparaître) dans la timeline de la vidéo de sortie à l'aide du champ startTimeOffset
.
Vous pouvez ajouter cette configuration à un modèle de tâche ou l'inclure dans une configuration de tâche ad hoc :
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
PROJECT_ID
: ID de votre projet Google Cloud répertorié dans les paramètres IAM.LOCATION
: emplacement dans lequel votre tâche sera exécutée. Utilisez l'une des régions disponibles.Afficher les emplacementsus-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
northamerica-northeast1
asia-east1
asia-northeast1
asia-northeast3
asia-south1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west4
STORAGE_BUCKET_NAME
: nom du bucket Cloud Storage que vous avez créé.STORAGE_INPUT_VIDEO
: nom de la vidéo dans votre bucket Cloud Storage que vous transcodez, par exemplemy-vid.mp4
. Ce champ doit tenir compte des dossiers créés dans le bucket (par exemple,input/my-vid.mp4
).STORAGE_INPUT_OVERLAY
: nom de l'image dans votre bucket Cloud Storage que vous utilisez pour la superposition, tel quemy-overlay.png
. Ce champ doit tenir compte des dossiers créés dans le bucket (par exemple,input/my-overlay.png
).STORAGE_OUTPUT_FOLDER
: nom du dossier Cloud Storage dans lequel vous souhaitez enregistrer les sorties vidéo encodées.
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
gcloud
- Créez un fichier
request.json
qui définit les champs de la tâche. Effectuez les remplacements suivants pour la commandegcloud
:- STORAGE_BUCKET_NAME: nom du bucket Cloud Storage que vous avez créé.
- STORAGE_INPUT_VIDEO: nom de la vidéo dans votre bucket Cloud Storage que vous transcodez, par exemple
my-vid.mp4
. Ce champ doit tenir compte des dossiers créés dans le bucket (par exemple,input/my-vid.mp4
). - STORAGE_INPUT_OVERLAY: nom du fichier image dans votre bucket Cloud Storage que vous utilisez pour la superposition, par exemple
my-overlay.png
. Ce champ doit tenir compte des dossiers créés dans le bucket (par exemple,input/my-overlay.png
). - LOCATION: emplacement dans lequel votre tâche sera exécutée. Utilisez un emplacement issu de la liste suivante.
Afficher les emplacements
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
northamerica-northeast1
asia-east1
asia-northeast1
asia-northeast3
asia-south1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west4
- STORAGE_OUTPUT_FOLDER: nom du dossier Cloud Storage dans lequel vous souhaitez enregistrer les sorties vidéo encodées.
{ "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "elementaryStreams": [ { "key": "video-stream0", "videoStream": { "h264": { "heightPixels": 360, "widthPixels": 640, "bitrateBps": 550000, "frameRate": 60 } } }, { "key": "audio-stream0", "audioStream": { "codec": "aac", "bitrateBps": 64000 } } ], "muxStreams": [ { "key": "sd", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" }, "overlays": [ { "image": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_OVERLAY", "resolution": { "x": 1, "y": 0.5 }, "alpha": 1 }, "animations": [ { "animationStatic": { "xy": { "x": 0, "y": 0 }, "startTimeOffset": "0s" } }, { "animationEnd": { "startTimeOffset": "10s" } } ] } ] } }
- Exécutez la commande suivante :
Un résultat semblable à celui-ci doit s'afficher:gcloud transcoder jobs create --location=LOCATION --file="request.json"
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
C#
Avant d'essayer cet exemple, suivez les instructions de configuration pour C# du guide de démarrage rapide de l'API Transcoder à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Transcoder pour C#.
Pour vous authentifier auprès de l'API Transcoder, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Go
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go du guide de démarrage rapide de l'API Transcoder à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Transcoder pour Go.
Pour vous authentifier auprès de l'API Transcoder, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de l'API Transcoder à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Transcoder pour Java.
Pour vous authentifier auprès de l'API Transcoder, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Node.js
Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js du guide de démarrage rapide de l'API Transcoder à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Transcoder pour Node.js.
Pour vous authentifier auprès de l'API Transcoder, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
PHP
Avant d'essayer cet exemple, suivez les instructions de configuration pour PHP du guide de démarrage rapide de l'API Transcoder à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Transcoder pour PHP.
Pour vous authentifier auprès de l'API Transcoder, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Python
Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du guide de démarrage rapide de l'API Transcoder à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Transcoder pour Python.
Pour vous authentifier auprès de l'API Transcoder, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Ruby
Avant d'essayer cet exemple, suivez les instructions de configuration pour Ruby du guide de démarrage rapide de l'API Transcoder à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Transcoder pour Ruby.
Pour vous authentifier auprès de l'API Transcoder, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Dans la vidéo de sortie, la superposition statique présente les caractéristiques suivantes :
- Elle s'affiche au début de la chronologie et reste visible pendant 10 secondes.
- Elle s'étire jusqu'à la largeur maximale et la moitié de la hauteur de la vidéo de sortie.
- Elle est positionnée dans l'angle supérieur gauche de la vidéo de sortie.
Consultez l'exemple de vidéo de sortie pour cette configuration. Cette vidéo utilise un exemple d'image en superposition.
Créer une superposition animée
Dans l'objet image
, spécifiez l'image de superposition dans Cloud Storage à l'aide du champ uri
. Dans l'objet resolution
, définissez les valeurs x et y de 0 à 1.0. Une valeur de 0 conserve la résolution de l'image source pour cette dimension. Une valeur de 1.0 étire l'image pour qu'elle corresponde à la dimension de la vidéo de sortie. Par exemple, utilisez les valeurs x: 0
et y: 0
pour conserver la résolution d'origine de l'image en superposition.
Dans le tableau animations
, créez un objet animationFade
avec un fadeType
défini sur FADE_IN
. Définissez les coordonnées x et y de 0 à 1.0. Ces coordonnées sont basées sur la résolution de la vidéo de sortie. Utilisez les valeurs x: 0.5
et y: 0.5
pour placer l'angle supérieur gauche de la superposition au centre de la vidéo de sortie.
Spécifiez le moment où la superposition doit commencer à apparaître dans la timeline de la vidéo de sortie à l'aide du champ startTimeOffset
. La superposition devient entièrement visible suivant le moment défini dans le champ endTimeOffset
.
Pour faire disparaître progressivement la superposition, créez un autre objet animationFade
. Cette fois-ci, définissez le fadeType
sur FADE_OUT
. Saisissez les coordonnées de position ainsi que les points de départ et de fin de l'animation, comme auparavant.
Vous pouvez ajouter cette configuration à un modèle de tâche ou l'inclure dans une configuration de tâche ad hoc :
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
PROJECT_ID
: ID de votre projet Google Cloud répertorié dans les paramètres IAM.LOCATION
: emplacement dans lequel votre tâche sera exécutée. Utilisez l'une des régions disponibles.Afficher les emplacementsus-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
northamerica-northeast1
asia-east1
asia-northeast1
asia-northeast3
asia-south1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west4
STORAGE_BUCKET_NAME
: nom du bucket Cloud Storage que vous avez créé.STORAGE_INPUT_VIDEO
: nom de la vidéo dans votre bucket Cloud Storage que vous transcodez, par exemplemy-vid.mp4
. Ce champ doit tenir compte des dossiers créés dans le bucket (par exemple,input/my-vid.mp4
).STORAGE_INPUT_OVERLAY
: nom de l'image dans votre bucket Cloud Storage que vous utilisez pour la superposition, tel quemy-overlay.png
. Ce champ doit tenir compte des dossiers créés dans le bucket (par exemple,input/my-overlay.png
).STORAGE_OUTPUT_FOLDER
: nom du dossier Cloud Storage dans lequel vous souhaitez enregistrer les sorties vidéo encodées.
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
gcloud
- Créez un fichier
request.json
qui définit les champs de la tâche. Effectuez les remplacements suivants pour la commandegcloud
:- STORAGE_BUCKET_NAME: nom du bucket Cloud Storage que vous avez créé.
- STORAGE_INPUT_VIDEO: nom de la vidéo dans votre bucket Cloud Storage que vous transcodez, par exemple
my-vid.mp4
. Ce champ doit tenir compte des dossiers créés dans le bucket (par exemple,input/my-vid.mp4
). - STORAGE_INPUT_OVERLAY: nom du fichier image dans votre bucket Cloud Storage que vous utilisez pour la superposition, par exemple
my-overlay.png
. Ce champ doit tenir compte des dossiers créés dans le bucket (par exemple,input/my-overlay.png
). - LOCATION: emplacement dans lequel votre tâche sera exécutée. Utilisez un emplacement issu de la liste suivante.
Afficher les emplacements
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
northamerica-northeast1
asia-east1
asia-northeast1
asia-northeast3
asia-south1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west4
- STORAGE_OUTPUT_FOLDER: nom du dossier Cloud Storage dans lequel vous souhaitez enregistrer les sorties vidéo encodées.
{ "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "elementaryStreams": [ { "key": "video-stream0", "videoStream": { "h264": { "heightPixels": 360, "widthPixels": 640, "bitrateBps": 550000, "frameRate": 60 } } }, { "key": "audio-stream0", "audioStream": { "codec": "aac", "bitrateBps": 64000 } } ], "muxStreams": [ { "key": "sd", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" }, "overlays": [ { "image": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_OVERLAY", "resolution": { "x": 0, "y": 0 }, "alpha": 1 }, "animations": [ { "animationFade": { "fadeType": "FADE_IN", "xy": { "x": 0.5, "y": 0.5 }, "startTimeOffset": "5s", "endTimeOffset": "10s" } }, { "animationFade": { "fadeType": "FADE_OUT", "xy": { "x": 0.5, "y": 0.5 }, "startTimeOffset": "12s", "endTimeOffset": "15s" } } ] } ] } }
- Exécutez la commande suivante :
Un résultat semblable à celui-ci doit s'afficher:gcloud transcoder jobs create --location=LOCATION --file="request.json"
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
C#
Avant d'essayer cet exemple, suivez les instructions de configuration pour C# du guide de démarrage rapide de l'API Transcoder à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Transcoder pour C#.
Pour vous authentifier auprès de l'API Transcoder, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Go
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go du guide de démarrage rapide de l'API Transcoder à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Transcoder pour Go.
Pour vous authentifier auprès de l'API Transcoder, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de l'API Transcoder à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Transcoder pour Java.
Pour vous authentifier auprès de l'API Transcoder, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Node.js
Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js du guide de démarrage rapide de l'API Transcoder à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Transcoder pour Node.js.
Pour vous authentifier auprès de l'API Transcoder, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
PHP
Avant d'essayer cet exemple, suivez les instructions de configuration pour PHP du guide de démarrage rapide de l'API Transcoder à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Transcoder pour PHP.
Pour vous authentifier auprès de l'API Transcoder, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Python
Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du guide de démarrage rapide de l'API Transcoder à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Transcoder pour Python.
Pour vous authentifier auprès de l'API Transcoder, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Ruby
Avant d'essayer cet exemple, suivez les instructions de configuration pour Ruby du guide de démarrage rapide de l'API Transcoder à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Transcoder pour Ruby.
Pour vous authentifier auprès de l'API Transcoder, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Dans la vidéo obtenue, la superposition animée présente les caractéristiques suivantes :
- Elle commence à apparaître au bout de 5 secondes de lecture dans la vidéo de sortie. La valeur alpha de la superposition commence à 0 et se termine à 1.0. Le coin supérieur gauche de la superposition apparaît au centre de la vidéo de sortie. La superposition apparaît dans sa résolution d'image initiale.
- Une fois l'image en superposition affichée, elle apparaît pendant 2 secondes.
- Elle commence à disparaître au bout de 12 secondes de lecture dans la vidéo de sortie. La valeur alpha de la superposition commence à 0 et se termine à 1.0.
- L'animation disparaît avant d'atteindre 15 secondes de lecture.
Consultez l'exemple de vidéo de sortie pour cette configuration. Cette vidéo utilise un exemple d'image en superposition.