Blog de Amazon Web Services (AWS)

Creación de Closed Caption para videos bajo demanda (VOD)

Por Efraín Castilla, Arquitecto de Soluciones AWS México

 

El objetivo de este blog, es guiarlos paso a paso en la construcción de una aplicación serverless que permite la automatización de un job de transcodificación, además de resolver uno de las necesidades mas comunes que es el incrustar Closed Captions o Subtítulos en un formato electrónico de video haciendo uso de los servicios de AWS.

Vivimos en un mundo globalizado que nos permite acceder a contenido visual de cualquier parte del mundo. Cada vez es mas común que tanto el contenido en vivo como el disponible bajo demanda cuente con las funciones de Closed Captions y Subtitulado. AWS cuenta con una amplia oferta de servicios que permiten realizar estas funciones, realizando una transcodificación del contenido original al formato requerido de una manera sencilla, tanto para transmisiones en vivo como bajo demanda.

La diferencia principal entre los subtítulos y los closed captions, es que los subtítulos se usan para traducir únicamente la voz del vídeo y generalmente están pensados para una persona que no entiende el idioma del vídeo traduciéndose a distintos idiomas. Por otro lado, los closed captions no solo transcriben la voz, sino también cualquier otro ruido de fondo, música u otros sonidos que puedan ser importantes para entender lo que está sucediendo en la transmisión del video y están pensados generalmente para personas que tiene dificultad auditiva.

Según la OMS, más del 5% de la población mundial (466 millones de personas) sufre de alguna discapacidad auditiva. Si no existieran los closed captions en los vídeos, parte importante de la población no podría apreciar los videos. Por lo tanto, incluir closed captions o subtítulos nos ayuda a alcanzar mayores audiencias. Adicionalmente en gran parte de los países existen leyes que obligan a las compañías de comunicaciones a transmitir sus contenidos con closed captions.

En esté blog nos enfocaremos en la automatización de un flujo de transcodificación de contenido VOD, incrustando los subtítulos en un formato de video electrónico para su distribución y para ello iniciaremos estableciendo algunos conceptos básicos.

 

História de Closed Caption

En 1970 el Closed Caption o mejor conocido como CC por su abreviatura en inglés fue pensado como medio alternativo de difusión de información adicional por medio de la televisión. En 1971 se plantea que este proyecto pudiera apoyar a la población con problemas auditivos, pero no es hasta 1978 y gracias al entusiasmo de las personas con dicha condición, que se funda en Estados Unidos de América el National Caption Institute (NCI) con la finalidad de desarrollar el sistema.

En 1980 salen al mercado los primeros decodificadores y con ello gente con problemas auditivos pudo disfrutar de mejor manera la forma de ver televisión. Desde entonces los avances tecnológicos en materia de CC han continuado y se han convertido en un estándar en la emisión de programas de televisión y video.

En EEUU, Europa, América Central y América del Sur, la gran mayoría de la programación es emitida con Closed Captions. En México, por ejemplo, se convirtió en una obligación por ley el 17 de septiembre de 2018.

Otra de las funcionalidades que permite esta tecnología es el subtitulado de contenido, que a diferencia de Closed Caption que se produce en el lenguaje original del audio, se utiliza para permitir al espectador la comprensión del audio en otros idiomas.

 

Algunos de los formatos de Closed Captions y Subtítulos Mas Comunes para la distribución de video por Streaming

SubRip Text SRT (también conocido como Subrip o SRT) es quizás el más básico, pero sin duda el más ampliamente aceptado de todos los formatos de subtítulos. Los archivos SubRip Text se nombran con la extensión (.srt) y contienen líneas formateadas de texto plano en grupos separados por una línea en blanco. Este formato es compatible con todas las plataformas de distribución habituales.

WebVTT (Web Video Text Track) es un estándar W3C para mostrar texto cronometrado en conexión con el elemento HTML5 <track>. Se basa en SRT y la principal diferencia es que WebVTT le permite editar el color y la fuente del texto subtitulado. Los archivos WebVTT se nombran con la extensión (.vtt). WebVTT es compatible con Youtube y Vimeo, pero no con Facebook.

SCC (Scenarist Closed Captions) éstos archivos tienen una representación exacta de los datos CEA-608. Es ampliamente usado por los broadcasters, como archivo adicional en herramientas de producción y edición de video tales como Adobe, Microsoft Visual SourceSafe y más. Los archivos SCC se nombran con la extensión (.scc). Los archivos SCC también son aceptados por múltiples plataformas de medios OTT como Netflix, Prime Video e iTunes.

CEA-608 permite que cada campo contenga solo dos caracteres a la vez (2 bytes, 16 bits); así, la velocidad de datos es de 2 x 60 = 120 caracteres por segundo, o 960 bps.

 

Solución

La solución está conformada por dos funciones AWS Lambda desarrolladas en Python 3 y orquestadas por medio de eventos externos (triggers). La primera función AWS Lambda implementa una biblioteca de software abierto 1.0.1, con Copyright 2012 PBS.org, disponible bajo la Licencia Apache, Versión 2.0, y con ella se realiza el proceso de conversión de los archivos de Closed Captions o subtítulos, de formato Subrip (.srt) a formato Scenarist Closed Caption (.scc. La segunda Lambda automatiza la tarea de transcodificación de AWS Elemental MediaConvert requerida para incrustar dentro de un formato electrónico de video los Closed Captions o subtítulos. También se utiliza un bucket Amazon S3 que nos sirve como almacén tanto de los archivos de entrada, como de los archivos de salida.

 

 

Componentes de la Solución

Amazon S3

Amazon S3 (Amazon Simple Storage Service) es un servicio de almacenamiento de objetos y será utilizado para almacenar los archivos de Closed Caption y de video. El servicio de almacenamiento de objetos de AWS ofrece escalabilidad, disponibilidad de datos, seguridad y rendimiento; es comúnmente usado para almacenar y proteger cualquier cantidad de datos en una gran cantidad de casos de uso, como son el origen de distribuciones de contenido multimedia usado por los broadcasters, lagos de datos, sitios web, aplicaciones móviles, respaldo y restauración, archive histórico, aplicaciones empresariales, dispositivos IoT y análisis de grandes volúmenes de datos.

AWS Lambda

AWS Lambda, es un servicio que permite la ejecución de código sin necesidad de aprovisionar ni administrar servidores. Lambda ejecuta el código con base en eventos, solo cuando es necesario y puede escalar de manera automática, pasando de pocas solicitudes a miles de solicitudes por segundo.

AWS Elemental Media Convert

AWS Elemental MediaConvert es un servicio administrado de transcodificación de video basado en archivos. Permite fácilmente crear contenido de video bajo demanda (VOD) para transmitir y entregar a múltiples escalas. El servicio combina capacidades avanzadas de video y audio con una interfaz de servicios web simple y únicamente se paga por el consumo.

 

Prerrequisitos

Para poder llevar a cabo la ejecución de este ejercicio, es necesario contar con los siguientes prerrequisitos:

  • Tener una cuenta de AWS. Si no cuenta con una, puede generarla
  • Contar con un entorno de desarrollo con Python 3. Si no cuenta con un entorno configurado y disponible, se recomienda el uso de AWS Cloud9 como entorno de desarrollo. AWS Cloud9 le permite escribir, ejecutar y depurar el código usando un navegador. Incluye un editor de código, así como un depurador y una terminal.

Para iniciar un entorno de desarrollo de AWS Cloud9, diríjase a la Guía de usuario de AWS Cloud9 en la sección Paso 1: Crear un entorno.

  • Contar con archivos de media para realizar la prueba de generación de Closed Captions en video bajo demanda (VOD), si no cuenta con archivos para realizar la prueba, puede descargarlos en las siguientes URLs:

Archivo MP4:

https://dnv0ivhsix6wy.cloudfront.net/assets/bbb_sunflower.mp4

Archivo SRT: https://dnv0ivhsix6wy.cloudfront.net/assets/bbb_sunflower.srt

 

Implementación de la solución

PASO 1: Crear bucket S3

  1. Diríjase al apartado de Services en la esquina superior izquierda de la Consola de AWS y haga clic en S3 bajo el apartado de Storage
  2. Haga clic en Create bucket

 

 

  1. Ingrese un nombre en el campo de Bucket Name. Puede seguir la siguiente nomenclatura: embeded-subtitles-with-aws-<ACCOUNT ID> (o también puede ser el nombre del usuario en caso de que no tengan el account ID a la mano o no sepan como obtenerlo)
  2. Haga clic en Create bucket

NOTA: Es importante tener en cuenta que el espacio de nombres de Amazon S3 es global y único, por lo tanto, los nombres no puede repetirse.

 

 

Seleccione el bucket creado en el paso anterior y defina dos prefijos (inputs y outputs)

  1. Haga clic en Create folder. Deje los demás atributos como se encuentran
  2. Ingrese inputs en el campo Folder name
  3. Haga clic en Create folder
  4. Repita los pasos 5, 6 y 7 para crear el prefijo outputs

 

 

PASO2: Crear Políticas y Roles

En esta sección definiremos las políticas y roles requeridos por los componentes de la solución. En primer lugar, definiremos la política asociada al rol de ejecución de la función Lambda srt-to-scc-converter-lambda:

  1. Diríjase al apartado de Services en la esquina superior izquierda de la Consola de AWS y haga clic en IAM bajo el apartado de Security, Identity, & compliance
  2. Haga clic en Policies, Create policy

 

 

  1. Seleccione el servicio. Haga clic en Choose a service.
  2. Escriba Lambda en el cuadro de texto Find a service.
  3. Haga clic en el servicio Lambda.
  4. Haga clic en JSON
  5. Copie y pegue la política descrita a continuación:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "logs:CreateLogGroup",
            "Resource": "arn:aws:logs:us-east-1:<ACCOUNT-ID>:*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:<ACCOUNT-ID>:log-group:/aws/lambda/srt-to-scc-converter-lambda:*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::<BUCKET-NAME>*",
                "arn:aws:s3:::<BUCKET-NAME>/*"
            ]
        }
    ]
}

16. Remplace <ACCOUNT-ID> con su ID de cuenta

17. Remplace <BUCKET-NAME> con el nombre del bucket creado en el paso 4


  1. Haga clic en Next: Tags
  2. Haga clic en Next: Review
  3. Escriba el nombre de la política SRTtoSCCConverterLambdaPolicy en el campo Name.
  4. Escriba una descripción en el campo Description. Ejemplo: “This is the srt-to-scc-converter-lambda policy
  5. Haga clic en Create policy

 

 

Continúe con la definición de la política asociada al rol de ejecución de la función Lambda media-convert-subs-automation-job.

  1. Repita los pasos 10 al 14.
  2. Copie y pegue la siguiente política:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "logs:CreateLogGroup",
            "Resource": "arn:aws:logs:us-east-1:<ACCOUNT-ID>:*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:<ACCOUNT-ID>:log-group:/aws/lambda/media-convert-subs-automation-job:*"
            ]
        },
        {
            "Sid": "AccessMediaConvert",
            "Effect": "Allow",
            "Action": [
                "mediaconvert:*"
            ],
            "Resource": [
                "arn:aws:mediaconvert:*:*:*"
            ]
        },
        {
            "Sid": "PassRolestoMediaConvert",
            "Action": [
                "iam:ListRoles",
                "iam:PassRole"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:iam::*:role/*"
        },
        {
            "Sid": "ListWriteS3Buckets",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::<BUCKET-NAME>*",
                "arn:aws:s3:::<BUCKET-NAME>/*"
            ]
        }
    ]
}
  1. Remplace <ACCOUNT-ID> con su ID de cuenta
  2. Remplace <BUCKET-NAME> con el nombre del bucket creado en el paso 4
  3. Haga clic en Next: Tags
  4. Haga clic en Next: Review
  5. Escriba el nombre de la política MediaConvertAutomationJobLambdaPolicy en el campo Name
  6. Escriba una descripción en el campo Description. Ejemplo: “This is the media-convert-subs-automation-job policy
  7. Haga clic en Create policy

Por último, cree la política requerida por el rol de ejecución del servicio AWS Elemental MediaConvert

  1. Repita los pasos 10 y 11
  2. Escriba MediaConvert en el cuadro de texto Find a service
  3. Haga clic en el servicio MediaConvert
  4. Haga clic en JSON
  5. Copie y pegue la política descrita a continuación
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:List*",
                "s3:Put*"
            ],
            "Resource": [
                "arn:aws:s3:::<BUCKET-NAME>*",
                "arn:aws:s3:::<BUCKET-NAME>/*"
            ]
        }
    ]
}
  1. Remplace <BUCKET-NAME> con el nombre del bucket creado en el paso 4
  2. Haga clic en Next: Tags
  3. Haga clic en Next: Review
  4. Escriba el nombre de la política MediaConvertSubsPolicy en el campo Name.
  5. Escriba una descripción en el campo Description. Ejemplo: “This is the MediaConvert service policy
  6. Haga clic en Create policy

A continuación, cree los roles que se ocuparán mas adelante por las funciones AWS Lambda y el servicio MediaConvert.

  1. Cree el rol de ejecución para la función Lambda srt-to-scc-converter-lambda. Haga clic en Roles, Create role

 

 

  1. Seleccione el servicio Lambda y Haga clic en Next: Permissions

 

 

  1. Filtre la política con el nombre “SRTtoSCCConverterLambdaPolicy” escrito en el paso 20
  2. Seleccione la política y haga clic en Next: Tags

 

 

  1. Haga clic en Next: Review.
  2. Escriba el nombre del rol “SRTtoSCCConverterLambdaRole” en el campo Role name
  3. Haga clic en Create Role

 

 

Ahora cree el rol que será utilizado por la función AWS Lambda media-convert-subs-automation-job.

  1. Repita los pasos 43 al 49. Considere los datos descritos a continuación:

Filter policies: “MediaConvertAutomationJobLambdaPolicy”. (Nombre escrito en el Paso 29)

Role Name:”MediaConvertAutomationJobRole.

Por último, cree el rol requerido por el servicio AWS Elemental MediaConvert.

  1. Haga clic en Roles, Create Role
  2. Seleccione el Servicio MediaConvert
  3. Haga clic en Next: Permissions
  4. Haga clic en Set permissions boundary
  5. Haga clic en la opción: Use a permissions boundary to control the maximum role permissions
  6. Filtre las políticas con el nombre de la política escrito en el paso 40: MediaConvertSubsPolicy.
  7. Seleccione la política MediaConvertSubsPolicy
  8. Haga clic en Next: Tags
  9. Haga clic en Next: Review
  10. Escriba el nombre del rol “MediaConvertSubsRole” en el campo Role name.
  11. Haga clic en Create role

La ejecución de los siguientes pasos requiere de un entorno de desarrollo.

PASO 3: Clonar el repositorio de GitHub (srt-to-scc-subs-converter), instalar las dependencias y empaquetar la función AWS Lambda

Esta función realiza la conversión de un archivo de Closed Caption o Subtítulos de un formato de texto Subrip (.srt) a un formato Scenarist Closed Caption (.scc). En esta sección clonaremos el repositorio de GitHub, instalaremos las dependencias requeridas y empaquetaremos la función AWS Lambda en un archivo *.zip..

Esta función AWS Lambda fue construida con la versión de Python 3.7. En caso de hacer uso de una versión diferente puede experimentar problemas con los resultados esperados.

Los pasos a continuación fueron pensados en un entorno de desarrollo AWS Cloud9, en caso de realizarlos desde su entorno local de desarrollo considere reemplazar el directorio ~/environment por la ruta raíz donde realizará el clonado de los repositorios.

  1. Abra el entorno de Desarrollo
  2. Si hace uso de AWS Cloud9, en la sección terminal ubicada en la en la parte inferior derecha, debajo de la sección de edición, valide que se encuentre en el directorio: ~/environment, caso contrario abra una terminal y posiciónese en la ruta raíz donde clonará el repositorio
  3. Clone el repositorio

~/environment $ git clone https://github.com/efraincastilla/srt-to-scc-subs-converter.git

  1. Ingrese al directorio del repositorio recién clonado en el paso anterior

~/environment $ cd srt-to-scc-subs-converter

  1. Inicie el entorno virtual, para permitir administrar de manera separada distintos paquetes de instalación en distintos proyectos. El código que se ejecutará en la función AWS Lambda requiere de la biblioteca pycaption y esta, a su vez, requiere de múltiples dependencias

~/environment/ srt-to-scc-subs-converter $ virtualenv venv

~/environment/ srt-to-scc-subs-converter $ source venv/bin/activate

  1. Instale las dependencias del proyecto

~/environment/srt-to-scc-subs-converter $ pip install –target ./packages -r requirements.txt

  1. Ingrese al directorio packages creado en el paso anterior

~/environment/srt-to-scc-subs-converter $ cd packages

  1. Empaquete el artefacto de despliegue para su posterior instalación

~/environment/srt-to-scc-subs-converter/packages $ zip -r ../srt-to-scc-converter.zip

  1. Regrese al directorio raíz del proyecto y agregue la función AWS Lambda al paquete de instalación creado en el paso anterior

~/environment/srt-to-scc-subs-converter/packages $ cd ..

~/environment/srt-to-scc-subs-converter $ zip -g srt-to-scc-converter.zip subs-converter.py

  1. Cree un bucket S3 para almacenar los paquetes a desplegar. Puede seguir la siguiente nomenclatura: subtitling-automation-lamdas-aws-<ACCOUNT ID> (o también puede ser el nombre del usuario en caso de que no tenga el account ID a la mano o no sepa cómo obtenerlo)

~/environment/srt-to-scc-subs-converter $ aws s3 mb s3://subtitling-automation-lamdas-aws-<ACCOUNT ID>

  1. Copie el archivo .zip creado en el paso 70 al bucket recién creado

~/environment/srt-to-scc-subs-converter $ aws s3 cp srt-to-scc-converter.zip s3://subtitling-automation-lamdas-aws-<ACCOUNT ID>

 

PASO 4: Clonar el repositorio de GitHub (mediaconvert-subs-automation) y empaquetar la función AWS Lambda

Esta función permite la automatización de una tarea de transcodificación de MediaConvert la cual incrusta los subtítulos a un formato electrónico de video. Al igual que la función AWS Lambda anterior, se encuentra desarrollada en Python 3.7.

  1. Desde la terminal regrese al directorio raíz. En caso de utilizar AWS Cloud9, diríjase al directorio environment

~/environment/srt-to-scc-subs-converter $ cd ~/environment

  1. Clone el repositorio:

~/environment $ git clone https://github.com/efraincastilla/media-convert-subs-automation.git

  1. Ingrese al directorio del repositorio recién clonado en el paso anterior.

~/environment $ cd media-convert-subs-automation

  1. Empaquete el artefacto de despliegue para su posterior instalación:

~/environment/media-convert-subs-automation $ zip media-convert-subs-automation.zip *

  1. Copie el archivo .zip creado en el paso anterior al bucket creado en el paso 71.

~/environment/srt-to-scc-subs-converter $ aws s3 cp media-convert-subs-automation.zip s3://subtitling-automation-lamdas-aws-<ACCOUNT ID>

PASO 5: Instalar la función Lambda (subs-converter)

  1. Diríjase al apartado de Services en la esquina superior izquierda de la Consola de AWS y haga clic en Lambda bajo el apartado de Compute
  2. Haga clic en Create function

 

 

  1. Seleccione la opción Author from scratch
  2. Escriba el nombre de la función “srt-to-scc-converter-lambda” en el campo Function name
  3. Seleccione Python 3.7 en el campo de selección Runtime
  4. Haga clic en la sección Change default execution role
  5. Seleccione el rol SRTtoSCCConverterLambdaRole creado en el paso 49
  6. Haga clic en Create function

 

 

Una vez creada la función Lambda, instale el paquete que copiamos previamente al bucket subtitling-automation-lamdas-aws-<ACCOUNT ID>  creado en el paso 71

  1. Haga clic en Upload from y seleccionar la opción Amazon S3 location

 

 

  1. Escriba la URL del archivo .zip en el campo Amazon S3 link URL:

s3://subtitling-automation-lamdas-aws-<ACCOUNT-ID>/srt-to-scc-converter.zip

Haga clic en Save

 

 

 

 

Una vez instalada la función AWS Lambda con el código que convierte del archivo .srt a .scc. Es necesario modificar el método Handler que viene por defecto en la definición de la configuración de tiempo de ejecución.

88. Haga clic en Edit

 

 

  1. Modifique el campo Handler con el nombre de la función y el método handler descritos a continuación

Handler: subs-converter.handler.

  1. Haga clic en Save

 

 

A continuación, declare las variables de ambiente.

  1. Haga clic en Edit dentro de Configuration, Environment variables

 

 

 

Agregue las variables de ambiente listadas a continuación:

Key=TmpPath             Value=/tmp

Key=DestPath            Value=outputs

  1. Haga clic en Add environment variable para agregar cada una
  2. Haga clic en Save

 

 

Configure el evento externo (trigger) que activará la función AWS Lambda.

  1. Haga clic en Add trigger en la sección Function overview
  2. Seleccione S3 en el campo de selección de Trigger configuration
  3. Seleccione el bucket embeded-subtitles-with-aws-<ACCOUNT ID> configurado en el paso 4
  4. En Event type seleccione la opción All objects créate events
  5. Escriba el prefijo inputs/ en el campo Prefix
  6. Escriba el sufijo .srt en el campo Suffix
  7. Haga clic en Add

 

 

PASO 6: Instale la función Lambda (mediaconvert-subs-automation)

  1. En la consola AWS Lambda, Haga clic en Functions, Create function
  2. Seleccione la opción Author from scratch
  3. Escriba el nombre de la función “media-convert-subs-automation-job” en el campo Function name
  4. Seleccione Python 3.7 en el campo de selección Runtime
  5. Haga clic en la sección Change default execution role
  6. Seleccione el rol MediaConvertAutomationJobRole creado en el paso 50
  7. Haga clic en Create function
  8. Haga clic en Upload from y seleccionar la opción Amazon S3 location
  9. Escriba la URL del archivo .zip en el campo Amazon S3 link URL (El nombre del bucket y el archivo .zip son los mismos utilizados en el paso 77: s3://subtitling-automation-lamdas-aws-<ACCOUNT-ID>/media-convert-subs-automation.zip:

Haga clic en Save

  1. Haga clic en Edit
  2. Modifique el campo Handler con el nombre de la función Lambda y el método handler descritos a continuación

Handler: subs-transcoding.handler

  1. Haga clic en Save
  2. Declare las variables de ambiente. Haga clic en Edit dentro de Configuration, Environment variables

Agregue las variables de ambiente listadas a continuación:

Key= DestinationBucket           Value= embeded-subtitles-with-aws-<ACCOUNT-ID>

Key= MediaConvertRole           Value= arn:aws:iam:<ACCOUNT-ID>:role/MediaConvertSubsRole

  1. Haga clic en Add environment variable para cada una de las variables
  2. Haga clic en Save

 

 

  1. Configure el trigger que activará la función AWS Lambda. Haga clic en Add trigger
  2. Seleccione S3 en el campo de selección de Trigger configuration
  3. Seleccione el bucket embeded-subtitles-with-aws-<ACCOUNT ID> configurado en el Paso 4
  4. En Event type seleccione la opción All objects create events
  5. Escriba el prefijo inputs/ en el campo Prefix
  6. Escriba el sufijo .mp4 en el campo Suffix
  7. Haga clic en Add

 

 

PASO 6: Probar flujo automatizado de transcodificación

Para probar el flujo de transcodificación, deposite los archivos de extensión .srt y .mp4 en el folder inputs del bucket creado en el paso 1. El prefijo de ambos archivos debe ser el mismo. Después de un par de minutos obtendrá el resultado en el folder outputs.

Dentro de outputs verá los siguientes resultados:

 

El archivo en formato de video Transport Stream loencontrará dentro del folder con nomenclatura del assetID/TS

 

Conclusión

En este blog, automatizamos un flujo de transcodificación con AWS Elemental MediaConvert, para incrustar subtítulos en un formato electrónico MPEG-2, haciendo uso de una arquitectura 100% serverless. La automatización de trabajos (Jobs) de trascodificación e incrustar Closed Captions o subtítulos en formatos electrónicos es una actividad muy usual de los broadcasters.

 


Sobre el autor

Efraín Castilla es un arquitecto de soluciones con mas de 20 años de experiencia en la industria. Su objetivo es apoyar a clientes de AWS a crear soluciones innovadoras haciendo uso de los servicios de AWS, considerando las prácticas recomendadas.