Configuración de Vídeo de WS.WebTV
soporte, ws.webtv, inicio, configuracion, vídeo
Accesos directos: Calidades | Compresión de Vídeo | Almacenamiento de Vídeo | Calidades (Avanzado) | YouTube
¿Qué son las calidades?
Lo explicaremos con un ejemplo: Servicios de vídeo como YouTube, Vimeo, DailyMotion, etc. cuentan con un botón de "Engranaje" que permite seleccionar una calidad mayor (o menor) de vídeo. Para este propósito, su WebTV también cuenta con un botón "Engranaje". Puede definir 4 (o más) calidades.
¿Cuántas calidades se deben especificar?
Las que Ud. desee. Depende de cuántas opciones quiera darle a los usuarios de su WebTV y del tiempo que esté dispuesto a invertir al crear sus contenidos. Tenga presente que en el caso de Clips Auto-Compresión se generará un archivo de vídeo por cada una de las calidades.
Normalmente se ofrecen -al menos- dos calidades: una baja pensando en usuarios con conexiones lentas/dispositivos móviles y/o PCs antiguas y otra calidad para aquellos que disfrutan de conexiones a Internet de mayor velocidad o tienen PCs más potentes. Por defecto, WS.WebTV tiene predefinidas dos Calidades: "Normal" (700Kbps) y "HQ" (1250Kbps); sin embargo, Ud. es libre de modificarlas.
¿Qué implica definir más de una calidad?
En el caso de Clips Estándar, más trabajo para Ud. (porque tendrá que comprimir sus vídeos para cada una de las calidades que defina). En el caso de Clips Auto-Compresión, más trabajo para el servidor (porque deberá comprimir más archivos). En cualquiera de los casos implicará una mejor experiencia para sus usuarios porque tendrán más opciones para disfrutar de los videos de una manera que se adapte mejor a las capacidades de sus dispositivos.
• Etiqueta de Calidad: El nombre de la calidad. Debe ser tan corto como sea posible. La etiqueta no puede dejarse en blanco, de lo contrario, será ignorada por la WebTV.
• Destino: El dispositivo/tecnología que reproducirá el archivo de vídeo/stream asociado a la calidad correspondiente.
» "Sólo Flash": Los vídeos asociados a la Calidad sólo serán reproducidos por el reproductor de vídeo Flash.
» "Flash + HTML5"*: Los vídeos asociados a la Calidad serán reproducidos por los reproductores de vídeo Flash y HTML5.
» "Sólo HTML5"*: Los vídeo asociados a la Calidad sólo serán reproducidos por el reproductor de vídeo HTML5.
*NOTA: Por favor, consulte el documento Consideraciones Generales para la Compresión de Vídeo para más información respecto a cómo comprimir vídeos para Flash y HTML5.
• Bit Rate: Sólo como referencia. Este valor será utilizado por la WebTV para determinar qué calidad se le mostrará al usuario final, la primera vez que visite la WebTV (aunque el usuario podrá cambiar a otra calidad disponible si lo desea).
Los ajustes anteriores pueden ser modificados en cualquier momento sin causar ningún "daño". Sin embargo, recomendamos, para una mayor consistencia del sistema de detección de ancho de banda (sólo en el reproductor Flash), que sus vídeos se ajusten al Bit Rate seleccionado.
Habilitando/Deshabilitando Calidades
Para habilitar una calidad, simplemente rellene una Etiqueta vacía y Guarde: la nueva Calidad estará disponible en la WebTV. Para deshabilitar una Calidad borre la Etiqueta correspondiente y Guarde: la WebTV dejará de utilizar dicha calidad.
Eliminando una Calidad
Eliminar una Calidad y deshabilitarla son dos cosas diferentes. Cuando Ud. elimina una Calidad, haciendo click en el botón "X" que está a su derecha, el sistema no sólo dehabilitará la Calidad sino que también eliminará todos los medios (archivos, etc.) asociados a la misma.
Desde WS.WebTV 1.9 es posible habilitar/deshabilitar el soporte para tipos de archivo/tecnologías de vídeo específicos:
• Habilitar WebM: Habilita el soporte para el fornato WebM en HTML5. Cuando WebM está habilitado encontrará una casilla de medio adicional, para cada calidad, en la pestaña "Medios" de los Clips.
Importante: Tenga presente que en el caso de Clips Auto-Compresión, esto doblará la cantidad de archivos a comprimir (con la correspondiente carga adicional para el servidor) porque cada una de las calidades se comprimirá en formato MP4 y WebM.
• Habilitar DASH: (Requiere la extensión StreamClip) Habilita el soporte para MPEG-DASH en HTML5. Cuando DASH está habilitado encontrará una casilla de medio adicional, para cada calidad, en la pestaña "Medios" de los Clips (StreamClip VOD/Live).
Requerimientos:
Para poder utilizar la compresión de vídeos, su servidor/hosting debe contar con:
» FFmpeg 1.2 o superior con:
» Librería para compresión de vídeo H.264: libx264.
» Librería para compresión de audio AAC; cualquiera de las siguientes: libfaac, lifaad, libvo_aacenc, libfdk_aac o similar.
• Habilitar Compresión: Para habilitar/deshabilitar la compresión de vídeo (Clips "Auto-Compresión").
NOTA: Si se deshabilita la compresión, o si la WebTV no detecta FFmpeg en su servidor, no permitirá crear Clips "Auto-Compresión".
• Tiempo de espera: (Timeout, en segundos) Las tareas de compresión que excedan este tiempo de procesamiento, se considerarán fallidas.
• Ruta FFmpeg: La ruta del ejecutable FFmpeg (consulte con su proveedor de hosting o administrador del servidor).
- Ejemplo de ruta en entornos Windows: C:\ffmpeg\bin\ffmpeg.exe (debe tener la extensión .exe)
- Ejemplo de ruta en entornos Linux:
/user/local/bin/ffmpeg
MUY IMPORTANTE: PHP debe estar configurado para permitir un tiempo de ejecución muy alto.
Opciones de configuración avanzadas
Dependiendo de la configuración de su servidor, puede ser necesario modificar un par de ajustes en la WebTV que aplican a la compresión de vídeo.
Por defecto, la WebTV lanza el script de procesado de tareas de compresión (/video_encoder.php) asincrónicamente, en segundo plano, usando cURL.
En caso de que la WebTV no sea capaz de comenzar el procesamiento de tareas, entonces necesitará crear un "cron job" (tareas programada) en su servidor para que ejecute el script <url_webtv>/video_encoder.php automáticamente (el script debe ejecutarse usando su URL absoluta con un comando cron lynx, wget o curl). También necesitará deshabilitar el procesado recursivo de tareas. Para hacerlo, edite el archivo config/Config.inc.php y añada el siguiente código antes del tag de cierre de PHP:
$ENCODING_RECURSIVE_TASK_PROCESSING = false; // Ops: true (valor por defecto), false
Ejemplo comando "cron":
curl --silent --user-agent Server-Cron "http://WEBTV_URL/video_encoder.php" >/dev/null 2>&1
Desde WS.WebTV 1.7.5, hemos añadido soporte para modo de ejecución de baja prioridad para FFmpeg (con la idea de disminuir la carga de CPU), usando el comando "nice" en servidores Linux y el comando "START" en servidores Windows. Puede habilitar esta funcionalidad, y personalizar los comandos (de ser necesario), desde en el archivo config/Config.inc.php, añadiendo el siguiente código antes del tag de cierre de PHP:
$FFMPEG_NICE_EXE = true; // Ops: true, false
$FFMPEG_NICE_CMD = "nice -n 19"; // Comando "nice" para servidores Linux
$FFMPEG_NICE_CMD_WIN = "START /LOW /B /WAIT"; // Equivalente del comando "nice" para servidores Windows
Otras opciones de Configuración
Desde WS.WebTV 1.7.5, es posible configurar la WebTV para que cree las tareas de compresión inmediatamente después de subir el archivo de vídeo fuente. Para habilitar este comportamiento, edite el archivo config/Config.inc.php y añada el siguiente código antes del tag de cierre de PHP:
$START_ENCODING_AFTER_UPLOAD = false; // Ops: true, false
Desde WS.WebTV 1.8 postfixes v1, hay un comando alternativo para obtenert el Sprite -miniaturas de vídeo- (en caso de que el utilizado por defecto falle). Para seleccionar el comando, edite el archivo config/Config.inc.php y añada el siguiente código antes del tag de cierre de PHP:
$FFMPEG_GET_SPRITE_CMD_INDEX = 0; // 0 = original , 1 = nuevo comando (utilice 1 cuando 0 falle, note que este modo no muestra el progreso).
Desde WS.WebTV 2.0 es posible omitir las tareas de compresión cuando el tamaño de salida es mayor que el tamaño del vídeo fuente. Para habilitar la omisión de tareas, edite el archivo config/Config.inc.php y añada el siguiente código antes del tag de cierre de PHP:
// Asigne true a la siguiente variable si desea omitir las tareas de compresión cuando el vídeo fuente es más pequeño que el tamaño de salida
$ENCODING_SKIP_TASKS_IF_SOURCE_IS_SMALLER_THAN_OUTPUT = true;
// Las siguientes variables son de utilidad para asegurar que al menos una calidad siempre se comprime. Ajústelas para que coincidan con el ancho y alto del perfil de compresión asignado a la menor de sus calidades de vídeo.
$ENCODING_SKIP_MIN_OUTPUT_WIDTH = 720; // solamente se omitirá la tarea cuando el tamaño de salida sea mayor que el tamaño del vídeo fuente Y el ancho de salida sea mayor que este número; de lo contrario, la tarea no será omitida
$ENCODING_SKIP_MIN_OUTPUT_HEIGHT = 576; // solamente se omitirá la tarea cuando el tamaño de salida sea mayor que el tamaño del vídeo fuente Y la altura de salida sea mayor que este número; de lo contrario, la tarea no será omitida
Perfiles de Compresión:
Cuando la compresión esté habilitada, a la derecha de cada calidad aparecerá un desplegable para que seleccione el perfil de compresión deseado.
Nota, en relación con los perfiles de compresión de FFmpeg:
Con WS.WebTV se incluyen perfiles de compresión de propósito general. No se ofrecerá soporte técnico para asuntos relacionados con los ajustes de los perfiles.
En caso de que necesite realizar ajustes en los perfiles de comrpesión, deberá hacerlo Ud. mismo (ver a continuación).
Archivos de Perfiles de Compresión:
Los perfiles de compresión los encontrará en la carpeta "framework/lib/ffmpeg_presets" de la WebTV.
Por defecto, el sistema utilizará las siguientes carpetas de preset:
- Para H.264:
"/libx264-libvo_aacenc/".
- Para WebM (desde la versión 1.9): "/libvpx-libvorbis/", sólo si WebM está habilitado.
El archivo de perfil (preset) está en formato JSON y llama
WS.WebTV 1.9+: "ffmpeg_presets_cmd.json"
WS.WebTV anteriores a 1.9: "ffmpeg_presets.json"
Nota: Como el formato JSON es muy estricto, le recomendamos validar el archivo después de realizar cualquier modificación al mismo. Para esto, puede utilizar una herramienta de validación online como estas.
Ud. puede indicarle al sistema cuál carpeta de preset desea utilizar, desde el archivo de configuración de la WebTV (config/Config.inc.php):
$FFMPEG_PRESETS_FOLDER = "libx264-libvo_aacenc"; // ops: libx264-libvo_aacenc, libx264-libfaac, libx264-libfaad
$FFMPEG_PRESETS_WEBM_FOLDER = "libvpx-libvorbis"; // (desde la versión 1.9)
ffmpeg_presets.json vs
ffmpeg_presets_cmd.json
El archivo "ffmpeg_presets.json" se utiliza en versiones anteriores a la 1.9; sin embargo, desde la versión 1.9 el nuevo archivo ffmpeg_presets_cmd.json se utiliza por defecto. La diferencia entre ambos tipos de archivo es que el nuevo permite utilizar líneas de comando completas para FFmpeg lo cuál lo hace mucho más flexible.
Ud. puede indicarle al sistema cuál tipo de archivo desea utilizar, desde el archivo de configuración de la WebTV (config/Config.inc.php):
$FFMPEG_PRESETS_STYLE = "cmd"; // Ops: "cmd", "legacy"
$FFMPEG_PRESETS_WEBM_STYLE = "cmd";
Seleccione el destino (de la subida) de los archivos de vídeo: Local (el servidor donde está instalada la WebTV), FTP o AWS.
Cuando se selecciona FTP, la WebTV subirá los vídeos a un servidor externo, a través de FTP.
• FTP Servidor de Vídeo: Introduzca la dirección FTP del servidor donde se almacenarán los vídeos.Ejemplos
ftp://ftp.miservidordevideos.com/httpdocs/movies
ftp://ftp.miservidordevideos.com/
• Nombre de Usuario/Contraseña: Los datos para acceder al FTP. .
• Modo Activo: Algunos servidores requieren una conexión FTP "activa" para transferir archivos (la mayoría no lo necesita). Si tiene problemas subiendo vídeos, seleccione "Sí".
• URL Base de Reproducción: Especifique la ruta de acceso absoluta para los vídeos por HTTP. Ejemplo:
http://www.miservidordevideos.com/movies
NOTA: Si necesita un mayor control para especificar la URL de reproducción, o si necesita utilizar URLs de streaming, entonces es necesaria la extensión StreamClip.
Cuando se selecciona AWS, la WebTV subirá los vídeos a una cuenta Amazon S3.
• AWS Access Key/Secret Key: Las credenciales de acceso a la cuenta S3.
• AWS Bucket: Introduzca el nombre del "bucket" donde se almacenarán los archivos.
• AWS Ruta: La carpeta, dentro del "bucket", donde se almacenarán los archivos. Deje este campo en blanco si desea que los archivos se almacenen en la raíz del "bucket".
• AWS End Point: Este es el "End Point" que Ud. seleccionó cuando creó el "bucket".
• URL Base de Reproducción: Especifique la ruta de acceso absoluta para los vídeos por HTTP. Ejemplo:
https://s3.amazonaws.com/nombre-bucket/
NOTA: Si necesita un mayor control para especificar la URL de reproducción, o si necesita utilizar URLs de streaming, entonces es necesaria la extensión StreamClip.
NOTA: Los campos "Fórmula URL Base de Reproducción" están disponibles cuando se utiliza un servidor externo, o Amazon S3, para el almacenamiento de vídeos - ver más abajo -. Se requiere WS.WebTV Professional y la extensión StreamClip.
Esta característica avanzada se utiliza para integrar la WebTV con un CDN.
Explicación de la Fórmula URL Base de Reproducción
La fórmula URL permite integrar WS.WebTV Professional con CDNs que funcionen mediante un único punto de publicación de archivos, por FTP o AWS (ver "Almacenamiento de Vídeo" más abajo), y acceso a los medios mediante "fórmulas" URL.
Cuando sube un vídeo a la WebTV, éste se almacena en el servidor destino, y en la base de datos sólo se guarda el nombre del archivo. La URL definitiva de los archivos de vídeo se genera al momento de la reproducción, utilizando la fórmula. Si no se introduce la fórmula, se utilizará la URL Base de Reproducción (ver más abajo). De la misma manera, si se utiliza la fórmula URL, ésta prevalecerá sobre la URL Base de Reproducción.
¿Cómo crear una fórmula?.
Es muy fácil, lo explicaremos con unas fórmulas de ejemplo:
http://mi.cdn/app/carpeta/{filename.ext}.smil
rtmp://miservidordemedios.com/app/mp4:{filename.ext}
http://miservidordemedios.com/vod/{filename.ext}
Como puede apreciar, en los ejemplos anteriores, hemos utilizado la etiqueta {filename.ext}; esa etiqueta le indica a la WebTV dónde incluir/reemplazar el nombre de archivo de vídeo, al momento de generar la URL definitiva de los archivos.