Blog de Amazon Web Services (AWS)

Extracción de tramas en canales en vivo

Por Cassiano Ricardo Tesseroli, Solutions Architect, AWS Brasil
Joāo Seike, Solutions Architect, AWS Brasil

 

La extracción de fotogramas es una funcionalidad esencial para cualquier aplicación que tenga como objetivo analizar contenido de vídeo. Generalmente obtenemos datos relevantes del contenido utilizando herramientas AI/ML o incluso técnicas de visión por computadora. Un caso frecuente de uso de estos datos (conocidos como metadatos) es la búsqueda de: objetos, personas o lugares que se muestran en el vídeo en algún momento. Por ejemplo: Encuentra todas las películas en las que participó el actor «The Rock». O toda la serie que mostró coches de carreras.

 

¿Qué es un marco?

[1]Cuando se muestra un vídeo, cada fotograma parpadea en la pantalla durante un corto tiempo y se reemplaza inmediatamente por el siguiente. La persistencia de la visión mezcla los marcos, produciendo la ilusión de una imagen en movimiento.

[2]El concepto de FPS «Frame por segundo» consiste en el número de fotogramas que se muestran en solo un segundo. Ejemplo de la siguiente imagen:

Cuando realizamos la extracción de fotogramas, podemos configurar el número de imágenes que se extraerán por segundo.
En AWS podemos extraer tramas de diferentes maneras. En este blog exploraremos el uso de los servicios gestionados de AWS Elemental MediAlive (Extract) y Amazon Simple Storage Service (Amazon S3)

 

AWS Elemental MediaLive

AWS Elemental MediAlive es un servicio de procesamiento de vídeo en vivo de nivel de transmisión. El servicio le permite crear secuencias de vídeo de alta calidad para la transmisión de TV y entregar a dispositivos multitela conectados a Internet, como televisores conectados, tabletas, teléfonos inteligentes y decodificadores conectados. El servicio funciona codificando secuencias de vídeo en vivo en tiempo real, procesando una fuente de vídeo en vivo más grande y comprimiendo en versiones más pequeñas para su distribución a los espectadores.

 

Amazon S3

Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos que ofrece escalabilidad, disponibilidad de datos, seguridad y rendimiento líderes del sector. Esto significa que los clientes de todos los tamaños e industrias pueden utilizarlo para almacenar y proteger cualquier cantidad de datos en una variedad de casos de uso, como lagos de datos, sitios web, aplicaciones móviles, copias de seguridad y restauración, archivado, aplicaciones empresariales, dispositivos IoT y análisis de big data.

 

Pasos de implementación

El primer paso para iniciar la configuración es crear un depósito que utilizaremos como salida donde se almacenarán los fotogramas extraídos en formato de imagen (JPEG) almacenados en Amazon S3 y, a continuación, crear los canales en AWS Elemental MediAlive.

Paso a paso:

  1. Creación de depósitos para almacenar marcos extraídos: en la consola de AWS utilice la búsqueda para encontrar Amazon S3, haga clic en el vínculo «S3» para abrir la página de servicio.

Luego, a la derecha de la pantalla, presione el botón «Crear cubo».

Introduzca el nombre del depósito y luego haga clic en el botón «Crear depósito» ubicado en la parte inferior de la página, guarde el nombre del depósito para su uso posterior.

Obs. : El nombre del bucket debe ser único y tener entre 3 y 63 caracteres, la lista completa de reglas está en el enlace.

 

2. Después de crear el bucket, ahora use el cuadro de búsqueda encontrar el «MediAlive»:

 

  1. Haga clic en «Crear canal».
    4. Agregue un nombre de canal y elija el rol de IAM. Si no tiene uno preexistente, utilice la opción «Crear rol a partir de plantilla» y se creará un nuevo rol con los permisos necesarios.

5. En el menú de la izquierda, haga clic en «ADD» en la opción «Adjuntos de entrada» y en la secuencia «Crear entrada».

.

  1. Agregue un nombre para la entrada «Input» y seleccione la opción «HLS», luego en el campo de texto «Fuente de entrada A» pegue la URL que vamos a utilizar prueba:

    URL para probar:
    https://s3.amazonaws.com/mediaimmersion/medialive/vod/vanlife.m3u8

 

  1. Cambie el valor del combo «Input class» a SINGLE_PIPELINE y pulse el botón «Crear» situado en la parte inferior de la página.
    Obs. : La opción SINGLE_PIPELINE se utiliza cuando no tenemos redundancia del contenido enviado a AWS Elemental MediAlive, en casos de uso de producción, la recomendación es la opción: STANDARD_PIPELINE.

 

8. En el siguiente paso, debemos adjuntar la entrada al canal, seleccionar la entrada en el combo «Entrada», ingresar un nombre en el campo «Nombre de archivo adjunto» y presionar confirmar «Confirmar».

 

  1. En la configuración de entrada modificaremos el valor del campo «Source End Behavior» para reproducir el vídeo infinitamente (bucle).

 

  1. En el menú de la derecha agregue una salida:

 

 

  1. Seleccione la opción «Captura de fotogramas» y pulse el botón «Confirmar»

 

 

 

  1. Ahora vamos a configurar las opciones de captura de fotogramas, rellene el campo «URL» con la URL del depósito creado en el paso 01 y un literal de su elección, en el ejemplo debajo de la palabra «marcos» se utilizó, y haga clic en «Configuración» en la parte inferior de la pantalla.

 

  1. Elija el tamaño de la trama («Ancho, Altura)» que vamos a extraer y extraer la periodicidad (Capture Inverval Units), en el siguiente ejemplo se capturará un fotograma (fotograma) por Segundo
  2. Además, para utilizar la funcionalidad de captura de tramas en AWS MediAlive, debemos tener contenido que se transmita (LiveGroup). Simularemos este requisito utilizando la opción de salida «Archive» que guardará el contenido de la entrada en un cubo S3, añadimos una nueva salida pulsando el botón «ADD» en el lado izquierdo de la pantalla

Seleccione la opción «Archivar» y pulse «Confirmar».

 

  1. Introduzca la URL del depósito creado en el paso 01 junto con un literal de su elección, en el ejemplo siguiente se utilizó la letra «a».

 

 

  1. Por último, utilice la opción «Crear canal» a la izquierda para crear canales

  1. Ahora vamos a iniciar el canal, presione el botón «Inicio»

  1. Después de unos segundos, debe comprobar que el canal se ha iniciado correctamente, el campo «Estado» junto al canal debe ser «Running»

  1. En Amazon S3 ya podemos encontrar las tramas extraídas.

 

Conclusión

Podemos capturar y almacenar fácilmente los fotogramas de contenido en vivo simplemente añadiendo una nueva salida al canal deseado. Con las tramas almacenadas en Amazon S3, el uso de otros servicios de AWS como Amazon Rekognition o Amazon Sagemaker resulta más sencillo, ya que están integradas de forma nativa.

 

Limpieza del medio ambiente

Para evitar cargos futuros, recuerde desactivar las funciones que hemos creado:

  1. En la esquina superior derecha de la página de MediAlive, haga clic en «Detener»

2. Después de eso, en «Acciones de canal» seleccione «Eliminar canal»:

 

  1. En S3, seleccione el depósito creado al principio de este blog, y en la esquina superior derecha, haga clic en «Vacío».

Confirme el vaciado del depósito, escriba «eliminar permanentemente» en el campo de texto y haga clic en «Vacío».

4. En S3, seleccione el depósito creado al principio de este blog, y en la esquina superior derecha, haga clic en «Eliminar»:

Confirme la eliminación escribiendo el nombre del depósito en el campo de texto y, a continuación, haga clic en «Eliminar depósito».

 

Referências:

[1]E. G. Richardson, Iain (2003). H.264 and MPEG-4 Video Compression: Video Coding for Next-generation Multimedia. Chichester: John Wiley & Sons Ltd.

[2] James Davis (1986), “Humans perceive flicker artefacts at 500 Hz”, Sci. Rep.5: 7861

 

 


Sobre el autores

Cassiano Ricardo Tesseroli es Arquitecto de soluciones con más de 15 años de experiencia en el desarrollo de soluciones empresariales, especialista en cargas de trabajo de medios orientadas a Internet.

 

 

 

 

Joāo Seike es AWS Solutions Architect, se ha especializado en medios, cargas de trabajo sin servidor y actúa para ayudar y apoyar a los clientes en su viaje a la nube.