Cette page explique comment prévisualiser vos flux d'entrée avec une latence très faible afin de détecter les problèmes ou les événements potentiels en temps quasi réel. Cela vous permet de prendre des mesures correctives, comme mettre en pause les diffusions, insérer des annonces ou afficher des écrans, pour offrir une expérience de visionnage de haute qualité à vos spectateurs.
Le contenu de l'aperçu est disponible au format suivant :
- Format : MPEG-TS
- Vidéo :
- Résolution : 640 x 480
- Codec : H.264
- Fréquence d'images : 25 images par seconde (FPS)
- Audio
- Codec : AAC
- Taux d'échantillonnage : 48 kHz
- Protocole : HTTPS
Avant de commencer
Cette page suppose que vous avez suivi les étapes de la section Avant de commencer du guide de démarrage rapide pour les diffusions en direct HLS.
Créer un point de terminaison d'entrée
Pour créer un point de terminaison d'entrée, utilisez la méthode projects.locations.inputs.create
.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
PROJECT_NUMBER
: numéro de votre projet Google Cloud . Vous le trouverez dans le champ Numéro du projet de la page Paramètres IAM.LOCATION
: emplacement dans lequel créer le point de terminaison d'entrée ; 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-south1
asia-northeast1
asia-southeast1
australia-southeast1
europe-north1
europe-west1
europe-west2
europe-west3
europe-west4
INPUT_ID
: identifiant défini par l'utilisateur pour le nouveau point de terminaison d'entrée à 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 }
Cette commande crée une opération de longue durée (LRO, Long-running operation) que vous pouvez utiliser pour suivre la progression de votre requête. Pour en savoir plus, consultez Gérer les opérations de longue durée .
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, effectuez les remplacements suivants :
PROJECT_NUMBER
: numéro de votre projet Google Cloud . Vous le trouverez dans le champ Numéro du projet de la page Paramètres IAM.LOCATION
: emplacement de votre point de terminaison d'entrée. 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-south1
asia-northeast1
asia-southeast1
australia-southeast1
europe-north1
europe-west1
europe-west2
europe-west3
europe-west4
INPUT_ID
: identifiant défini par l'utilisateur pour le 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 ultérieurement dans la section Envoyer le flux d'entrée.
Créer une chaîne
Pour créer un canal, utilisez la méthode projects.locations.channels.create
. Les exemples suivants créent un canal qui génère une diffusion en direct HLS. La diffusion en direct se compose d'un seul rendu haute définition (1 280 x 720).
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
PROJECT_NUMBER
: numéro de votre projet Google Cloud . Vous le trouverez dans le champ Numéro du projet de la page Paramètres IAM.LOCATION
: emplacement dans lequel créer le canal. 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-south1
asia-northeast1
asia-southeast1
australia-southeast1
europe-north1
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 le point de terminaison d'entréeBUCKET_NAME
: nom du bucket Cloud Storage que vous avez créé pour contenir le fichier manifeste et les fichiers de segment du flux en direct
Corps JSON de la requête :
{ "inputAttachments": [ { "key": "my-input", "input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID" } ], "output": { "uri": "gs://BUCKET_NAME" }, "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 }
Cette commande crée une opération de longue durée (LRO, Long-running operation) que vous pouvez utiliser pour suivre la progression de votre requête. Pour en savoir plus, consultez Gérer les opérations de longue durée .
Démarrer la chaîne
Pour démarrer un canal, utilisez la méthode projects.locations.channels.start
.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
PROJECT_NUMBER
: numéro de votre projet Google Cloud . Vous le trouverez dans le champ Numéro du projet de la page Paramètres IAM.LOCATION
: région où se trouve votre canal. 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-south1
asia-northeast1
asia-southeast1
australia-southeast1
europe-north1
europe-west1
europe-west2
europe-west3
europe-west4
CHANNEL_ID
: identifiant défini par l'utilisateur pour le canal
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 }
Cette commande crée une opération de longue durée (LRO, Long-running operation) que vous pouvez utiliser pour suivre la progression de votre requête. Pour en savoir plus, consultez Gérer les opérations de longue durée .
Installer un encodeur
Pour utiliser l'API, vous avez besoin d'un encodeur permettant de générer des flux d'entrée traités par l'API.
Installez ffmpeg
, car cette page explique comment utiliser ffmpeg
pour générer des flux d'entrée. Vous pouvez l'installer dans Cloud Shell à l'aide de la commande suivante.
sudo apt install ffmpeg
Envoyer le flux d'entrée
Ouvrez une nouvelle fenêtre de terminal. Exécutez la commande suivante en utilisant INPUT_STREAM_URI de la section Obtenir les détails du point de terminaison d'entrée. Cette commande génère un flux de test.
ffmpeg -re -f lavfi -i "testsrc=size=1280x720 [out0]; sine=frequency=500 [out1]" \ -acodec aac -vcodec h264 -f flv INPUT_STREAM_URI
Obtenir l'URL du point de terminaison et le jeton du porteur
Pour obtenir l'URL du point de terminaison pour le contenu d'aperçu et le jeton du porteur requis pour l'authentification, utilisez la méthode projects.locations.inputs.preview
.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
PROJECT_NUMBER
: numéro de votre projet Google Cloud . Vous le trouverez dans le champ Numéro du projet de la page Paramètres IAM.LOCATION
: emplacement de votre point de terminaison d'entrée. 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-south1
asia-northeast1
asia-southeast1
australia-southeast1
europe-north1
europe-west1
europe-west2
europe-west3
europe-west4
INPUT_ID
: identifiant défini par l'utilisateur pour le 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 :
{ "uri": ENDPOINT_URL, # For example, "preview.k3fhpvei3vvf.us-central1.livestream.goog/inputs/my-preview-input", "bearerToken": "BEARER_TOKEN" }
Vous utiliserez les valeurs des champs uri
et bearerToken
dans la section suivante.
Afficher le contenu d'aperçu
Vous disposez des options principales suivantes pour afficher le contenu de l'aperçu :
mpegts.js
mpegts.js est une bibliothèque disponible sur GitHub pour lire des flux MPEG-TS dans un navigateur Web.
Copiez les valeurs des champs bearerToken
et uri
que vous avez reçues à une étape précédente dans le code HTML suivant. Créez un fichier HTML à partir du code HTML suivant et ouvrez-le dans un navigateur.
<html>
<head>
<script src="https://xqq.im/mpegts.js/dist/mpegts.js"></script>
<video id="video" autoplay controls muted></video>
<script>
function main() {
if (!mpegts.getFeatureList().mseLivePlayback) {
console.log("MSE live playback is not supported by the browswer!")
return;
}
var videoElement = document.getElementById("video");
player = mpegts.createPlayer(
{
type: "mse",
isLive: true,
<!-- Placeholder: Replace ENDPOINT_URL with the actual endpoint URL -->
url: "ENDPOINT_URL",
},
{
headers: {
<!-- Placeholder: Replace BEARER_TOKEN with the actual bearer token -->
Authorization: "BEARER_TOKEN",
},
}
);
player.attachMediaElement(videoElement);
player.load();
player.play();
}
main();
</script>
</body>
</html>
Un modèle de test devrait s'afficher avec une latence inférieure à celle de la diffusion en direct associée. Ce lecteur de flux ne peut lire que la première piste audio d'un flux.
FFplay
FFplay est un lecteur multimédia polyvalent en ligne de commande qui utilise les bibliothèques FFmpeg. Vous pouvez télécharger FFplay sur la page Télécharger FFmpeg.
Ouvrez une nouvelle fenêtre de terminal. Copiez les valeurs des champs bearerToken
et uri
que vous avez reçues lors d'une étape précédente dans la commande suivante, puis exécutez-la.
ffplay -headers "Authorization: Bearer BEARER_TOKEN" \ -fflags nobuffer -flags low_delay -probesize 32 -analyzeduration 0 \ ENDPOINT_URL
Un modèle de test devrait s'afficher avec une latence inférieure à celle de la diffusion en direct associée. ffplay
permet de passer d'une piste audio à une autre en appuyant sur la touche A.
Effectuer un nettoyage
Pour éviter que les ressources utilisées sur cette page soient facturées sur votre compte Google Cloud , procédez comme suit :
Arrêter la chaîne
Utilisez la méthode projects.locations.channels.stop
pour arrêter le canal. Vous devez arrêter la chaîne avant de pouvoir la supprimer.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
PROJECT_NUMBER
: numéro de votre projet Google Cloud . Vous le trouverez dans le champ Numéro du projet de la page Paramètres IAM.LOCATION
: région où se trouve votre canal. 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-south1
asia-northeast1
asia-southeast1
australia-southeast1
europe-north1
europe-west1
europe-west2
europe-west3
europe-west4
CHANNEL_ID
: identifiant défini par l'utilisateur pour le canal
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": "stop", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Cette commande crée une opération de longue durée (LRO, Long-running operation) que vous pouvez utiliser pour suivre la progression de votre requête. Pour en savoir plus, consultez Gérer les opérations de longue durée .
Arrêter le flux d'entrée
Si vous avez utilisé ffmpeg
pour envoyer le flux d'entrée, la connexion est automatiquement interrompue une fois le canal arrêté.
Supprimer la chaîne
Utilisez la méthode projects.locations.channels.delete
pour supprimer la chaîne. Vous devez supprimer le canal avant de pouvoir supprimer le point de terminaison d'entrée utilisé par le canal.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
PROJECT_NUMBER
: numéro de votre projet Google Cloud . Vous le trouverez dans le champ Numéro du projet de la page Paramètres IAM.LOCATION
: région où se trouve votre canal. 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-south1
asia-northeast1
asia-southeast1
australia-southeast1
europe-north1
europe-west1
europe-west2
europe-west3
europe-west4
CHANNEL_ID
: identifiant défini par l'utilisateur pour le canal
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": "delete", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Cette commande crée une opération de longue durée (LRO, Long-running operation) que vous pouvez utiliser pour suivre la progression de votre requête. Pour en savoir plus, consultez Gérer les opérations de longue durée .
Supprimer le point de terminaison d'entrée
Utilisez la méthode projects.locations.inputs.delete
pour supprimer le point de terminaison d'entrée.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
PROJECT_NUMBER
: numéro de votre projet Google Cloud . Vous le trouverez dans le champ Numéro du projet de la page Paramètres IAM.LOCATION
: emplacement de votre point de terminaison d'entrée. 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-south1
asia-northeast1
asia-southeast1
australia-southeast1
europe-north1
europe-west1
europe-west2
europe-west3
europe-west4
INPUT_ID
: identifiant défini par l'utilisateur pour le 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/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": "delete", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Cette commande crée une opération de longue durée (LRO, Long-running operation) que vous pouvez utiliser pour suivre la progression de votre requête. Pour en savoir plus, consultez Gérer les opérations de longue durée .
Supprimer le bucket Cloud Storage
Dans la console Google Cloud , accédez à la page du navigateur Cloud Storage.
Cochez la case à côté du bucket que vous avez créé.
Cliquez sur Supprimer.
Dans la boîte de dialogue qui s'affiche, cliquez sur Supprimer pour supprimer le bucket et son contenu.