Migrar de Mux a Transloadit
Mux se centra en la recepción de video, el encoding, la reproducción y la analítica. 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, agregar 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 asset de Mux y un playback ID.
Mapa de migración
| Concepto de Mux | Equivalente en Transloadit |
|---|---|
| Subida directa | 🤖/upload/handle mediante un SDK o Uppy |
| Creación de assets | Una Assembly de Transloadit |
| Perfil de encoding | Ajuste preestablecido de 🤖/video/encode |
| Reproducción adaptativa | 🤖/video/adaptive o 🤖/video/ondemand (beta) |
| Imagen de póster | 🤖/video/thumbs |
| Closed Captions/subtítulos | 🤖/speech/transcribe puede producir SRT o WebVTT; 🤖/video/subtitle puede agregar esos subtítulos al video |
| Webhook de asset 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 assets HLS se generen a medida que los
espectadores los solicitan. Este Robot en beta 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 que aparece más 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 en este ejemplo y elige variantes apropiadas para su resolución; los tres ajustes preestablecidos no agregan el detalle que falta a un origen 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 las
credenciales de terceros y un CDN que pueda leer la raíz del bucket;
url_prefix no configura la entrega ni otorga acceso.
acl: "bucket-default" no envía ninguna ACL de objeto; configura
el acceso mediante la política de tu bucket y el acceso de origen del CDN.
Establece notify_url en tu solicitud firmada de Assembly, verifica las firmas de
notificación y exige ASSEMBLY_COMPLETED. La exportación actualiza las URL bajo los Steps
que las producen: results.hls lista 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, comprobando is_temp_url: false antes de
guardar las URL de resultados exportadas. Las URL temporales de Transloadit caducan después de 24
horas y no deben usarse para la reproducción; consulta
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 los 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 variante de relleno retroactivo del Template: reemplaza el Step de subida
:original por un Step de importación llamado imported y cambia
las cuatro referencias a use: ":original" (tres encodings y el 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 su propio
credentials y path de origen; para /http/import,
configura url. Después de una exportación y una comprobación de reproducción
correctas, escribe la nueva URL de reproducción en tu base de datos y conserva el ID del asset de
origen para la conciliación.
Lista de verificación
- Decide si los videos deben codificarse por adelantado o bajo demanda.
- Crea un Template para las variantes, miniaturas, Closed Captions y exportaciones que necesites.
- Configura las credenciales de almacenamiento, el acceso al CDN y CORS para la reproducción HLS.
- Almacena las URL de almacenamiento exportadas de las Assembly Notifications.
- Ejecuta un relleno retroactivo para los videos de origen existentes.
- Cambia tu reproductor de los playback IDs de Mux al manifiesto exportado o a la URL de Smart CDN.