La creación de video es un flujo de trabajo intensivo en datos. Un Adstacker proyecto puede incluir clips de origen, miniaturas, videos normalizados, audio extraído, superposiciones reutilizables y variaciones terminadas. Necesitamos cargas que no sobrecarguen el servidor de aplicaciones, validación confiable, ubicaciones de salida predecibles y limpieza de trabajos abandonados.
Amazon S3 es la capa de activos duradera detrás de ese flujo de trabajo. Adstacker lo utiliza para mover archivos grandes directamente de los creadores al almacenamiento, organizar cada etapa de un proyecto y hacer que los videos terminados estén disponibles para descargar.
El desafío: los activos de video se multiplican rápidamente
Las pruebas creativas permiten que un pequeño conjunto de clips produzca muchas variaciones, y crea un problema de gestión de activos. Un proyecto puede comenzar con material de gancho, cuerpo y CTA, y luego producir copias normalizadas, audio, superposiciones con subtítulos, miniaturas y salidas finales en MP4 o MOV.
Mover cada byte a través de la API ralentizaría las cargas y consumiría ancho de banda del servidor. Los nombres de archivo sueltos dificultarían los reintentos y dejarían activos huérfanos cuando un creador cierra una pestaña a mitad de la carga.
El almacenamiento debe ser una parte intencional del pipeline de producción.
Nuestro enfoque: S3 a lo largo de todo el ciclo de vida del activo
S3 está involucrado desde la creación del proyecto hasta la descarga final. El backend maneja la autorización, los manifiestos, la validación y el estado del trabajo; S3 maneja los objetos grandes.
Arquitectura

Esta división proporciona a los archivos multimedia una ruta directa y duradera al almacenamiento.
1. Cargar videos grandes directamente desde el navegador
Cuando un creador inicia un proyecto, Adstacker crea un manifiesto de video de origen y devuelve un S3 POST pre-firmado para cada archivo. El navegador envía el archivo directamente a S3 en lugar de usar el backend como proxy.
S3 aplica las restricciones de carga firmadas: un tipo de contenido fijado y un rango de tamaño permitido. Esto detiene las cargas vacías o sobredimensionadas antes de que lleguen, mientras que la solicitud de corta duración limita lo que el navegador puede cargar.
Si una sesión es interrumpida, Adstacker reemite URLs nuevas para los videos pendientes. También verifica S3 durante la reanudación, de modo que un objeto que perdió la llamada de retorno de finalización aún puede ser reconciliado y validado.
2. Verificar lo que llegó antes de procesarlo
Una carga completada en el navegador no es suficiente para comenzar a renderizar. El backend usa S3 HEAD para confirmar el objeto, leer su tamaño y ETag, y guardar ese ETag con el video validado.
A continuación, Adstacker descarga el objeto temporalmente para la validación con FFprobe. Confirmamos que es legible y que la duración y la resolución efectiva cumplen con los requisitos del proyecto. Los archivos inválidos reciben una razón de rechazo útil y son eliminados; los fallos de lectura transitorios dejan el objeto en su lugar para reintentarlo.
Cada video pasa por un ciclo de vida claro: pendiente, subiendo, subido, validando, validado o rechazado. Un proyecto avanza solo después de que cada activo esperado es validado, y las actualizaciones atómicas evitan que las llamadas de retorno duplicadas cuenten un video dos veces.
3. Hacer que cada salida sea predecible y reutilizable
Adstacker utiliza rutas S3 deterministas basadas en el proyecto, tipo de activo, categoría y variación. Los medios normalizados y el audio extraído viven por separado de las superposiciones renderizadas y las combinaciones finales.
Esa organización ayuda al pipeline de tres maneras:
- Búsqueda directa: Los trabajadores pueden encontrar exactamente la entrada o salida asociada a un proyecto y variación.
- Reutilización eficiente: Las superposiciones reutilizables se almacenan una vez y pueden soportar más de una combinación final.
- Reintentos idempotentes: Un reintento escribe en la misma clave esperada, evitando un rastro creciente de exportaciones duplicadas.
Los registros de video finales guardan las claves S3 y las URLs para la salida, miniatura y—cuando sea relevante—la variante MOV. La aplicación puede entonces proporcionar el formato que esté listo.
4. Entregar acceso de forma segura y limpiar el trabajo incompleto
El bucket S3 es privado. Adstacker emite URLs de descarga firmadas y con tiempo limitado, opcionalmente con un nombre de archivo de descarga, para que los activos no necesiten exposición pública.
No todas las cargas se convierten en un proyecto terminado. La limpieza programada identifica proyectos incompletos obsoletos y elimina sus objetos S3 de origen restantes. Las cargas rechazadas se eliminan inmediatamente después de que falla la validación.
Estas reglas de ciclo de vida limitan el almacenamiento abandonado mientras preservan el historial del proyecto.
Ejemplo real: una carga interrumpida no significa empezar de nuevo
Imagina que un especialista en marketing sube seis clips, luego cierra el navegador después de que cuatro llegan a S3. Al regresar, Adstacker restaura la sesión de carga y proporciona nuevas solicitudes pre-firmadas para los clips incompletos. También verifica si un archivo llegó a S3 incluso si se perdió su llamada de retorno de finalización.
Una vez que los seis archivos son verificados y validados, el proyecto pasa a procesamiento. Las fuentes, medios preparados, superposiciones, miniaturas y variaciones finales permanecen organizados bajo claves conocidas para cada paso posterior.
Almacenamiento diseñado para la velocidad creativa
Amazon S3 permite a Adstacker tratar los activos de video como un ciclo de vida gestionado: cargar directamente, verificar el objeto, validar el medio, crear salidas predecibles, autorizar descargas y limpiar el trabajo incompleto. Eso permite que el pipeline creativo se centre en convertir clips en variaciones probables.
Carga tus activos a Adstacker, construye las combinaciones que quieres probar y deja que la plataforma gestione el flujo de trabajo de almacenamiento detrás de cada renderizado.
Pila tecnológica: Amazon S3 · AWS SDK for JavaScript · Presigned S3 POSTs · NestJS · FFprobe · AWS ECS Fargate · MongoDB
Lee más de nuestro equipo
1. Servicio de Exportación vs. Pipeline de Editor de Video
2. Construyendo un Editor de Video Normal
3. Optimizando el Logotipo del Canal para Diferentes Resoluciones de Video

