Compatibilidad con la API de Kinesis Video Streams y las bibliotecas de productores - Amazon Kinesis Video Streams

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.

Compatibilidad con la API de Kinesis Video Streams y las bibliotecas de productores

Kinesis Video Streams proporciona API para crear y administrar transmisiones y leer o escribir datos multimedia en y desde una transmisión. La consola Kinesis Video Streams, además de la funcionalidad de administración, también admite la transmisión en directo video-on-demand y la reproducción. Kinesis Video Streams también proporciona un conjunto de bibliotecas de productores que puede usar en el código de su aplicación para extraer datos de sus fuentes multimedia y cargarlos en su transmisión de vídeo de Kinesis.

API de Kinesis Video Streams

Kinesis Video Streams proporciona API para crear y administrar Kinesis Video Streams. También proporciona API para leer y escribir datos de medios en una transmisión, tal y como se indica a continuación:

  • API de productor: Kinesis Video Streams proporciona PutMedia una API para escribir datos multimedia en una transmisión de vídeo de Kinesis. En una solicitud PutMedia, el productor envía una transmisión de fragmentos de medios. Un fragmento es una secuencia de fotogramas autónoma. Los fotogramas que pertenecen a un fragmento no deben tener ningún tipo de dependencia de fotogramas de otros fragmentos. Para obtener más información, consulte PutMedia.

    A medida que llegan los fragmentos, Kinesis Video Streams asigna un número de fragmento único, en orden creciente. También almacena las marcas de tiempo del lado del productor y del lado del servidor para cada fragmento, como metadatos específicos de Kinesis Video Streams.

  • API para consumidores: los consumidores pueden usar las siguientes API para obtener datos de una transmisión:

    • GetMedia: al utilizar esta API, los consumidores deben identificar el fragmento de inicio. Posteriormente, la API devuelve los fragmentos en el orden en el que se agregaron a la transmisión (en orden ascendente por número de fragmento). Los datos de medios en los fragmentos se empaquetan en un formato estructurado, como Matroska (MKV). Para obtener más información, consulte GetMedia.

      nota

      GetMedia sabe dónde están los fragmentos (archivados en el almacén de datos o disponibles en tiempo real). Por ejemplo, si GetMedia determina que el fragmento de inicio está archivado, comienza a devolver fragmentos desde el almacén de datos. Cuando debe devolver fragmentos más recientes que aún no están archivados, GetMedia pasa a leer fragmentos de un búfer de flujo en memoria.

      Este es un ejemplo de un consumidor continuo, que procesa fragmentos en el orden en el que se reciben en la transmisión.

      GetMedia permite que las aplicaciones de procesamiento de vídeo fallen o se retrasen y después se pongan al día sin esfuerzo adicional. Al usar GetMedia, las aplicaciones pueden procesar datos archivados en el almacén de datos, y a medida que la aplicación se pone al día, GetMedia sigue enviando datos de medios en tiempo real a medida que llegan.

    • GetMediaFromFragmentList (y ListFragments): las aplicaciones de procesamiento por lotes se consideran consumidores sin conexión. Los consumidores sin conexión podrían optar por recuperar explícitamente fragmentos de medios particulares o intervalos de vídeo combinando las API ListFragments y GetMediaFromFragmentList. ListFragments y GetMediaFromFragmentList permiten que una aplicación identifique los segmentos de vídeo durante un intervalo de tiempo o un intervalo de fragmentos específico y, a continuación, recupere esos fragmentos secuencialmente o de forma paralela para su procesamiento. Este enfoque es adecuado para conjuntos de aplicaciones MapReduce, que deben procesar rápidamente grandes cantidades de datos en paralelo.

      Por ejemplo, supongamos que un consumidor quiere procesar los fragmentos de vídeo de todo un día. El consumidor haría lo siguiente:

      1. Obtener una lista de fragmentos llamando a la API ListFragments y especificar un intervalo de tiempo para seleccionar la colección de fragmentos deseada.

        La API devuelve los metadatos de todos los fragmentos en el intervalo de tiempo especificado. Los metadatos proporcionan información como el número de fragmentos, las marcas horarias del lado del productor y del lado del servidor, etc.

      2. Tomar la lista de metadatos de fragmentos y recuperar fragmentos, en cualquier orden. Por ejemplo, para procesar todos los fragmentos del día, el consumidor puede optar por dividir la lista en sublistas y hacer que los trabajadores (por ejemplo, varias instancias de Amazon EC2) busquen los fragmentos en paralelo mediante y GetMediaFromFragmentList los procesen en paralelo.

En el siguiente diagrama se muestra el flujo de datos de fragmentos durante estas llamadas a la API.

Diagrama de flujo de datos para fragmentos durante las llamadas a la API

Cuando un productor envía una solicitud PutMedia, envía los metadatos de medios en la carga y, a continuación, envía una secuencia de fragmentos de datos de medios. Al recibir los datos, Kinesis Video Streams almacena los datos multimedia entrantes como fragmentos de Kinesis Video Streams. Cada fragmento consta de los elementos siguientes:

  • Una copia de los metadatos de medios

  • Un fragmento

  • Metadatos específicos de Kinesis Video Streams; por ejemplo, el número de fragmento y las marcas horarias del lado del servidor y del productor

Cuando un consumidor solicita metadatos multimedia, Kinesis Video Streams devuelve una secuencia de fragmentos, empezando por el número de fragmento que especifique en la solicitud.

Si habilita la persistencia de datos para la transmisión, después de recibir un fragmento en la transmisión, Kinesis Video Streams también guarda una copia del fragmento en el banco de datos.

Patrón de detección de terminales

API REST del plano de control

Para acceder a las API REST del plano de control de Kinesis Video Streams, utilice los puntos de conexión del servicio Kinesis Video Streams.

API REST de Data Plane

Kinesis Video Streams se ha creado con una arquitectura celular para garantizar mejores propiedades de escalado y aislamiento del tráfico. Como cada transmisión está mapeada a una celda específica de una región, la aplicación debe usar los puntos finales correctos específicos de la celda a los que se ha mapeado la transmisión. Al acceder a las API REST de Data Plane, tendrá que gestionar y mapear usted mismo los puntos de enlace correctos. Este proceso, el patrón de detección de puntos finales, se describe a continuación:

  1. El patrón de detección de puntos finales comienza con una llamada a una de las GetEndpoints acciones. Estas acciones pertenecen al plano de control.

  2. Guarde en caché y reutilice el punto final.

  3. Si el punto final almacenado en caché ya no funciona, realice una nueva llamada GetEndpoints a para actualizar el punto final.

Bibliotecas de productores

Después de crear una transmisión de vídeo de Kinesis, puede empezar a enviar datos a la transmisión. En el código de su aplicación, puede utilizar estas bibliotecas para extraer datos de sus fuentes multimedia y cargarlos en la transmisión de vídeo de Kinesis. Para obtener más información acerca de las producer libraries, consulte Bibliotecas para productores de Kinesis Video Streams.