Amazon Kinesis Video Streams
Guía para desarrolladores

Soporte para la API y las Transmisión de vídeo de Kinesis Producer Libraries

Transmisión de vídeo de Kinesis proporciona API para crear y administrar transmisiones y leer o escribir datos multimedia en una transmisión y desde ella. La consola de Transmisión de vídeo de Kinesis, además de tener funcionalidad de administración, también es compatible con la reproducción de vídeo en vivo y bajo demanda. Transmisión de vídeo de Kinesis también ofrece un conjunto de bibliotecas de productores (Producer Libraries) que puede utilizar en su código de aplicación para extraer datos de sus orígenes de medios y cargarlos en su transmisión de vídeo de Kinesis.

API de Transmisión de vídeo de Kinesis

Transmisión de vídeo de Kinesis proporciona API para crear y administrar transmisiones de vídeo de Kinesis. 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 productores – Transmisión de vídeo de Kinesis proporciona una API PutMedia para escribir datos de medios 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, Transmisión de vídeo de Kinesis asigna un número de fragmento único, en orden ascendente. También almacena marcas temporales del lado del productor y el servidor para cada fragmento, como metadatos específicos a Transmisión de vídeo de Kinesis.

  • API de consumidores – Las siguientes API permiten a los consumidores 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 necesita devolver fragmentos más nuevos que no están archivados todavía, GetMedia cambiará a leer fragmentos desde un búfer de transmisión 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 fragmento, marcas temporales del lado del productor o el servidor, etcétera.

      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 podría optar por dividir la lista en sublistas y hacer que procesos de trabajo (por ejemplo, varias instancias Amazon EC2) recuperen los fragmentos en paralelo utilizando GetMediaFromFragmentList y 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. Tras recibir los datos, Transmisión de vídeo de Kinesis almacena los datos de medios entrantes como fragmentos de Transmisión de vídeo de Kinesis. Cada fragmento consta de los elementos siguientes:

  • Una copia de los metadatos de medios

  • Un fragmento

  • Metadatos específicos de Transmisión de vídeo de Kinesis, por ejemplo, el número de fragmento y las marcas temporales del lado del servidor y el productor

Cuando un consumidor solicita metadatos de medios, Transmisión de vídeo de Kinesis devuelve una transmisión de fragmentos, comenzando 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, Transmisión de vídeo de Kinesis también guarda una copia del fragmento en el almacén de datos.

Producer Libraries

Después de crear una transmisión de vídeo de Kinesis, puede comenzar a enviarle datos. Puede utilizar estas bibliotecas en su código de aplicación para extraer datos de sus orígenes de medios y cargarlos en su transmisión de vídeo de Kinesis. Para obtener más información acerca de las producer libraries, consulte Transmisión de vídeo de Kinesis Producer Libraries.