Ir al contenido principal
BlogPanorama de la nubeTranscodificación de vídeo escalable en Linode: MP4 a HLS con Kubernetes y Capella

Transcodificación de vídeo escalable en Linode: MP4 a HLS con Kubernetes y Capella

DesbloqueoSeamlessStreamingHero

A medida que las plataformas de streaming siguen apoderándose de nuestras pantallas y revolucionando la forma en que consumimos contenidos, la importancia de crear un servicio de streaming sólido y escalable nunca ha sido tan crítica. ¿Cómo pueden las organizaciones garantizar la compatibilidad entre dispositivos y plataformas, al tiempo que reducen los costes y maximizan la eficiencia? En este tutorial, nos sumergiremos en la transcodificación de vídeo a la carta.

Vamos a configurar la transcodificación de vídeo utilizando el motor Kubernetes Linode con el fin de ayudar a escalar su infraestructura de transcodificación en función de la demanda. Vamos a recorrer el proceso de conversión de un archivo mp4 a HLS (HTTP Live Streaming), que es un formato comúnmente utilizado por los servicios de streaming. HLS utiliza funciones de streaming con tasa de bits adaptativa para garantizar una reproducción fluida y una experiencia de visualización uniforme, independientemente del dispositivo o de la velocidad de la red. Para empezar, utilizaremos un archivo mp4 (puede ser un vídeo de ejemplo que ya tengas como mp4), lo subiremos a un bucket de entrada y, a continuación, lo enviaremos a nuestro socio de transcodificación, Capella, para que se encargue de la transcodificación del vídeo. 

Capella es un socio de Akamai que ofrece soluciones listas para implementar que se pueden ejecutar en Akamai Compute. Nos asociamos con Capella porque pueden ejecutar codificadores en nuestra plataforma, almacenar activos VOD en Object Storagey entregar a través de la CDN de Akamai. Esta asociación también nos permite implementar con Kubernetes y Helm, lo que facilita enormemente el escalado. Por ejemplo, en el siguiente tutorial, las máquinas de codificación de Capella se pondrán en marcha automáticamente para adaptarse al número de trabajos y, a continuación, volverán a reducirse cuando el trabajo se haya completado, ahorrando miles de dólares de tiempo de computación ocioso.

Requisitos previos:

Para completar este tutorial, tendrás que registrarte para obtener una cuenta en Linode . Registrarse es gratis y, además, ¡obtendrás un crédito de 100 $!

  1. Un token de API Linode
  2. Instalar kubectl
  3. Instalar el timón
  4. Instale las herramientas externas de Kubernetes enumeradas aquí.
  5. Una licencia Capella (envíe un correo electrónico a [email protected] para obtener una licencia gratuita) 

Paso 1: Crear un clúster Kubernetes

El primer paso es crear un clúster Kubernetes que realizará la codificación. En el panel de control de Akamai Cloud, haga clic en Kubernetes y, a continuación, en Crear clúster.

A continuación, vamos a introducir algunas configuraciones para el clúster. Llamémoslo "transcoding-demo". Aquí debes elegir la región más cercana a ti. En mi caso, Los Ángeles. También es recomendable habilitar el Plano de Control de Alta Disponibilidad para activar la alta disponibilidad en el Cluster Kubernetes.

En la sección Añadir Pools de Nodos, vamos a añadir 3 nodos del plan Dedicado 8 GB. Estos tres nodos son los nodos de gestión, donde uno es elegido automáticamente como líder y los otros dos son para redundancia del gestor.

Una vez añadidos, verás un botón en la parte superior de la pantalla que dice Crear clúster. Haga clic en él para crear el clúster Kubernetes. Nota: Esto puede tardar unos minutos.

Ahora, la configuración de su entorno Kubernetes está completa. Observe en Cloud Manager Dashboard los 3 nodos que ha creado, con el estado Running. 

A continuación, vamos a descargar el archivo Kubeconfig haciendo clic en el siguiente enlace desde el panel de control. Se descargará en su máquina local. Asegúrese de mover el archivo a su directorio Kubernetes (el mismo lugar donde tiene su conjunto kubectl).  

A continuación, haga clic en el enlace Kubernetes Dashboard para abrir el panel de control de Kubernetes.

Verás este mensaje y querrás hacer clic en la opción para iniciar sesión con el archivo kubeconfig que acabas de crear.

En el panel izquierdo, si haces clic en Cluster, verás los nodos que acabas de crear.

Paso 2: Crear y editar el archivo de configuración de Helm

Ahora, vamos a crear y editar el archivo de configuración Helm que se utilizará para implementar el clúster Cambria en el entorno Kubernetes. Un clúster Cambria es una red escalable de transcodificación de múltiples estaciones de trabajo Cambria FTC para procesar un gran volumen de archivos de vídeo. El gestor de clústeres Cambria enruta las acciones a través de la red.

En primer lugar, descargaremos el archivo de archivos de configuración del clúster Capella con los dos comandos siguientes:

curl -L -s -o capella-cluster.tgz

https://www.dropbox.com/scl/fi/160bla78xylc18wbr6xk8/capella-cluster-0.3.8.tgz?rlkey=lrmxiszcr5da02duefm2vr7cl

helm show values capella-cluster.tgz > capellaCambriaConfig.yaml 

En el archivo de configuración, tenemos que actualizar 2 campos: la clave de licencia de Capella y el token de API de Linode .

Añade la clave de licencia que has recibido (del equipo de Capella tras enviar un correo electrónico a [email protected] en la sección de requisitos previos) en el campo ftcLicenseKey. 

A continuación, añade tu token de API Linode (utiliza el enlace de la sección de requisitos previos para generar uno) en el campo linodeAPIToken.

Paso 3: Instalar el clúster Cambria

Ahora tenemos que instalar el clúster Cambria. Este clúster se utiliza para procesar un gran volumen de archivos de vídeo.

helm upgrade -install capella-cluster capella-cluster.tgz -values capellaCambriaConfig.yaml 

Verás que el estado ha cambiado a desplegado.

En este punto, hay algunos componentes que se están desplegando en su entorno Kubernetes. Es mejor esperar unos minutos a que todo se despliegue antes de continuar.

Paso 4: Abrir la interfaz web de Cambria Cluster

En el panel izquierdo del panel de control de Kubernetes, haga clic en Servicios. A continuación, copie la dirección IP del nodo central (puerto 8161). Este puerto es específico de la interfaz de usuario web.

En una nueva pestaña, introduzca "https://" y, a continuación, pegue la dirección IP. (Es posible que tenga que hacer clic en Avanzado > Introducir sitio para introducir el sitio). Ahora verá la Web UI de Cambria Cluster. Inicie sesión con las credenciales WebUI del archivo capellaCambriaConfig.yaml. (Consulte la página 8 aquí para más detalles sobre cómo encontrar estas credenciales).

Paso 5: Crear cubos de entrada y salida.

Recordemos que estamos convirtiendo un vídeo mp4 a formato HLS. Vamos a crear un cubo con dos carpetas: una para la entrada de nuestro archivo mp4, llamada fuente, y otra para la salida de nuestro archivo HLS, llamada salida.

Vayamos a Akamai Cloud Manager y hagamos clic en Object Storage desde el panel izquierdo. A continuación, haga clic en Crear Bucket. Vamos a llamarlo capella. Asegúrese de elegir la misma región que eligió anteriormente para su clúster Kubernetes. A continuación, haga clic en Crear Bucket.

Después de crear ese cubo, tenemos que copiar su ubicación y pegarla más tarde en nuestro archivo XML. Haga clic en el botón Detalles del cubo y, a continuación, haga clic en el botón Copiar, como se muestra a continuación, junto a su ubicación. Guarde esto en un bloc de notas porque lo necesitaremos más tarde.

A continuación, tenemos que crear claves de acceso para el cubo. Haga clic en Claves de acceso y, a continuación, en Crear clave de acceso.

Llamémosle capella-acceso.

Verás una pequeña ventana emergente que mostrará tu clave de acceso y tu clave secreta. Cópialas y pégalas en un bloc de notas porque las necesitaremos más adelante. Cuando las hayas guardado, haz clic en He guardado mi clave secreta.

Ahora, en nuestro cubo de almacenamiento de objetos, vamos a crear 2 carpetas: una para la entrada y otra para la salida. Haga clic en su cubo, luego haga clic en Crear Carpeta. Vamos a llamar a la carpeta de entrada "fuente".

Hagamos lo mismo para la carpeta de salida. Llamémosla "salida".

Paso 6: Edite los campos del documento HLS de muestra.

Capella nos envió este archivo de muestra para realizar trabajos de transcodificación para conversiones de mp4 a HLS. Hay más archivos de muestra entre los que elegir, solo asegúrate de preguntarles cuál quieres cuando les envíes un correo electrónico (comprueba los requisitos previos más arriba). Asegúrate de guardarlo en tu carpeta Kubernetes.

Copie y pegue su clave de acceso y clave secreta en la sección de descripción del puesto en las líneas 8 y 9 del archivo XML.

Añada esos mismos valores a las líneas 234 y 235 de la sección Configuración de carga.

En la línea 231, vamos a pegar la región de nuestro cubo. Usted debe haber copiado en un bloc de notas desde el paso anterior.

A continuación, en la sección Upload Setting, tenemos que actualizar los campos bucket y location. En la línea 227, actualiza el campo bucket para que sea "capella" y en la línea 228, actualiza el campo location para que sea "output". (Recuerde, hemos creado un cubo llamado capella, y la carpeta de salida se llama salida)

Paso 6: Cargar un archivo mp4 en el bucket de entrada

A continuación, vamos a subir un archivo mp4 al cubo de entrada. Puede ser un vídeo de tu perro, un vídeo de cocina que hayas grabado, cualquier archivo mp4. Yo estoy usando un archivo mp4 llamado flying5. Vamos a la Akamai Cloud Manager y en el cubo de origen, vamos a subir el archivo mp4.

Ahora, volvamos al archivo XML. Vamos a añadir la ubicación del archivo de origen a la línea 347 como se muestra a continuación.

Paso 7: Ejecutar la tarea de transcodificación

Ya estamos listos para transcodificar. Vamos a ejecutar el trabajo de transcodificación mediante una llamada a la API. Tendrá que reemplazar algunas cosas en el comando curl a continuación. En primer lugar, vaya a su panel de control de Kubernetes y obtenga la dirección IP del primer nodo (puerto 8650). Este puerto es específico para la comunicación del trabajo de codificación. Cópielo en el portapapeles y péguelo en algún lugar para guardarlo (todo lo que preceda a .ip). Lo necesitarás en un minuto. 

A continuación, desde su archivo capellaCambriaConfig.yaml, copie el cambriaClusterAPIToken y guárdelo. En el comando curl , sustituya el valor usertoken por su token de API.

A continuación, añada el nombre del archivo xml del trabajo de transcodificación. Yo guardé el mío como mp4-hls-transcoding-job.xml.

Vamos a ejecutar este comando desde tu terminal.

curl -k -X POST "https://123.456.78.90:8650/CambriaFC/v1/Jobs/?usertoken=12345678-1234-5678-abcd-efghijklmn" -d @mp4-hls-transcoding-job.xml

Para confirmar que el trabajo se está ejecutando, vamos a consultar el panel de control de Kubernetes. Naveguemos hasta el panel de control de Kubernetes y abramos la siguiente URL para el puerto 8161, que es el puerto de la lista de tareas. 

Siempre que se envíen trabajos al Cambria Cluster Manager, aparecerán en la WebUI de Cambria en la Lista de trabajos.

Estos trabajos se distribuirán a las máquinas de codificación FTC para su ejecución. El gestor de clústeres Cambria iniciará automáticamente un nuevo equipo FTC si previamente no había trabajos en cola. Si el número de trabajos en cola es elevado, se iniciarán máquinas FTC adicionales para gestionar la carga.

En la página de resumen de Akamai Linode Kubernetes, verá que se está aprovisionando una nueva máquina. Una vez aprovisionada la máquina, podrá verla en Nodos en el panel de control de Kubernetes y también en la WebUI del Administrador de clústeres. Una vez disponible y conectado automáticamente al Cluster, el trabajo será distribuido a la máquina FTC para ejecutarse. La lista de trabajos WebUI se puede utilizar para realizar un seguimiento del progreso.

Una vez completado el trabajo, verás que el estado cambia a realizado en la WebUI.

Creará 3 archivos de vídeo diferentes con distintos tipos de vídeo. Cuando vuelva a la consola de Akamai, en la carpeta de salida verá un archivo de salida con varias carpetas. Una carpeta contiene el audio, otra el vídeo y otra los metadatos.

Puedes reproducirlos a través de un reproductor compatible con HLS (puede ser algún tipo de plugin en tu navegador o un tercero). 

La transcodificación de vídeo es un aspecto crucial de la distribución multimedia moderna y, si sigues los pasos de este tutorial, podrás afrontar este reto fácilmente. 

En resumen

Este ejemplo de transcodificación de vídeo ilustra la flexibilidad y la potencia de la distribución multimedia moderna con Linode Kubernetes Engine (LKE). Las máquinas de codificación se activan automáticamente para adaptarse al número de trabajos y vuelven a reducirse cuando el trabajo ha finalizado, lo que demuestra el importante ahorro que se consigue al utilizar LKE.

Después de transcodificar con éxito su vídeo, puede utilizar la red de servidores de Akamai distribuidos estratégicamente por todo el mundo, con el fin de garantizar que sus vídeos con formato HLS se entregan rápidamente y sin problemas a su audiencia, independientemente de su ubicación geográfica. Esto le ayudará a aliviar la carga de su servidor de origen descargando la entrega de contenido a los servidores edge distribuidos de Akamai. Esto no sólo mejora el rendimiento y la escalabilidad de su entrega de vídeo, sino que también mejora la experiencia general del usuario al reducir la latencia y el almacenamiento en búfer. Además, la CDN de Akamai ofrece funciones avanzadas como el streaming con velocidad de transmisión adaptable, que ajusta automáticamente la calidad del vídeo en función de las condiciones de la red del espectador, garantizando una reproducción fluida en una gran variedad de dispositivos y velocidades de conexión. Esto es especialmente crucial para entregar contenido de vídeo de alta calidad a dispositivos móviles y áreas con ancho de banda limitado.

Próximos pasos

En este tutorial, utilizamos Akamai para transcodificar un vídeo de formato mp4 a formato HLS. Esta conversión asegura la compatibilidad con diferentes dispositivos para streaming. Puedes encontrar una lista completa de posibles formatos de entrada y salida para la transcodificación de vídeo aquí

Si desea obtener más información sobre cómo implementar la transcodificación de vídeo, suscríbase a nuestro boletín, conéctese con nosotros en Twitter o LinkedIn, o suscríbase a nuestro canal de YouTube.

Además de estas guías técnicas, si usted o su organización está considerando optimizar sus soluciones de transcodificación de vídeo y Kubernetes, puede probar las soluciones de Linoderegistrándose para obtener 100 dólares en créditos gratuitos

Comentarios

Dejar una respuesta

Su dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *.