Cette page explique comment générer des images superposées statiques sur un flux en direct. Une image en superposition statique reste affichée pendant toute la durée de la diffusion en direct. Vous pouvez configurer la résolution et la position d'une image de superposition statique.
Configurer votre authentification et votre projet Google Cloud
Si vous n'avez pas créé projet Google Cloud et identifiants, consultez la page Avant de commencerImporter une image dans votre bucket Cloud Storage
- Dans la console Google Cloud, accédez à la page "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 (JPEG ou PNG) à importer depuis votre ordinateur local. Toi utilisez cet exemple d'image en superposition.
Votre image est à présent enregistrée dans le bucket Cloud Storage.
Créer un élément
Les éléments sont des vidéos ou des images que vous pouvez utiliser avec l'API Live Stream. Créez un élément image à utiliser comme superposition statique.
Pour créer un composant, utilisez la
projects.locations.assets.create
.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
PROJECT_NUMBER
: votre projet Google Cloud numéro ; celui-ci est indiqué dans le champ Numéro du projet Page Paramètres IAMLOCATION
: emplacement dans lequel créer l'asset. Utilisez l'une des régions disponibles.Afficher les lieuxus-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-northeast1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west3
europe-west4
ASSET_ID
: identifiant défini par l'utilisateur pour le nouvel élément à créer. Cette valeur doit comporter entre 1 et 63 caractères. Elle doit commencer et se terminer par[a-z0-9]
. peut contenir des tirets (-) entre les caractères. Par exemple,my-asset
.ASSET_URI
: URI de l'image dans votre Bucket Cloud Storage à utiliser, par exemplegs://my-bucket/my-image.png
Corps JSON de la requête :
{ "image": { "uri": "ASSET_URI" } }
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/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata", "createTime": CREATE_TIME, "target": "projects/PROJECT_NUMBER/locations/LOCATION/assets/ASSET_ID", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Copiez l'élément renvoyé.
OPERATION_ID
à utiliser dans
la section suivante.
Vérifier le résultat
Utilisez la méthode projects.locations.operations.get
pour vérifier si
l'asset a été créé. Si la réponse contient "done: false"
,
répétez la commande jusqu'à ce que la réponse contienne "done: true"
.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
PROJECT_NUMBER
: votre projet Google Cloud numéro ; celui-ci est indiqué dans le champ Numéro du projet Page Paramètres IAMLOCATION
: emplacement de votre composant. Utilisez l'une des régions disponibles.Afficher les lieuxus-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-northeast1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west3
europe-west4
OPERATION_ID
: identifiant de l'opération.
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/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata", "createTime": CREATE_TIME, "endTime": END_TIME, "target": "projects/PROJECT_NUMBER/locations/LOCATION/assets/ASSET_ID", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.Asset", "name": "projects/PROJECT_NUMBER/locations/LOCATION/assets/ASSET_ID", "createTime": CREATE_TIME, "updateTime": UPDATE_TIME, "image": { "uri": "ASSET_URI" }, "crc32c": "ae1EJg==", "state": "ACTIVE" } }
Créer le point de terminaison d'entrée
Pour créer le point de terminaison d'entrée, utilisez la fonction
projects.locations.inputs.create
.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
PROJECT_NUMBER
: votre projet Google Cloud numéro ; celui-ci est indiqué dans le champ Numéro du projet Page Paramètres IAMLOCATION
: emplacement dans lequel créer l'entrée endpoint; utilisez l'une des régions disponibles.Afficher les lieuxus-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-northeast1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west3
europe-west4
INPUT_ID
: identifiant défini par l'utilisateur pour la nouvelle entrée. point de terminaison à créer (auquel vous envoyez votre flux d'entrée). Cette valeur doit comporter entre 1 et 63 caractères, commencer et se terminer par[a-z0-9]
, et peut contenir des tirets (-) entre les caractères. Par exemple,my-input
.
Corps JSON de la requête :
{ "type": "RTMP_PUSH" }
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/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata", "createTime": CREATE_TIME, "target": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Vous pouvez vérifier le résultat de la création de l'entrée. à l'aide du nouvel ID d'opération.
Obtenir les détails du point de terminaison d'entrée
Pour obtenir les détails du point de terminaison d'entrée, utilisez la méthode
projects.locations.inputs.get
.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
PROJECT_NUMBER
: numéro de votre projet Google Cloud, qui se trouve dans le champ Numéro de projet sur la page Paramètres IAM.LOCATION
: emplacement de votre point de terminaison d'entrée. Utilisez l'une des régions disponibles.Afficher les lieuxus-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-northeast1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west3
europe-west4
INPUT_ID
: identifiant défini par l'utilisateur pour point de terminaison d'entrée
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/inputs/INPUT_ID", "createTime": CREATE_TIME, "updateTime": UPDATE_TIME, "type": "RTMP_PUSH", "uri": "INPUT_STREAM_URI", # For example, "rtmp://1.2.3.4/live/b8ebdd94-c8d9-4d88-a16e-b963c43a953b", "tier": "HD" }
Recherchez le champ uri
et copiez le INPUT_STREAM_URI
renvoyé pour l'utiliser plus tard dans la section Envoyer le flux d'entrée.
Créer la chaîne
Pour créer le critère, utilisez la méthode
projects.locations.channels.create
.
Notez la présence du tableau staticOverlays
dans la configuration de la chaîne:
"staticOverlays": [
{
"asset": "projects/PROJECT_NUMBER/locations/LOCATION/assets/ASSET_ID",
"position": {
"x": 0.5,
"y": 0.5
},
"resolution": {
"w": 0.1
},
"opacity": 0.8
}
],
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
PROJECT_NUMBER
: numéro de votre projet Google Cloud, qui se trouve dans le champ Numéro de projet sur la page Paramètres IAM.LOCATION
: emplacement dans lequel créer la canal ; utilisez l'une des régions disponibles.Afficher les lieuxus-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-northeast1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west3
europe-west4
CHANNEL_ID
: identifiant défini par l'utilisateur pour le canal à créer. Cette valeur doit comporter entre 1 et 63 caractères, commencer et se terminer par[a-z0-9]
, et peut contenir des tirets (-) entre les caractères.INPUT_ID
: identifiant défini par l'utilisateur pour point de terminaison d'entréeBUCKET_NAME
: nom de l'instance Cloud Storage bucket que vous avez créé pour contenir le fichier manifeste et les fichiers segments de la diffusion en directASSET_ID
: identifiant défini par l'utilisateur pour élément
Corps JSON de la requête :
{ "inputAttachments": [ { "key": "my-input", "input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID" } ], "output": { "uri": "gs://BUCKET_NAME" }, "staticOverlays": [ { "asset": "projects/PROJECT_NUMBER/locations/LOCATION/assets/ASSET_ID", "position": { "x": 0.5, "y": 0.5 }, "resolution": { "w": 0.1 }, "opacity": 0.8 }, ], "elementaryStreams": [ { "key": "es_video", "videoStream": { "h264": { "profile": "high", "widthPixels": 1280, "heightPixels": 720, "bitrateBps": 3000000, "frameRate": 30 } } }, { "key": "es_audio", "audioStream": { "codec": "aac", "channelCount": 2, "bitrateBps": 160000 } } ], "muxStreams": [ { "key": "mux_video_ts", "container": "ts", "elementaryStreams": ["es_video", "es_audio"], "segmentSettings": { "segmentDuration": "2s" } } ], "manifests": [ { "key": "manifest_hls", "fileName": "main.m3u8", "type": "HLS", "muxStreams": [ "mux_video_ts" ], "maxSegmentCount": 5 } ] }
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/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata", "createTime": CREATE_TIME, "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Vous pouvez vérifier le résultat de l'opération de création de chaîne à l'aide du nouvel ID d'opération.
Créer la chaîne
Pour créer un canal, utilisez l'
projects.locations.channels.start
.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
PROJECT_NUMBER
: votre projet Google Cloud numéro ; celui-ci est indiqué dans le champ Numéro du projet Page Paramètres IAMLOCATION
: emplacement où se trouve votre chaîne localisé ; utilisez l'une des régions disponibles.Afficher les emplacementsus-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-northeast1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west3
europe-west4
CHANNEL_ID
: identifiant de la chaîne défini par l'utilisateur
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/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata", "createTime": CREATE_TIME, "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID", "verb": "start", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Vous pouvez vérifier le résultat du lancement de la chaîne. à l'aide du nouvel ID d'opération.
Envoyer le flux d'entrée
Ouvrez une nouvelle fenêtre de terminal. Exécutez la commande suivante, en utilisant
INPUT_STREAM_URI
à partir de
Section Obtenir les détails du point de terminaison d'entrée:
ffmpeg -re -f lavfi -i "testsrc=size=1280x720 [out0]; sine=frequency=500 [out1]" \
-acodec aac -vcodec h264 -f flv INPUT_STREAM_URI
Lire la diffusion en direct générée
Pour lire le fichier multimédia généré dans Shaka Player, procédez comme suit :
- Rendez le bucket Cloud Storage que vous avez créé publiquement lisible.
- Pour activer le partage des ressources entre origines multiples (CORS) sur un bucket Cloud Storage, procédez comme suit :
- Créez un fichier JSON contenant les informations suivantes :
[ { "origin": ["https://shaka-player-demo.appspot.com/"], "responseHeader": ["Content-Type", "Range"], "method": ["GET", "HEAD"], "maxAgeSeconds": 3600 } ]
- Exécutez la commande suivante en remplaçant
JSON_FILE_NAME
par le nom du fichier JSON que vous avez créé à l'étape précédente :gcloud storage buckets update gs://BUCKET_NAME --cors-file=JSON_FILE_NAME.json
- Créez un fichier JSON contenant les informations suivantes :
- Dans le bucket Cloud Storage, recherchez les
main.m3u8
. Cliquez sur Copier l'URL dans la colonne Accès public du fichier. - Accédez à Shaka Player, un lecteur de diffusion en direct en ligne.
- Cliquez sur Contenu personnalisé dans la barre de navigation supérieure.
- Cliquez sur le bouton +.
Collez l'URL publique du fichier dans la zone URL du fichier manifeste.
Saisissez un nom dans la zone Nom.
Cliquez sur Enregistrer.
Cliquez sur Play (Jouer).
La superposition devrait apparaître au-dessus du flux en direct.