Saltar al contenido
TubePress — gratuito, autoalojado & con mantenimiento activo
Medios y transcodificación

Transcodificación

Cómo TubePress convierte las subidas en versiones listas para la web con trabajadores FFmpeg distribuidos.

La transcodificación convierte un único archivo subido en varias versiones MP4 compatibles con la web, para que los espectadores tengan un menú de calidad, reproducción de inicio rápido y un códec consistente independientemente de lo que se haya subido. También incorpora extras opcionales — marcas de agua y clips de intro/outro — y genera los sprites de vista previa de navegación que utiliza el reproductor.

Todo aquí se configura en /admin/settings?tab=transcode, dividido entre las sub-pestañas Formatos, Cola, Servidores, Marca de agua, Intros y Línea de tiempo. La transcodificación puede ejecutarse en el servidor CMS mismo o distribuirse a trabajadores dedicados.

Por qué transcodificar

Un archivo subido en bruto puede tener cualquier resolución, códec o contenedor. La transcodificación lo estandariza en versiones MP4/H.264 con +faststart para que la reproducción comience antes de que el archivo se descargue completamente, y produce varios tamaños (por ejemplo, 720p y 480p) para que el reproductor pueda ofrecer un selector de calidad y servir archivos más pequeños a pantallas más pequeñas. El mismo proceso es donde se aplican las marcas de agua y los clips de pre/post-roll, ya que tienen que codificarse en cada versión.

El pipeline de transcodificación

Cuando un vídeo está listo para procesar, TubePress pone en cola un trabajo por cada salida en la tabla transcode_jobs y los procesa:

  1. Cola. Se crea un trabajo para el nivel de la fuente a resolución completa y para cada formato activo por debajo de la altura de la fuente, más un trabajo de línea de tiempo si las vistas previas están habilitadas.
  2. Toma. Un trabajador — este servidor o uno remoto — reclama el siguiente trabajo pendiente, comenzando con el nivel fuente.
  3. Descarga. Un trabajador remoto obtiene la fuente a través de HTTP (una URL directa autenticada por clave que omite los enlaces multimedia firmados).
  4. Transcodificación. FFmpeg codifica la versión, aplicando recorte, marca de agua e intros según la configuración, reportando el progreso en porcentaje a medida que avanza.
  5. Subida y callback. El resultado se sube de vuelta en partes y un callback marca el trabajo como completado.

El estado del vídeo rastrea esto: permanece en procesando mientras se ejecutan los trabajos, cambia a publicado tan pronto como termina el nivel fuente, y solo se convierte en error si el nivel fuente nunca puede producirse. Las versiones de menor calidad continúan completándose después de la publicación.

Los vídeos embebidos nunca se transcodifican. Solo los archivos subidos o basados en URL entran en el pipeline; un vídeo con un código de inserción se sirve directamente desde su fuente.

Versiones y formatos

Los formatos de salida son totalmente editables en la pestaña Formatos y se almacenan en la tabla video_formats. Cada formato tiene un nombre, un sufijo de archivo (por ejemplo, _720p.mp4), una resolución objetivo, opciones FFmpeg sin procesar, un indicador de mantener relación de aspecto y un interruptor de activación. Los valores predeterminados integrados son:

FormatoResolución
720p1280 × 720
480p854 × 480
360p640 × 360

Dos reglas mantienen la calidad razonable. TubePress nunca escala hacia arriba: cualquier formato con altura igual o superior a la fuente se omite. Y la calidad original más alta siempre se conserva — si hay una marca de agua o recorte activo, se recodifica en una versión fuente a resolución completa (mostrada con una estrella en la cola), de lo contrario el archivo fuente se sirve tal cual. Una opción Recorte inicial (0–300 segundos) puede eliminar los primeros segundos de cada vídeo; al igual que la marca de agua, se aplica a todos los formatos incluyendo la fuente.

La cola de trabajos

La pestaña Cola (/admin/settings?tab=transcode&sub=queue) agrupa los trabajos por vídeo y permite filtrar por Todos / Pendientes / Procesando / Completados / Fallidos. Cada vídeo muestra una insignia por nivel — el nivel fuente con estrella, luego cada resolución, luego TIMELINE — coloreada según el estado del trabajo:

pending
En cola, esperando un trabajador libre.
processing
Activo, con una etapa en curso (descargando, transcodificando o subiendo) y un porcentaje.
completed
Versión producida y almacenada.
failed
Sin reintentos por ahora; la recuperación automática sigue aplicándose (más abajo).

Una consola por vídeo (el ícono de terminal) transmite la lista de trabajos en vivo, el trabajador que maneja cada nivel, el tiempo transcurrido y cualquier mensaje de error. Un botón Reintentar trabajos fallidos vuelve a poner en cola todo lo que está actualmente fallido con un clic.

Servidores remotos de transcodificación

La transcodificación consume mucha CPU, por lo que puede moverla fuera del servidor web. En la pestaña Servidores, Este Servidor establece cuántos trabajos FFmpeg se ejecutan localmente a la vez (1–4, o 0 para usar solo trabajadores remotos) y permite anular la ruta de FFmpeg. Debajo puede registrar trabajadores remotos; los trabajos se distribuyen automáticamente al menos cargado, y cada uno tiene un límite de máximo de trabajos concurrentes (una buena regla es un trabajo por cada dos núcleos de CPU).

  1. Agregar el servidor. Haga clic en Agregar Servidor, asígnele un nombre y una URL como http://YOUR-IP:8090, y guarde. Se muestran inmediatamente una clave API y el comando de inicio.
  2. Instalar FFmpeg + PHP. En el servidor trabajador ejecute sudo apt install ffmpeg php-cli php-curl.
  3. Desplegar el trabajador. Descargue transcode-worker.php (desde /api/transcode-worker-download o un enlace temporal de wget), súbalo y abra el puerto con sudo ufw allow 8090/tcp.
  4. Iniciarlo. Ejecute el trabajador con su clave:
php transcode-worker.php --port=8090 --key=YOUR_API_KEY
  1. Verificar. Haga clic en Comprobar; un trabajador en buen estado reporta Online con su codificador detectado y el uso en vivo de CPU/GPU.

La aceleración GPU (NVIDIA, AMD, Intel o Apple) se detecta y se usa automáticamente. El trabajador obtiene la fuente, transcodifica, reporta el progreso y sube los resultados en partes de vuelta al CMS — la subida por partes es lo que mantiene cada solicitud por debajo del límite de 100 MB de Cloudflare. Para servidores desatendidos, la guía de configuración incluye una unidad systemd para que el trabajador se reinicie al arrancar.

Proteja el trabajador en producción. El trabajador usa HTTP plano en su puerto. Ponga Nginx con HTTPS delante de él y restrinja el puerto a su servidor CMS.

Monitoreo y reintentos

El sistema está construido para que un vídeo nunca sea abandonado silenciosamente. Una codificación fallida se reintenta automáticamente con un retroceso creciente — desde aproximadamente medio minuto hasta unas pocas horas — porque la mayoría de los fallos son transitorios (un CDN lento o inestable). Además de eso, una tarea de recuperación por hora vuelve a poner en cola cualquier trabajo aún marcado como fallido, por lo que continúa intentándolo hasta que la versión se produzca. No se requiere ningún clic manual, aunque el botón Reintentar trabajos fallidos está disponible si desea forzarlo.

Si el nivel fuente en sí falla permanentemente, sus trabajos de sub-formato dependientes se cancelan (no pueden continuar sin una fuente) y el vídeo se marca como error; la recuperación seguirá intentando recuperarlo. Cuando el nivel fuente finalmente se completa, el vídeo se publica automáticamente.

Requisitos

FFmpeg debe estar disponible donde se ejecute la transcodificación:

  • Procesamiento local: instale FFmpeg en el servidor CMS (sudo apt install ffmpeg). La página Transcodificación muestra la versión detectada una vez instalada.
  • Procesamiento remoto: cada trabajador necesita FFmpeg más php-cli y php-curl, al menos 2 núcleos de CPU y 2 GB de RAM, y un puerto de trabajador abierto.
Sin FFmpeg, sin transcodificación. Si FFmpeg no está instalado localmente y ningún servidor remoto está en línea, el interruptor de transcodificación no puede activarse — instale FFmpeg o agregue un trabajador primero.

Pasos siguientes

¿Todavía con dudas?

Abre un ticket desde tu panel y nuestro equipo te ayudará.

Prueba la demo en vivo → Descargar TubePress →