Cómo realizar cargas (conceptos básicos)
Cómo realizar cargas (conceptos básicos)
Introducción
Hemos llegado a un punto emocionante en nuestro proceso de integración: cargar activos en Frame.io. En esta guía se explica el proceso básico de carga.
Requisitos previos
Si aún no lo ha hecho, revise la guía Implementar C2C: Configuración antes de continuar. Necesitará el access_token que se obtiene durante el proceso de autenticación y autorización. Para esta guía, usaremos un activo de muestra disponible en este enlace de Frame.io. Descargue este archivo para seguir nuestros ejemplos, ya que le permitirá hacer coincidir los valores de nuestros comandos de muestra.
Paso 1: Crear un activo
Carguemos nuestro archivo de muestra, que asumiremos que se creó hace 10 segundos. Primero, debemos crear una referencia de activo en Frame.io:
Especificación del punto final de la API
La documentación para /v2/devices/assets está disponible aquí. Aunque el punto final heredado /v2/assets aún funciona, recomendamos que las nuevas integraciones utilicen /v2/devices/assets.
Codificación JSON
A diferencia de los puntos finales de autenticación que hemos utilizado anteriormente, este punto final acepta codificación application/json en lugar de form/multipart. También acepta application/x-www-form-urlencoded.
Examinemos los parámetros de la carga útil JSON:
name: El nombre del activo que se muestra en Frame.io. No es necesario que coincida con el nombre del archivo en el disco. filetype: El tipo MIME del archivo. La mayoría de los lenguajes de programación proporcionan utilidades para detectar los tipos MIME (ejemplos: Go, Python). filesize: El tamaño del archivo en bytes. Nuestro archivo de muestra ocupa aproximadamente 21,1 MB. offset: El número de segundos transcurridos desde la creación del archivo. El valor predeterminado es 0 si se omite. Es necesario proporcionar este parámetro, ya que ayuda a determinar si los archivos deben rechazarse si el dispositivo se pone en pausa. Trataremos esto con más detalle en la guía avanzada sobre las cargas.
La respuesta tendrá un aspecto similar a este (con algunos campos omitidos):
Llegados a este punto, solo hemos informado a Frame.io de nuestra intención de cargar un archivo; no se han transferido datos de archivo reales. Si revisa la carpeta del dispositivo en su proyecto, verá un marcador de posición del activo en el estado “uploading”.
El campo upload_urls contiene las URL en las que cargaremos nuestros fragmentos de archivo. Para nuestro archivo de prueba, deberíamos recibir dos URL de carga.
Paso 2: Dividir el archivo en fragmentos
La respuesta contenía varias URL de carga. Al cargar en Frame.io, dividimos los archivos en fragmentos y los cargamos por separado, lo que ofrece varias ventajas:
- Más fiabilidad: Si un fragmento falla, no hace falta reiniciar toda la carga
- Cargas más rápidas: Podemos cargar varios fragmentos en paralelo (se trata en la guía sobre las cargas avanzadas)
Para determinar el tamaño óptimo de los fragmentos, use esta fórmula:
Para nuestro archivo de muestra, el cálculo es:
Esto significa que cada fragmento debe ocupar 10 568 125 bytes. Los tamaños de fragmento suelen rondar los 25 MB, y puede obtener información sobre los cálculos exactos en la guía avanzada sobre las cargas.
Tamaño del último fragmento
Dado que los tamaños de archivo raramente se dividen uniformemente, puede que el fragmento final sea menor que el chunk_size calculado. Su implementación debe tener esto en cuenta al leer fragmentos de archivo.
Para esta demostración, usaremos los comandos head y tail para extraer los fragmentos de archivo.
Paso 3: Cargar los fragmentos
Para cargar el primer fragmento:
Sintaxis de comandos
El parámetro --data-binary @- indica a curl que use datos sin procesar de stdin, que provienen del comando head.
La solicitud necesita estos encabezados:
content-type: El mismo valor del tipo MIME utilizado al crear el activo x-amz-acl: Para los permisos de AWS S3, se debe establecer siempre en private
Una carga correcta devuelve:
De manera similar, cargue el segundo fragmento:
Cuando ambas cargas se hayan completado, su activo debería poder reproducirse en Frame.io. 🎉
Errores de carga
Al cargar fragmentos, envía datos directamente a AWS S3, no a la API de Frame.io. Las respuestas de error seguirán los formatos de AWS S3 en lugar de los errores estándar de Frame.io. Trataremos la gestión de errores de S3 en la guía sobre la gestión de errores.
Orden de los fragmentos
Aunque en teoría es más fácil cargar fragmentos de manera secuencial, en realidad pueden cargarse en cualquier orden. El sistema los ensamblará correctamente independientemente de la secuencia de carga.
Unión de todos los pasos
A continuación, se muestra un ejemplo de pseudocódigo simplificado similar a Python para el proceso de carga completo:
Este ejemplo demuestra el flujo básico sin gestión de errores o cargas paralelas, aspectos que se tratarán en la guía sobre la gestión de errores y la guía avanzada sobre las cargas.
Próximos pasos
Enhorabuena por cargar correctamente su primer activo en Frame.io. La guía avanzada sobre las cargas tratará los requisitos y las técnicas más sofisticados para preparar las implementaciones para producción. Le recomendamos que se ponga en contacto con nuestro equipo si tiene alguna pregunta y a continuar con la guía sobre las cargas en tiempo real para obtener más información sobre cómo cargar activos mientras se están creando.