Transcodificación

 

Introducción

Desde la release 11.2.85 se han implementado una serie de cambios relacionados con la funcionalidad de transcodificación. Estos cambios permiten al usuario operador un control mucho mayor y más claro sobre las opciones relativas a esta funcionalidad respecto a lo especificado en el artículo sobre Formatos de Video. Salvo aclaración, todas estas nuevas opciones se encuentran disponibles en el menú de Administración, en la pestaña Configuración - Variables Generales, o en la pestaña Configuración - Transcodificación +.

  • DIR_FFMPEG: Con esta opción se puede indicar la ruta a la carpeta donde se encuentra el ejecutable de ffmpeg. Prontus permite además validar el directorio ingresado para verificar que efectivamente ffmpeg se encuentre allí.

 Imagen foto_00000001

Al hacer click en el botón "Verificar Directorio" es posible acceder a información importante para comprobar el soporte de librerías y configuraciónes del sistema para el correcto funcionamiento de la transcodificación.

Por ejemplo, para el caso de la imagen se informa que no hay soporte para la librería libfaac -la que se ocupa por defecto- y se menciona la necesidad de usar libdfk_acc como alternativa para poder transcodificar.

Imagen foto_00000002
Detalles del soporte de transcodificación según el directorio especificado.

  

  • USAR_LIB_FDK: permite activar el uso del codec libfdk_aac de ffmpeg. Prontus usa por defecto la librería libfaac, pero activando esta opcion se intentará utilizar la libfdk_aac. Nota: si se activa la opción pero esta librería no está disponible, la transcodificación fallará.

La librería libdfk_aac permite realizar la encodificación bajo el standard AAC. Un detalle importante es que la librería libfdk_aac proporciona mejor calidad de audio que la librería por defecto, libfaac, por lo que si ambas están instaladas, es preferible usar libfdk_aac.

 

Imagen foto_00000012
  • ADVANCED_XCODING: Al activar la opción de transcodificación avanzada se activará una nueva pestaña en el menú de Administración. Ya no se usarán los valores ingresados en FFMPEG_PARAMS para la transcodificación.
Imagen foto_00000013

 

Imagen foto_00000004
Al activar la opción ADVANCED_XCODING se muestra esta nueva pestaña.

  

Transcodificación+

 

Desde esta pestaña en el menú de configuración es posible modificar el comportamiento de la plataforma Prontus en procesos asociados a la transcodificación.

Bitrate

El bitrate es directamente proporcional al tamaño del fichero de video, y un mayor bitrate implica un mayor tamaño de archivo, lo que aumenta el almacenamiento por parte del servidor. Esto además impacta en el rendimiento del servicio, ya que se necesitará un mayor ancho de banda para transferir el video con la misma experiencia de usuario. Es por esto que es importante parametrizar estos valores, de tal modo que se gatille automaticamente la transcodificación frente a un archivo con bitrate demasiado alto.

  • LIMIT_BITRATE: Permite limitar el bitrate de los videos subidos. Si el archivo cargado lo sobrepasa se transcodifican. También se aplica a archivos MP4.
  • MAX_VIDEO_BITRATE: Máximo bitrate permitido en el video (en kbps). Valor por defecto: 1200kbps.
  • MAX_AUDIO_BITRATE: Máximo bitrate permitido en el audio (en kbps). Valor por defecto: 128kbps.
  • XCODE_MAX_PIXEL: Alto y ancho máximo permitido de la imagen del video (en pixeles). Al transcodificar se usará este tamaño como máximo. Valor por defecto: 854 pixeles.

 Imagen foto_00000014

La interfaz de usuario permite especificar bitrates máximos de video y audio por separado.
Soporte para generar HLS

HLS (HTTP Live Streaming) es un protocolo de comunicación streaming basado en conexiones HTTP. Este se basa en la generación de segmentos de video, los cuales forman un playlist que a su vez corresponden a la totalidad del video.

  • GEN_HLS: permite activar la generación de segmentos de video usando el protocolo HLS. Activar esta opción implica que por cada video se necesite el doble de almacenamiento en servidor, ya que debe ser almacenado el video original y su respectiva segmentación bajo el protocolo HLS. Si se activa esta opción, Prontus siempre transcodificará los videos subidos.
  • PRECISION_HLS: otorga un mayor refinamiento en la generación de fragmentos. En concreto, activa opciones para intentar garantizar un keyframe cada 10 segundos, y así segmentar de forma más precisa el video transcodificado. Si ffmpeg no tiene esas opciones disponibles la transcodificación fallará.

Imagen foto_00000006

Soporte para procesamiento en paralelo

Estas opciones permiten obtener un mayor rendimiento en la transcodificación. No se recomienda activarlas si no se cuenta con los requisitos mínimos recomendados de hardware, en concreto 1 GB de RAM y 2 CPU.

  • MODO_PARALELO: genera todas las calidades definidas al mismo tiempo, mientras que
  • XCODE_MAX_PARALELO: define el número máximo de calidades a procesar simultáneamente.
    Importante: La incorrecta elección de estos valores podría ocasionar agotar los recursos del servidor, pudiendo incluso provocar la caída de éste.
  • RUTA_TEMPORAL_XCODING: permite indicar una carpeta externa a Prontus donde se puede realizar el trabajo de transcodificación. En principio, este parámetro fue definido con la intención de utilizar la memoria RAM del sistema, liberando carga al disco rígido, proporcionando un mayor rendimiento. Por ejemplo, podría montarse un ramdrive en un directorio como /var/www/ramdrive.

 Imagen foto_00000011

Editor de formatos de video

Permite definir las variantes de un video subido. Estas variantes se asocian a una marca Prontus de video y se almacenan en los identificadores de formatos de video. Desde la interfaz es posible agregar y eliminar tanto marcas como formatos de video.

El uso de esta sección necesita una explicación más detallada:

  • Una marca puede tener uno o más formatos asociados.
  • El formato A de la marca MULTIMEDIA_VIDEO1 no es el mismo formato A de la marca MULTIMEDIA_VIDEO2, son independientes.
  • Para crear un formato y asociarlo a una marca se debe modificar al menos uno de los valores de los parámetros debajo.
  • Se pueden crear o editar múltiples formatos de una vez. Al pulsar "Guardar Formatos" se guardarán todos los formatos creados que tengan opciones distintas de aquellas por defecto.
  • Dado que las marcas y formatos están jerárquicamente relacionados, borrar una marca también eliminará los formatos asociados.
  • Marca Prontus de Video: Permite elegir entre los distintos identificadores de marca creados con la opción Agregar Id de Marca, debajo.
  • Formato de Video: Permite elegir entre los distintos formatos creados con Agregar Formato de Video
  • Agregar Id de Marca MULTIMEDIA_VIDEO: Permite especificar un nuevo Id de marca para posteriormente asignarle formatos.
  • Agregar Formato de Video: Permite especificar un nombre que identificará a la serie de parámetros de video elegidos debajo. Agregarlo con el botón + hace que se muestre en el selector Formato de Video

Imagen foto_00000007

Los formatos de video perfilan una configuración de parámetros detallados a continuación.

  • VIDEOSIZE: Permite definir el tamaño máximo de ancho y alto permitidos para transcodificar a este formato. Al transcodificar se respeta la relación de aspecto del video. Valor por defecto: se usa el valor de la variable XCODE_MAX_PIXEL.
  • VIDEOBITRATE: Permite definir el bitrate de video a usar en la transcodificación. Valor por defecto: se usa el valor de la variable MAX_VIDEO_BITRATE.
  • H264PROFILE: Permite seleccionar un perfil de codificación. "Baseline" es un perfil con menos requerimientos de hardware, compatible con dispositivos más antiguos, como iPhone 3. "Main" es un perfil que produce archivos con mejor calidad de compresión, pero tiene mayores requerimientos de hardware. Valor por defecto: se usa el perfil Main.
  • AUDIOBITRATE: Permite definir el bitrate de audio a usar en la transcodificación. Valor por defecto: se usa el valor de la variable MAX_AUDIO_BITRATE.
  • AUDIOSAMPLING: Permite definir la frecuencia de muestreo del audio a usar en la transcodificación. Valor por defecto: el original del video.
  • AUDIOCHANNELS: Permite definir el número de canales de audio a usar en la transcodificación. Valor por defecto: 2 canales.
  • Parámetros X264: Permite especificar otros parámetros directamente a la librería x264, corresponden a los valores posibles para la opción "x264opts" de ffmpeg. Si se ingresan valores incorrectos, la transcodificación no funcionará. Valor por defecto: b_adapt=2:trellis=1:cabac=1:bframes=3:keyint=90 => uso de trillis, cabac, 3 bframes,  gop de 90 frames.

Imagen foto_00000008

Transcodificador externo

A partir de la versión 11.2.92 se agrego la opción de utilizar un Transcodificador externo.

A continuación se describen las variables de configuración:

  • USAR_XCODER_EXTERNO: Para activar o desactivar el uso de un Transcodificador externo.
  • XCODER_HOST: Dirección IP o nombre del host del Transcodificador Externo.
  • XCODER_PORT: Puerto de comunicación con el Transcodificador Externo.

Cabe mencionar que toda la comunicación se hace por protocolo HTTP.

Imagen foto_00000015

 

 

 

 

 

 

 

 

 

Procesamiento masivo de videos

Desde la version 11.2.94 se incluye una utilidad que permite transcodificar todos los videos de un sitio web sin tener que abrir cada artículo manualmente.
La utilidad se llama prontus_procesar_videos.pl e incluye en la carpeta /cgi-cpn/xcoding de prontus. Acepta 3 parámetros como se detalla a continuación:

perl prontus_procesar_videos.pl <prontus_id> <fid_id> <multimedia_video1,..,multimedia_videoN>

<prontus_id> : identificador del prontus que se desea procesar

<fid_id> : identificador del fid que se desea procesar

<multimedia_video1,..,multimedia_videoN> : lista de marcas de videos a procesar separadas por coma

Ejemplo de uso:

perl prontus_procesar_videos.pl mi_prontus_id fid_noticia multimedia_video1,multimedia_video2

La utilidad tiene una espera aleatoria antes de iniciar una transcodificación para prevenir que puedan ejecutarse 2 procesos sobre el mismo video.