Introducción al SDK de transmisión para web de IVS | Transmisión en tiempo real
Este documento explica los pasos necesarios para comenzar a utilizar el SDK de transmisión para web de la transmisión en tiempo real de IVS.
Importaciones
Los componentes básicos de la transmisión en tiempo real se encuentran en un espacio de nombres diferente al de los módulos de transmisión raíz.
Uso de una etiqueta de script
Con las mismas importaciones de scripts, las clases y enumeraciones definidas en los ejemplos siguientes se pueden encontrar en el objeto global IVSBroadcastClient
:
const { Stage, SubscribeType } = IVSBroadcastClient;
Con npm
Las clases, enumeraciones y tipos también se pueden importar desde el módulo del paquete:
import { Stage, SubscribeType, LocalStageStream } from 'amazon-ivs-web-broadcast'
Compatibilidad con la representación del servidor
La biblioteca de fases del SDK de transmisión para web no se puede cargar en un contexto del servidor, ya que hace referencia a los elementos básicos del navegador necesarios para el funcionamiento de la biblioteca cuando se carga. Para solucionar este problema, cargue la biblioteca de forma dinámica, como se muestra en la demostración de transmisión web con Next y React
Solicitar permisos
La aplicación debe solicitar permiso para acceder a la cámara y al micrófono del usuario, y deberán ser ofrecidos mediante HTTPS. (Esto no es específico de Amazon IVS; es necesario para cualquier sitio web que necesite acceso a cámaras y micrófonos).
A continuación, le presentamos una función a modo de ejemplo que muestra cómo solicitar y capturar permisos para los dispositivos de audio y video:
async function handlePermissions() { let permissions = { audio: false, video: false, }; try { const stream = await navigator.mediaDevices.getUserMedia({ video: true, audio: true }); for (const track of stream.getTracks()) { track.stop(); } permissions = { video: true, audio: true }; } catch (err) { permissions = { video: false, audio: false }; console.error(err.message); } // If we still don't have permissions after requesting them display the error message if (!permissions.video) { console.error('Failed to get video permissions.'); } else if (!permissions.audio) { console.error('Failed to get audio permissions.'); } }
Para obtener más información, consulte la API de permisos
Enlistar los dispositivos disponibles
Para conocer los dispositivos que puede capturar, consulte el método MediaDevices.enumerateDevices()
const devices = await navigator.mediaDevices.enumerateDevices(); window.videoDevices = devices.filter((d) => d.kind === 'videoinput'); window.audioDevices = devices.filter((d) => d.kind === 'audioinput');
Recuperar MediaStream de un dispositivo
Después de obtener la lista de dispositivos disponibles, puede recuperar una transmisión de diversos dispositivos. Por ejemplo, puede utilizar el método getUserMedia()
para recuperar la transmisión de una cámara.
Si quisiera indicar desde cuál dispositivo desea capturar la transmisión, puede establecer de forma expresa deviceId
en las secciones audio
o video
de las restricciones de multimedia. De forma alternativa, puede omitir deviceId
y que los usuarios seleccionen los dispositivos desde el símbolo del navegador.
También puede especificar la resolución de cámara ideal mediante las restricciones width
y height
. (Obtenga más información sobre estas restricciones aquí
Para la transmisión en tiempo real, asegúrese de que el contenido multimedia esté limitado a una resolución de 720p. En concreto, sus valores de ancho y alto de la restricción de getUserMedia
y getDisplayMedia
no deben ser superiores a 921 600 (1280*720) cuando se multiplican.
const videoConfiguration = { maxWidth: 1280, maxHeight: 720, maxFramerate: 30, } window.cameraStream = await navigator.mediaDevices.getUserMedia({ video: { deviceId: window.videoDevices[0].deviceId, width: { ideal: videoConfiguration.maxWidth, }, height: { ideal:videoConfiguration.maxHeight, }, }, }); window.microphoneStream = await navigator.mediaDevices.getUserMedia({ audio: { deviceId: window.audioDevices[0].deviceId }, });