Montage côté serveur (Streaming en temps réel) - Amazon IVS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Montage côté serveur (Streaming en temps réel)

Le montage côté serveur utilise un serveur IVS pour mixer le son et la vidéo de tous les participants à la scène, puis envoie cette vidéo mixée à un canal IVS (par exemple, pour atteindre un public plus large) ou à un compartiment S3. Le montage côté serveur est invoqué via les points de terminaison du plan de contrôle IVS situés dans la région d’origine de la scène.

Diffuser ou enregistrer une scène à l’aide d’un montage côté serveur offre de nombreux avantages, ce qui en fait un choix intéressant pour les utilisateurs qui recherchent des flux de travail vidéos efficaces et fiables sur le cloud.

Ce schéma illustre le fonctionnement du montage côté serveur :

Diffusion d’une scène à l’aide d’un montage côté serveur.

Avantages

Par rapport au montage côté client, le montage côté serveur présente les avantages suivants :

  • Réduction de la charge client : Grâce au montage côté serveur, la charge du traitement et de la combinaison des sources audio et vidéo est transférée des appareils clients individuels au serveur lui-même. Le montage côté serveur évite aux appareils clients d’utiliser leur processeur et leurs ressources réseau pour composer la vue et la transmettre à IVS. Cela signifie que les spectateurs peuvent regarder l’émission sans que leurs appareils aient à gérer des tâches gourmandes en ressources. Cela peut améliorer l’autonomie de la batterie ainsi que les expériences de visionnage.

  • Qualité constante : La montage côté serveur offre un contrôle précis de la qualité, de la résolution et du débit du flux final. Cela garantit une expérience visuelle cohérente pour tous les spectateurs, quelles que soient les capacités de leurs appareils individuels.

  • Résilience : En centralisant le processus de montage sur le serveur, la diffusion devient plus robuste. Même si l’appareil d’un diffuseur de publication présente des limites ou des fluctuations techniques, le serveur peut s’adapter et fournir un flux plus fluide à l’ensemble du public.

  • Efficacité de la bande passante : Puisque le serveur gère le montage, les diffuseurs de publication de scènes n’ont pas à dépenser de bande passante supplémentaire pour diffuser la vidéo sur IVS.

Pour diffuser une scène sur une chaîne IVS, vous pouvez également effectuer le montage côté client ; consultez Activation de plusieurs hôtes sur un flux IVS dans le Guide de l’utilisateur du streaming IVS à faible latence.

API IVS

Le montage côté serveur utilise les éléments clés de l’API suivants :

  • Un objet EncoderConfiguration vous permet de personnaliser le format de la vidéo à générer (hauteur, largeur, débit et autres paramètres de diffusion). Vous pouvez réutiliser un objet EncoderConfiguration chaque fois que vous appelez le point de terminaison StartComposition.

  • Les points de terminaison de montage suivent le montage vidéo et le transmettent sur un canal IVS.

  • StorageConfiguration suit le compartiment S3 dans lequel les montages sont enregistrés.

Pour utiliser le montage côté serveur, vous devez créer un objet EncoderConfiguration et l’attacher lorsque vous appelez le point de terminaison StartComposition. Dans cet exemple, l’objet EncoderConfiguration SquareVideo est utilisé dans deux montages :

Le montage côté serveur utilise deux éléments clés de l’API.

Pour obtenir des informations complètes, consultez la Référence de l’API de streaming en temps réel Amazon IVS.

Layouts

Par défaut, la fonction de montage côté serveur utilise une disposition en grille pour organiser les participants à la scène dans des créneaux de taille égale :

Disposition de la grille du montage côté serveur.

Cette disposition permet aux clients de configurer et d’invoquer un emplacement en vedette. L’emplacement sélectionné se trouve sur l’écran principal, tandis que les autres participants apparaissent en dessous dans des emplacements de même taille :

Emplacement inclus dans la disposition de la grille du montage côté serveur.

Remarque : La résolution maximale prise en charge par un diffuseur de publication de scènes pour les montages côté serveur est de 1080p. Si un diffuseur de publication envoie une vidéo d’une résolution supérieure à 1080p, il sera affiché en tant que participant audio uniquement.

Démarrer

Prérequis

Pour utiliser le montage côté serveur, vous devez disposer d’une scène avec des diffuseurs de publication actifs et utiliser un canal IVS et/ou un compartiment S3 comme destination de montage. Nous décrivons ci-dessous un flux de travail possible qui utilise les événements EventBridge pour démarrer un montage qui diffuse la scène sur une chaîne IVS lorsqu’un participant diffuse. Vous pouvez également démarrer et arrêter des montages en fonction de la logique de votre propre application. Voir Enregistrement composite pour un autre exemple illustrant l’utilisation d’un montage côté serveur pour enregistrer une scène directement dans un compartiment S3.

  1. Créez un canal IVS. Consultez Démarrer avec la diffusion à faible latence d’Amazon IVS.

  2. Créez une scène IVS et des jetons de participation pour chaque diffuseur de publication.

  3. Créez un objet EncoderConfiguration.

  4. Joignez-vous à la scène et diffusez dessus. (Consultez les sections « Diffusion et abonnement » des guides du SDK de diffusion en temps réel : Web, Android et iOS.)

  5. Lorsque vous recevez un événement EventBridge diffusé par un participant, appelez StartComposition.

  6. Patientez quelques secondes pour voir la vue composite apparaître lors de la lecture des chaînes.

Flux de travail de montage côté serveur qui utilise les événements EventBridge pour démarrer un montage lorsqu’un participant publie.

Remarque : Un montage s’arrête automatiquement après 60 secondes d’inactivité de la part du diffuseur de publication participant à la scène. À ce stade, le montage prend fin et passe à un état STOPPED. Un montage est automatiquement supprimé après quelques minutes passées dans l’état STOPPED.

Instructions de la CLI

L’utilisation de l’AWS CLI est une option avancée qui nécessite le téléchargement et la configuration de la CLI sur votre machine. Pour plus de détails, consultez le ‬Guide de l’utilisateur de l’Interface de ligne de commande AWS‭.

Vous pouvez désormais utiliser l’interface de ligne de commande pour créer et gérer des ressources. Les points de terminaison du montage se trouvent sous l’espace de noms ivs-realtime.

Création de la ressource EncoderConfiguration

Une ressource EncoderConfiguration vous permet de personnaliser le format de la vidéo à générer (hauteur, largeur, débit et autres paramètres de diffusion). Vous pouvez réutiliser une ressource EncoderConfiguration chaque fois que vous appelez le point de terminaison Montage, comme expliqué à l’étape suivante.

La commande ci-dessous crée une ressource EncoderConfiguration qui configure les paramètres de montage vidéo côté serveur, tels que le débit vidéo, la fréquence d’images et la résolution :

aws ivs-realtime create-encoder-configuration --name "MyEncoderConfig" --video "bitrate=2500000,height=720,width=1280,framerate=30"

La réponse est :

{ "encoderConfiguration": { "arn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/9W59OBY2M8s4", "name": "MyEncoderConfig", "tags": {}, "video": { "bitrate": 2500000, "framerate": 30, "height": 720, "width": 1280 } } }

Commencer un montage

À l’aide de l’ARN EncoderConfiguration fourni dans la réponse ci-dessus, créez votre ressource de montage :

aws ivs-realtime start-composition --stage-arn "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik" --destinations '[{"channel": {"channelArn": "arn:aws:ivs:us-east-1:927810967299:channel/DOlMW4dfMR8r", "encoderConfigurationArn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/9W59OBY2M8s4"}}]'

La réponse indiquera que le montage est créé avec un état STARTING. Une fois que le Montage commence à diffuser la composition, l’état passe à ACTIVE. (Vous pouvez consulter l’état en appelant le point de terminaison ListCompositions ou GetComposition.)

Une fois qu’un montage est ACTIVE, la vue composite de la scène IVS est visible sur le canal IVS, à l’aide de ListCompositions :

aws ivs-realtime list-compositions

La réponse est :

{ "compositions": [ { "arn": "arn:aws:ivs:us-east-1:927810967299:composition/YVoaXkKdEdRP", "destinations": [ { "id": "bD9rRoN91fHU", "startTime": "2023-09-21T15:38:39+00:00", "state": "ACTIVE" } ], "stageArn": "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik", "startTime": "2023-09-21T15:38:37+00:00", "state": "ACTIVE", "tags": {} } ] }

Remarque : Pour que le montage reste actif, les diffuseurs de publication participants doivent diffuser activement sur la scène. Pour plus d’informations, consultez les sections « Diffusion et abonnement » des guides du SDK de diffusion en temps réel : Web, Android et iOS. Vous devez créer un jeton de scène distinct pour chaque participant.

Activer le partage d’écran

Pour utiliser une disposition de partage d’écran fixe, suivez les étapes indiquées ci-dessous.

Création de la ressource EncoderConfiguration

La commande ci-dessous crée une ressource EncoderConfiguration qui configure les paramètres de montage côté serveur (débit vidéo, fréquence d’images et résolution).

aws ivs-realtime create-encoder-configuration --name "test-ssc-with-screen-share" --video={bitrate=2000000,framerate=30,height=720,width=1280}

Créez un jeton de participant à la scène avec un attribut screen-share. Comme nous allons spécifier screen-share en tant que nom de l’emplacement featured, nous devons créer un jeton de scène dont l’attribut screen-share est défini sur true :

aws ivs-realtime create-participant-token --stage-arn "arn:aws:ivs:us-east-1:123456789012:stage/u9OiE29bT7Xp" --attributes screen-share=true

La réponse est :

{ "participantToken": { "attributes": { "screen-share": "true" }, "expirationTime": "2023-08-04T05:26:11+00:00", "participantId": "E813MFklPWLF", "token": "eyJhbGciOiJLTVMiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjE2OTExMjY3NzEsImlhdCI6MTY5MTA4MzU3MSwianRpIjoiRTgxM01Ga2xQV0xGIiwicmVzb3VyY2UiOiJhcm46YXdzOml2czp1cy1lYXN0LTE6OTI3ODEwOTY3Mjk5OnN0YWdlL3U5T2lFMjliVDdYcCIsInRvcGljIjoidTlPaUUyOWJUN1hwIiwiZXZlbnRzX3VybCI6IndzczovL3VzLWVhc3QtMS5ldmVudHMubGl2ZS12aWRlby5uZXQiLCJ3aGlwX3VybCI6Imh0dHBzOi8vYjJlYTVjMmZmMzU1Lmdsb2JhbC53aGlwLmxpdmUtdmlkZW8ubmV0IiwiYXR0cmlidXRlcyI6eyJzY3JlZW4tc2hhcmUiOiJ0cnVlIn0sImNhcGFiaWxpdGllcyI6eyJhbGxvd19wdWJsaXNoIjp0cnVlLCJhbGxvd19zdWJzY3JpYmUiOnRydWV9LCJ2ZXJzaW9uIjoiMC4zIn0.MGUCMFvMzv35O4yVzM9tIWZl7n3mmFQhleqsRSBx_G2qT2YUDlWSNg6H1vL7sAWQMeydSAIxAIvdfqt3Fh1MLiyelc9NnTjI5hL3YPKqDX6J3NDH1fksh8_5y1jztoPDy4yVA5OmtA" } }

Commencer le montage

Pour démarrer le montage à l’aide de la fonctionnalité de partage d’écran, nous utilisons cette commande :

aws ivs-realtime start-composition --stage-arn "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik" --destinations '[{"channel": {"channelArn": "arn:aws:ivs:us-east-1:927810967299:channel/DOlMW4dfMR8r", "encoderConfigurationArn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/DEkQHWPVaOwO"}}]' --layout "grid={featuredParticipantAttribute=screen-share}"

La réponse est :

{ "composition" : { "arn" : "arn:aws:ivs:us-east-1:927810967299:composition/B19tQcXRgtoz", "destinations" : [ { "configuration" : { "channel" : { "channelArn" : "arn:aws:ivs:us-east-1:927810967299:channel/DOlMW4dfMR8r", "encoderConfigurationArn" : "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/DEkQHWPVaOwO" }, "name" : "" }, "id" : "SGmgBXTULuXv", "state" : "STARTING" } ], "layout" : { "grid" : { "featuredParticipantAttribute" : "screen-share" } }, "stageArn" : "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik", "startTime" : "2023-09-27T21:32:38Z", "state" : "STARTING", "tags" : { } } }

Lorsque le participant E813MFklPWLF rejoint la scène, la vidéo de ce participant sera affichée dans l’emplacement en vedette, et tous les autres diffuseurs de publication d’scène seront affichés en dessous de l’emplacement :

Démarrer le montage à l’aide de la fonctionnalité de partage d’écran.

Arrêter le montage

Pour arrêter un montage à tout moment, appelez le point de terminaison StopComposition :

aws ivs-realtime stop-composition --arn arn:aws:ivs:us-east-1:927810967299:composition/B19tQcXRgtoz

Cycle de vie des montages

Utilisez le schéma ci-dessous pour comprendre les transitions d’état d’un montage. Au niveau général, le cycle de vie d’un montage est le suivant :

  1. Une ressource de montage est créée lorsque l’utilisateur appelle le point de terminaison StartComposition

  2. Une fois qu’IVS démarre correctement le montage, un événement EventBridge « Changement d’état du montage IVS (début de session) » est envoyé. Consultez Utilisation d’Amazon EventBridge avec le streaming en temps réel IVS pour plus de détails sur les événements.

  3. Une fois qu’un montage est actif, les événements suivants peuvent se produire :

    • L’utilisateur arrête le montage : Si le point de terminaison StopComposition est appelé, IVS initie un arrêt progressif du montage en envoyant des événements de « fin de destination » suivis d’un événement de « fin de session ».

    • Le montage s’arrête automatiquement : Si aucun participant ne publie activement sur la scène IVS, le montage est finalisé automatiquement au bout de 60 secondes et les événements EventBridge sont envoyés.

    • Défaillance de destination : Si une destination échoue de manière inattendue (par exemple, le canal IVS est supprimé), la destination passe à l’état RECONNECTING et un événement de « reconnexion de destination » est envoyé. Si la restauration est impossible, IVS fait passer la destination à l’état FAILED et un événement « Échec de la destination » est envoyé. IVS maintient le montage en fonctionnement si au moins une de ses destinations est active.

  4. Une fois que le montage est à l’état STOPPED ou FAILED, il est automatiquement effacé au bout de cinq minutes. (Le cas échéant, il ne peut plus être récupéré par ListCompositions ou GetComposition.)

Cycle de vie d’une ressource de montage côté serveur.