Migrar de Mux a Transloadit
Mux se centra en la recepción, el encoding, la reproducción y la analítica de video. Transloadit es una plataforma de procesamiento de medios más amplia: puedes subir o importar archivos, generar múltiples variantes, crear salidas HLS o MPEG-DASH, producir miniaturas, añadir subtítulos, transcribir audio y guardar los resultados en tu propio almacenamiento.
Esta guía cubre la recepción, el encoding, las miniaturas y el almacenamiento. La integración del reproductor, la analítica, el control de acceso y la transferencia de metadatos de la plataforma requieren una planificación aparte; una Assembly no es un reemplazo directo de un activo y un ID de reproducción de Mux.
Mapa de migración
| Concepto de Mux | Equivalente en Transloadit |
|---|---|
| Subida directa | 🤖/upload/handle mediante un SDK o Uppy |
| Creación de activos | Una Assembly de Transloadit |
| Perfil de encoding | Ajuste preestablecido de 🤖/video/encode |
| Reproducción adaptativa | 🤖/video/adaptive o 🤖/video/ondemand |
| Imagen de póster | 🤖/video/thumbs |
| Subtítulos | 🤖/speech/transcribe puede producir SRT o WebVTT; 🤖/video/subtitle puede añadir esos subtítulos al video |
| Webhook de activo listo | Assembly Notification |
| URL de reproducción | Manifiesto HLS exportado servido por tu almacenamiento/CDN, o una URL de Smart CDN |
Elegir encoding por adelantado o bajo demanda
Para catálogos predecibles, codifica las variantes por adelantado con /video/encode y
/video/adaptive. Para catálogos grandes en los que solo se ve una fracción de los
videos, evalúa /video/ondemand con Smart CDN para que los archivos HLS se generen a
medida que los espectadores los solicitan. Este Robot necesita un Template de Smart CDN compatible e
independiente cuya rama de respuesta termine en /file/serve. Firma las URL en tu
backend para proteger tu presupuesto de encoding frente a abusos. El Template de subida y
exportación de abajo es para encoding por adelantado, no para Smart CDN.
Ejemplo de Template de video adaptativo
Este Template recibe un video, codifica tres variantes, las segmenta, escribe listas de reproducción de variantes y una lista de reproducción multivariante, crea una miniatura y guarda el paquete en S3. Usa un solo video de origen por Assembly para este ejemplo y elige variantes adecuadas a su resolución; los tres ajustes preestablecidos no añaden el detalle que le falta a una fuente de baja resolución:
{
"steps": {
":original": {
"robot": "/upload/handle"
},
"encoded_480p": {
"use": ":original",
"robot": "/video/encode",
"preset": "hls/480p",
"ffmpeg_stack": "v7"
},
"encoded_720p": {
"use": ":original",
"robot": "/video/encode",
"preset": "hls/720p",
"ffmpeg_stack": "v7"
},
"encoded_1080p": {
"use": ":original",
"robot": "/video/encode",
"preset": "hls/1080p",
"ffmpeg_stack": "v7"
},
"hls": {
"use": {
"steps": ["encoded_480p", "encoded_720p", "encoded_1080p"],
"bundle_steps": true
},
"robot": "/video/adaptive",
"technique": "hls",
"playlist_name": "playlist.m3u8",
"result": true
},
"poster": {
"use": ":original",
"robot": "/video/thumbs",
"count": 1,
"result": true
},
"exported_hls": {
"use": "hls",
"robot": "/s3/store",
"credentials": "YOUR_AWS_CREDENTIALS",
"path": "videos/${assembly.id}/${file.meta.relative_path}/${file.name}",
"url_prefix": "https://cdn.example.com/",
"acl": "bucket-default"
},
"exported_poster": {
"use": "poster",
"robot": "/s3/store",
"credentials": "YOUR_AWS_CREDENTIALS",
"path": "videos/${assembly.id}/posters/${file.url_name}",
"url_prefix": "https://cdn.example.com/",
"acl": "bucket-default"
}
}
}
/video/adaptive establece relative_path en sus salidas. Consérvalo en
la ruta de exportación para que las referencias de la lista de reproducción se resuelvan. Configura
credenciales de terceros y una CDN que pueda leer la raíz del bucket;
url_prefix no configura la entrega ni concede acceso.
acl: "bucket-default" no envía ninguna ACL de objeto;
configura el acceso mediante la política de tu bucket y el acceso al origen de tu CDN.
Establece notify_url en tu solicitud de Assembly firmada, verifica las firmas de
las notificaciones y exige ASSEMBLY_COMPLETED. La exportación actualiza las URL bajo los
Steps que las producen: results.hls enumera los segmentos y las listas de
reproducción; selecciona la entrada llamada playlist.m3u8 con un
meta.relative_path vacío. Lee la miniatura desde results.poster y
comprueba is_temp_url: false antes de guardar su URL. Las URL temporales de Transloadit
caducan después de 24 horas y no deben usarse para la reproducción; consulta la guía para
guardar los resultados de conversión. Prueba el manifiesto exportado,
las listas de reproducción de variantes y los segmentos a través de tu CDN en el reproductor HLS
previsto antes de cambiar el tráfico.
Importar archivos de origen existentes de Mux
Si todavía tienes archivos de video de origen en S3, usa 🤖/s3/import.
Si tu aplicación almacena URL de origen HTTPS temporales, usa
🤖/http/import. Guarda una versión del Template para la carga
retroactiva: reemplaza el Step de subida :original por un Step de importación
llamado imported y cambia las cuatro referencias a
use: ":original" (las tres de encoding y la del póster) por
use: "imported". Configura ese Step de importación con una URL de origen autorizada o
una clave de S3 por Assembly. Para /s3/import, configura sus propios
credentials y path de origen; para
/http/import, configura url. Por ejemplo, el Step de
importación HTTPS puede leer una URL de origen seleccionada por el backend desde el
fields.source_url de tu solicitud de Assembly firmada:
{
"steps": {
"imported": {
"robot": "/http/import",
"url": "${fields.source_url}"
}
}
}
Este es el Step de entrada de reemplazo, no el Template de procesamiento completo. Usa solo URL de origen a las que tengas autorización para acceder. Las URL de origen temporales deben seguir siendo válidas hasta que termine la importación; renueva las URL caducadas antes de reintentar. Tras una exportación correcta y una comprobación de la reproducción, escribe la nueva URL de reproducción en tu base de datos y conserva el ID del activo de origen para la conciliación.
Lista de comprobación
- Decide si los videos deben codificarse por adelantado o bajo demanda.
- Crea un Template para las variantes, miniaturas, subtítulos y exportaciones que necesites.
- Configura las credenciales de almacenamiento, el acceso a la CDN y CORS para la reproducción HLS.
- Guarda las URL de almacenamiento exportadas que recibes en las Assembly Notifications.
- Ejecuta una carga retroactiva para los videos de origen existentes.
- Cambia tu reproductor de los IDs de reproducción de Mux al manifiesto exportado o a la URL de Smart CDN.