Composición del servidor (streaming en tiempo real) - Amazon IVS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Composición del servidor (streaming en tiempo real)

La composición del servidor utiliza un servidor IVS para mezclar el audio y el vídeo de todos los participantes del escenario y, a continuación, envía este vídeo mixto a un canal IVS (por ejemplo, para llegar a un público más amplio) o a un bucket S3. La composición del servidor se invoca a través de los puntos de conexión del plano de control del IVS en la región de origen del escenario.

Transmitir o grabar un escenario utilizando la composición del servidor ofrece numerosas ventajas, lo que lo convierte en una opción atractiva para los usuarios que buscan flujos de trabajo de vídeo eficientes y fiables basados en la nube.

Este diagrama ilustra cómo funciona la composición del servidor:

Transmitir un escenario mediante la composición del servidor.

Ventajas

En comparación con la composición del cliente, la composición del servidor tiene las siguientes ventajas:

  • Reducción de la carga de clientes: con la composición del servidor, la carga de procesar y combinar las fuentes de audio y vídeo pasa de los dispositivos cliente individuales al propio servidor. La composición del servidor elimina la necesidad de que los dispositivos cliente utilicen sus recursos de CPU y red para componer la vista y transmitirla al IVS. Esto significa que los espectadores pueden ver la transmisión sin que sus dispositivos tengan que realizar tareas que consumen muchos recursos, lo que puede mejorar la duración de la batería y disfrutar de una experiencia de visualización más fluida.

  • Calidad uniforme: la composición del servidor permite un control preciso de la calidad, la resolución y la velocidad de bits de la transmisión final. Esto garantiza una experiencia de visualización uniforme para todos los espectadores, independientemente de las capacidades de sus dispositivos individuales.

  • Resiliencia: al centralizar el proceso de composición en el servidor, la transmisión se vuelve más sólida. Incluso si el dispositivo de un publicador experimenta limitaciones o fluctuaciones técnicas, el servidor puede adaptarse y ofrecer una transmisión más fluida a toda la audiencia.

  • Eficiencia del ancho de banda: dado que el servidor se encarga de la composición, los publicadores de la presentación no tienen que gastar más ancho de banda para transmitir el vídeo a IVS.

Como alternativa, para retransmitir una escena a un canal de IVS, puede realizar la composición desde el lado del cliente; consulte Habilitar varios hosts en una transmisión de IVS en la Guía del usuario de transmisión de baja latencia de IVS.

API de IVS

La composición del servidor utiliza estos elementos clave de la API:

  • Un objeto EncoderConfiguration permite personalizar el formato del vídeo que se va a generar (altura, anchura, velocidad de bits y otros parámetros de transmisión). Puede reutilizar un EncoderConfiguration cada vez que llame al punto de conexión StartComposition.

  • Los puntos de conexión de Composición rastrean la composición del vídeo y lo envían a un canal IVS.

  • StorageConfiguration rastrea el bucket S3 en el que se graban las composiciones.

Para utilizar la composición del servidor, debe crear una EncoderConfiguration y adjuntarla al llamar al punto de conexión StartComposition. En este ejemplo, la configuración de SquareVideo EncoderConfiguration se utiliza en dos composiciones:

La composición del servidor utiliza dos elementos clave de la API.

Para obtener información completa, consulte la Referencia de la API de streaming en tiempo real de IVS.

Layouts (Diseños)

De forma predeterminada, la característica de composición del servidor utiliza un diseño de cuadrícula para organizar a los participantes del escenario en espacios del mismo tamaño:

Diseño de cuadrícula de composición del servidor.

Este diseño ofrece a los clientes la opción de configurar e invocar un espacio destacado. El espacio destacado aparece en la pantalla principal, y debajo se muestra a los demás participantes en el espacio del mismo tamaño:

El diseño de la cuadrícula de composición del servidor incluía un espacio destacado.

Nota: la resolución máxima admitida por un publicador de escenarios en la composición del servidor es de 1080p. Si un publicador envía un vídeo de más de 1080p, se representará como participante únicamente de audio.

Introducción

Requisitos previos

Para utilizar la composición del servidor, debe tener un escenario con publicadores activos y utilizar un canal IVS o un bucket S3 como destino de la composición. A continuación, describimos un posible flujo de trabajo que utiliza los eventos de EventBridge para iniciar una composición que retransmite el escenario a un canal de IVS cuando un participante publica. Como alternativa, puede iniciar y detener las composiciones según la lógica de su propia aplicación. Consulte Grabación del compuesto para ver otro ejemplo que muestra el uso de la composición del servidor para grabar un escenario directamente en un bucket S3.

  1. Cree un canal IVS. Consulte Introducción a la transmisión de baja latencia de Amazon IVS.

  2. Cree un escenario de IVS y tokens de participante para cada publicador.

  3. Cree una configuración EncoderConfiguration.

  4. Únase al escenario y publique en él. (Consulte las secciones "Publicación y suscripción" de las guías del SDK para transmisiones en tiempo real: Web, Android e iOS).

  5. Cuando reciba un evento de EventBridge publicado por participantes, llame a StartComposition.

  6. Espere unos segundos y vea la vista compuesta en la reproducción del canal.

Flujo de trabajo de composición del servidor que utiliza eventos de EventBridge para iniciar una composición cuando un participante publica.

Nota: una composición se apaga automáticamente después de 60 segundos de inactividad por parte de los publicadores participantes en el escenario. En ese momento, la composición finaliza y pasa a un estado STOPPED. Una composición se elimina automáticamente después de unos minutos en ese estado STOPPED.

Instrucciones de la CLI

El uso de AWS CLI es una opción avanzada y requiere que primero descargue y configure la CLI en su equipo. Para obtener más información, consulte la Guía del usuario de la interfaz de línea de comandos de AWS.

Ahora puede utilizar la CLI para crear y administrar recursos. Los puntos de conexión de la Composición se encuentran debajo del espacio de nombres ivs-realtime.

Cree el recurso de EncoderConfiguration

Un EncoderConfiguration es un objeto que permite personalizar el formato del vídeo generado (altura, anchura, velocidad de bits y otros parámetros de streaming). Puede reutilizar una EncoderConfiguration cada vez que llame al punto de conexión de Composición, como se explica en el siguiente paso.

El siguiente comando crea un recurso EncoderConfiguration que configura los parámetros de composición de vídeo del servidor, como la velocidad de bits del vídeo, la velocidad de fotogramas y la resolución:

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

La respuesta es:

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

Inicie una Composición

Con el ARN de EncoderConfiguration proporcionado en la respuesta anterior, cree su recurso de composición:

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 respuesta mostrará que la Composición se creó con un estado STARTING. Una vez que la Composición comience a publicarse, el estado pasará a ACTIVE. (Para ver el estado, llame al punto de conexión ListCompositions o GetComposition).

Una vez que una Composición sea ACTIVE, la vista compuesta del escenario IVS es visible en el canal IVS mediante ListCompositions:

aws ivs-realtime list-compositions

La respuesta es:

{ "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": {} } ] }

Nota: es necesario que los publicadores participantes publiquen activamente en el escenario para mantener viva la composición. Para obtener más información, consulte las secciones "Publicaciones y suscripciones” de las guías del SDK para transmisiones en tiempo real: Web, Android e iOS. Debe crear un token de escenario distinto para cada participante.

Habilitar pantalla compartida

Para usar un diseño de pantalla compartida fijo, siga los pasos que se indican a continuación.

Cree el recurso de EncoderConfiguration

El siguiente comando crea un recurso EncoderConfiguration que configura los parámetros de composición del servidor (velocidad de bits, velocidad de fotogramas y resolución del vídeo).

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

Cree un token de participante en el escenario con un atributo screen-share. Como especificaremos screen-share como el nombre del espacio featured, necesitamos crear un token de escenario con el atributo screen-share establecido en true:

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

La respuesta es:

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

Comience la composición

Para iniciar la composición con la característica de compartir pantalla, utilizamos este comando:

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 respuesta es:

{ "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" : { } } }

Cuando el participante del escenario E813MFklPWLF se una al escenario, el vídeo de ese participante se mostrará en el espacio destacado y todos los demás publicadores del escenario se renderizarán debajo del espacio:

Iniciar la composición con la característica de pantalla compartida.

Detenga la composición

Para detener una composición en cualquier momento, llame al punto de conexión StopComposition:

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

Vida útil de la composición

Use el siguiente diagrama para entender las transiciones de estado de una Composición. A grandes rasgos, el ciclo de vida de una Composición es el siguiente:

  1. Se crea un recurso de Composición cuando el usuario llama al punto de conexión StartComposition

  2. Una vez que IVS inicie correctamente la composición, se enviará un evento EventBridge de “Cambio de estado de composición de IVS (inicio de sesión)”. Consulte Uso de EventBridge con el streaming en tiempo real de IVS para obtener más información sobre los eventos.

  3. Una vez que una Composición está en estado activo, puede ocurrir lo siguiente:

    • El usuario detiene la Composición: si se llama al punto de conexión de StopComposition, IVS inicia un cierre correcto de la Composición y envía eventos de “Final de destino” seguidos de un evento de “Fin de sesión”.

    • La Composición se cierra automáticamente: si ningún participante publica activamente en la etapa IVS, la Composición se finaliza automáticamente después de 60 segundos y se envían los eventos de EventBridge.

    • Error en el destino: si un destino falla inesperadamente (por ejemplo, si se elimina el canal IVS), el destino pasa al estado RECONNECTING y se envía un evento de “Reconexión del destino”. Si la recuperación no es posible, el IVS cambia el destino al estado FAILED y se envía un evento de “Error en el destino”. El IVS mantiene viva la composición si al menos uno de sus destinos está activo.

  4. Una vez que la composición está en el estado STOPPED o FAILED, se limpia automáticamente después de cinco minutos. (Entonces, ListCompositions o GetComposition ya no la recuperan).

Ciclo de vida de un recurso de Composición del servidor.