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.
Reproducción de vídeo con HLS
HTTPLive Streaming (HLS)
Se puede utilizar HLS para la reproducción en directo. La latencia suele oscilar entre 3 y 5 segundos, pero puede oscilar entre 1 y 10 segundos, según el caso de uso, el reproductor y las condiciones de la red. Puedes usar un reproductor de terceros (como Video.js
Para ver una transmisión de vídeo de Kinesis mediante G etHLSStreaming SessionHLS, cree primero una sesión de streaming. URL Esta acción devuelve un objeto URL (que contiene un token de sesión) para acceder a la HLS sesión. A continuación, puede utilizarla URL en un reproductor multimedia o en una aplicación independiente para mostrar la transmisión.
importante
No todos los archivos multimedia enviados a Kinesis Video Streams se pueden reproducir HLS de forma automática. Consulte GetHLSStreamingSessionURL los requisitos de carga específicos.
Temas
Usa el AWS CLI para recuperar una sesión de HLS streaming URL
Siga el procedimiento que se indica a continuación AWS CLI para generar una sesión de HLS streaming URL para una transmisión de vídeo de Kinesis.
Para obtener instrucciones de instalación, consulte la Guía del AWS Command Line Interface usuario. Tras la instalación, configúrelo AWS CLI con las credenciales y la región.
Como alternativa, abra el AWS CloudShell terminal, que lo tiene AWS CLI instalado y configurado. Para obtener más información, consulte la guía del usuario de AWS CloudShell.
Recupere el HLS URL punto final para la transmisión de vídeo de Kinesis.
Escriba lo siguiente en la terminal:
aws kinesisvideo get-data-endpoint \ --api-name GET_HLS_STREAMING_SESSION_URL \ --stream-name
YourStreamName
Recibirás una respuesta similar a la siguiente:
{ "DataEndpoint": "https://b-
1234abcd
.kinesisvideo.aws-region
.amazonaws.com" }Realiza la URL solicitud HLS de sesión de streaming al punto final devuelto.
Recibirás una respuesta similar a la siguiente:
{ "HLSStreamingSessionURL": "https://b-
1234abcd
.kinesisvideo.aws-region
.amazonaws.com/hls/v1/getHLSMasterPlaylist.m3u8?SessionToken=CiAz...DkRE6M
~" }importante
No compartas ni guardes este token donde una entidad no autorizada pueda acceder a él. El token proporciona acceso al contenido de la transmisión. Proteja el token con las mismas medidas que utilizaría con sus AWS credenciales.
Puedes usar este URL y cualquier otro HLS reproductor para ver la HLS transmisión.
Por ejemplo, usa un reproductor VLC multimedia.
También puedes reproducir la HLS transmisión ingresando a la sesión de HLS transmisión URL en la barra de ubicación de los navegadores Apple Safari o Microsoft Edge.
Ejemplo: úsalo HLS en HTML y JavaScript
El siguiente ejemplo muestra cómo usar AWS SDK for JavaScript v2 para recuperar una sesión de HLS streaming para una transmisión de vídeo de Kinesis y reproducirla en una página web. El ejemplo muestra cómo reproducir vídeo en los siguientes reproductores:
Vea el código de ejemplo completo
Guía de código sobre los temas:
Importe el AWS SDK formulario JavaScript para navegadores
En la página web, incluya la siguiente etiqueta de script para importar el AWS SDK for JavaScript v2 al proyecto.
<script src="https://cdnjs.cloudflare.com/ajax/libs/aws-sdk/2.490.0/aws-sdk.min.js"></script>
Para obtener más información, consulte AWS SDKla JavaScript documentación.
Configurar el cliente de Kinesis Video Streams
Para acceder a la transmisión de vídeo conHLS, primero cree y configure el cliente de Kinesis Video Streams. Consulte Configuración de credenciales en un navegador web para ver otros métodos de autenticación.
const clientConfig = { accessKeyId: '
YourAccessKey
', secretAccessKey: 'YourSecretKey
', region: 'us-west-2
' }; const kinesisVideoClient = new AWS.KinesisVideo(clientConfig);
La aplicación recupera los valores necesarios de los cuadros de entrada de la HTML página.
Recupera el punto final para reproducirlo HLS
Utilice el cliente Kinesis Video Streams para invocar el punto final y recuperar GetDataEndpoint API el punto final.
const getDataEndpointOptions = { StreamName: '
YourStreamName
', APIName: 'GET_HLS_STREAMING_SESSION_URL' }; const getDataEndpointResponse = await kinesisVideoClient .getDataEndpoint(getDataEndpointOptions) .promise(); const hlsDataEndpoint = getDataEndpointResponse.DataEndpoint;
Este código almacena el punto final en la hlsDataEndpoint
variable.
Configurar el cliente multimedia archivado de Kinesis Video Streams
En la configuración del cliente de contenido multimedia archivado de Kinesis Video Streams, especifique el punto de conexión que obtuvo en el paso anterior.
const archivedMediaClientConfig = { accessKeyId: '
YourAccessKey'
, secretAccessKey: 'YourSecretKey'
, region: 'us-west-2
', endpoint: hlsDataEndpoint }; const kinesisVideoArchivedMediaClient = new AWS.KinesisVideoArchivedMedia(archivedMediaClientConfig);
Recupere la sesión de streaming HLS URL
Utilice el cliente multimedia archivado de Kinesis Video Streams para invocar el y recuperar GetHLSStreamingSessionURL API la reproducción. HLS URL
const getHLSStreamingSessionURLOptions = { StreamName: '
YourStreamName
', PlaybackMode: 'LIVE' }; const getHLSStreamingSessionURLResponse = await kinesisVideoArchivedMediaClient .getHLSStreamingSessionURL(getHLSStreamingSessionURLOptions) .promise(); const hlsUrl = getHLSStreamingSessionURLResponse.HLSStreamingSessionURL;
Muestre la HLS transmisión en la página web
Cuando tengas la sesión de HLS streamingURL, entrégala al reproductor de vídeo. El método para proporcionarla URL al reproductor de vídeo es específico del reproductor utilizado.
Solución de HLS problemas
En esta sección se describen los problemas que pueden surgir al utilizar HTTP Live Streaming (HLS) con Kinesis Video Streams.
Problemas
La recuperación de la sesión HLS de streaming se URL realiza correctamente, pero la reproducción falla en el reproductor de vídeo
Esta situación se produce cuando se puede recuperar correctamente una sesión de HLS streaming URL utilizandoGetHLSStreamingSessionURL
, pero el vídeo no se reproduce cuando URL se proporciona a un reproductor de vídeo.
Para solucionar este problema, pruebe lo siguiente:
-
Determine si la transmisión de vídeo se reproduce en la consola de Kinesis Video Streams. Observe los errores que se muestren en la consola.
-
Si la duración del fragmento es inferior a un segundo, auméntela a un segundo. Si la duración del fragmento es demasiado corta, es posible que el servicio limite el reproductor porque solicita fragmentos de vídeo con demasiada frecuencia.
-
Comprueba que cada sesión HLS de streaming URL esté siendo utilizada por un solo jugador. Si más de un jugador utiliza una misma sesión de HLS streamingURL, es posible que el servicio reciba demasiadas solicitudes y las limite.
-
Comprueba que el reproductor sea compatible con todas las opciones que especifiques para la sesión de HLS streaming. Pruebe distintas combinaciones de valores para los parámetros siguientes:
-
ContainerFormat
-
PlaybackMode
-
FragmentSelectorType
-
DiscontinuityMode
-
MaxMediaPlaylistFragmentResults
Algunos reproductores multimedia (como HTML5 los reproductores móviles) normalmente solo son compatibles HLS con el formato MP4 contenedor f. Es posible que otros reproductores multimedia (como Flash y reproductores personalizados) solo sean compatibles HLS con el formato contenedor MPEG TS. Se recomienda experimentar con el
ContainerFormat
parámetro para iniciar la solución de problemas. -
-
Verifique que cada fragmento tenga un número coherente de pistas. Compruebe que los fragmentos de la transmisión no cambien entre tener una pista de audio y vídeo o solo una pista de vídeo. Compruebe también que los ajustes del codificador (resolución y velocidad de fotogramas) no cambien entre los fragmentos de cada pista.
Latencia demasiado alta entre el productor y el reproductor
Esta situación se produce cuando hay una latencia demasiado alta entre el momento en que se captura el vídeo y el momento en que se reproduce en el reproductor de vídeo.
El vídeo se reproduce HLS por fragmento. Por lo tanto, la latencia no puede ser menor que la duración del fragmento. La latencia también incluye el tiempo necesario para almacenar los datos en el búfer y transferirlos. Si su solución requiere una latencia inferior a un segundo, considere la posibilidad de utilizarla GetMedia
API en su lugar.
Puede modificar los siguientes parámetros para reducir la latencia global, pero al ajustarlos, también puede reducirse la calidad de vídeo o puede aumentar la frecuencia de repetición de operaciones de almacenamiento en búfer.
-
Duración del fragmento: la duración del fragmento es la cantidad de vídeo entre las divisiones de la transmisión, controlada por la frecuencia de los fotogramas clave generados por el codificador de vídeo. El valor recomendado es de un segundo. Una duración de los fragmentos más breve significa que hay que esperar menos tiempo a que finalice el fragmento antes de transmitir los datos de vídeo al servicio. El servicio también procesa más rápido los fragmentos más cortos. Sin embargo, si la duración del fragmento es demasiado breve, aumenta la probabilidad de que el reproductor se quede sin contenido y tenga que detenerse y almacenar contenido en el búfer. Si la duración del fragmento es inferior a 500 milisegundos, el productor puede crear demasiadas solicitudes, lo que hace que el servicio las limite.
-
Velocidad de bits: una transmisión de vídeo con una velocidad de bits más baja tarda menos en leerse, escribirse y transmitirse. Sin embargo, una transmisión de vídeo con una tasa de bits inferior normalmente tiene una menor calidad de vídeo.
-
Recuento de fragmentos en las listas de reproducción multimedia: un reproductor sensible a la latencia solo debe cargar los fragmentos más recientes de una lista de reproducción multimedia. En su lugar, la mayoría de los reproductores comienzan con el fragmento más antiguo. Al reducir el número de fragmentos de la lista de reproducción, se reduce el tiempo de separación entre los fragmentos anteriores y los nuevos. Con un tamaño de lista de reproducción más pequeño, es posible que se omita un fragmento durante la reproducción si se produce un retraso en la adición de nuevos fragmentos a la lista de reproducción o si el reproductor tarda en recibir una lista de reproducción actualizada. Recomendamos usar de 3 a 5 fragmentos y usar un reproductor que esté configurado para cargar solo los fragmentos más recientes de una lista de reproducción.
-
Tamaño del búfer del reproductor: la mayoría de los reproductores de vídeo tienen una duración mínima del búfer configurable, normalmente con un valor predeterminado de 10 segundos. Para obtener la latencia más baja, puede establecer este valor en 0 segundos. Sin embargo, si lo hace, el reproductor volverá a almacenar el búfer si hay algún retraso en la producción de fragmentos, ya que el reproductor no tendrá ningún búfer para absorber el retraso.
-
Reproductor «catch up»: los reproductores de vídeo no suelen captar automáticamente la reproducción hasta la parte delantera del búfer de vídeo si el búfer se llena, como cuando un fragmento retrasado provoca una acumulación de fragmentos pendientes de reproducción. Un reproductor personalizado puede evitarlo descartando fotogramas o aumentando la velocidad de reproducción (por ejemplo, a 1,1x) para alcanzar el principio del búfer. Esto hace que la reproducción se entrecorte o que aumente de velocidad mientras el reproductor recupera el tiempo perdido, y la repetición de operaciones de almacenamiento en búfer puede ser más frecuente debido a que el tamaño del búfer es pequeño.