Cargar activos

Información general

En este tutorial se explica cómo cargar activos en Frame.io. Frame.io puede gestionar todos los tipos de archivos, no solo vídeo, sino también scripts, imágenes, mapas y archivos de referencia. En términos más técnicos, un activo en Frame.io es una representación sólida de un archivo en S3 y su contexto en Frame.io, incluidas las transcodificaciones, el contexto de usuario/equipo/proyecto y los metadatos. Para obtener más información sobre los activos, consulte la definición del activo.

Jerarquías principales

También es útil saber cómo Frame.io estructura sus modelos principales.

Las cuentas, a las que pertenecen los usuarios, tienen muchos proyectos, que contienen activos. Los equipos solo están disponibles solo para cuentas de Enterprise, y proporcionan un nivel adicional de separación lógica. Los activos no “saben” a qué equipo pertenecen, solo el proyecto y la cuenta a los que pertenecen, pero los proyectos son propiedad estricta de los equipos, y no de las cuentas, lo que hace que los equipos sean una parte integral del proceso de carga de activos.

Requisitos previos

Para este tutorial, necesitará:

Cargar un activo

En esta sección se explican los pasos para cargar un activo.

  1. Crear un token de desarrollador en developer.frame.io con los siguientes ámbitos:
ÁmbitoMotivo
Cuentas: LecturaRecuperar la lista de cuentas para el usuario que realiza la solicitud.
Equipos: LecturaRecuperar equipos disponibles para la cuenta deseada.
Proyectos: LecturaRecuperar proyectos disponibles para el equipo deseado.
Activos: Creación, LecturaCrear el nuevo registro de activo y recuperar los activos disponibles para navegar por la estructura de carpetas dentro del proyecto.
¿Necesita ayuda para crear un token de API?

Revise las instrucciones que aparecen aquí.

  1. Localice un destino para su activo. Como mínimo, los activos deben colocarse dentro de un proyecto. Necesitará obtener el ID del activo raíz (root_asset_id) de un proyecto o el ID de activo de una carpeta para poder especificar la ubicación en la jerarquía de archivos en la que desea realizar la carga.
NOTA:

No puede cargar solo con un ID de proyecto. Para cargar a la raíz de su proyecto, especifique el root_asset_id en su solicitud.

En general, necesita recuperar (en el orden especificado):

  • Los ID de cuenta y elegir una cuenta
  • Los ID de equipo y elegir un equipo
  • Los proyectos asociados con un equipo
  • El ID de proyecto para el proyecto con el que desea trabajar
  • El ID de activo raíz o un ID de carpeta

Puede realizar la carga directamente en la raíz de un proyecto con el root_asset_id.

Enumerar activos

Para elegir dónde desea cargar su activo nuevo, puede usar la API para enumerar todos los activos que hay en un proyecto o carpeta dentro de un proyecto. Si un activo es una carpeta, contendrá activos secundarios, que también pueden ser archivos y carpetas. Al enumerar información de activos, puede usar cualquier ID de activo, pero si desea revisar todo lo asociado con un proyecto, use el root_asset_id.

``` python-sdk
from frameioclient import FrameioClient
import os
ASSET_ID = ""
TOKEN = ""
client = FrameioClient(TOKEN)
response_list = client.assets.get_children(ASSET_ID)
assets = response_list.results
for item in assets:
print(item['id'], item['name'])
```python-sdk
# Code sample uses the Python SDK: https://github.com/Frameio/python-frameio-client
from frameioclient import FrameioClient
client = frameioclient("FRAMEIO_TOKEN)
asset = client.assets.upload(
destination_id="PARENT_ASSET_ID",
filepath="./my_file.mov"
)
# Create a folder:
asset = client.assets.create_folder(
parent_asset_id=PARENT_ASSET_ID,
name="My Awesome Folder"
)

De la lista de activos que se devuelve, puede usar un ID para cualquier activo que sea una carpeta, o el ID de activo raíz. Usará este ID para marcar dónde desea cargar su activo nuevo.

Cargar activo

En este ejemplo, vamos a cargar un archivo nuevo. Envíe su solicitud con la siguiente información:

ParámetroDescripción
filesizeIntroduzca el tamaño del archivo que desea cargar
filetypeElija el tipo de archivo que está cargando. Entre las opciones se incluyen vídeo e imagen. Ejemplos: video/mp4, image/png.
nameIntroduzca una cadena que represente el nombre del archivo, sin espacios.
typeEsto representa si está usando un file o una folder. Una pila de versiones es cuando apila varios archivos uno encima del otro.
Si desea crear una carpeta nueva, entonces no necesita incluir filesize o filetype en su solicitud. Para una solicitud cURL, puede cargar rápidamente un activo en Frame.io incluyendo un vínculo a su archivo con el parámetro "source": { "url":"URL_FOR_VIDEO" }. Se debe poder acceder públicamente al vínculo. De lo contrario, puede usar el SDK de Python, que se encarga de dividir su archivo en fragmentos para cada vínculo de carga. ``` cURL

curl —request POST \

—url https://api.frame.io/v2/assets/&lt;asset_id&gt;/children \ —header ‘authorization: Bearer<dev_token>’ \

—header ‘content-type: application/json’ \

—data ’{“filesize”:200000,“filetype”:“video/mp4”,“name”:“test”,“source”:{“url”:“URL_FOR_VIDEO”},“type”:“file”}’</dev_token></asset_id>```

Python
1filesize = 30000000
2upload_urls = ["https://...", "https://...", "https://..."]
3chunk_size = filesize / len(upload_urls)
4
5start_byte = 0 # Set to 0 to start
6for i, url in enumerate(upload_urls):
7 end_byte = chunk_size * (i + 1)
8 upload_chunk(url=url, start_byte, end_byte)
9 start_byte = start_byte + chunk_size
Las URL de activos caducarán

Las URL que obtiene de la llamada API de creación de activos están firmadas previamente para autorizar su carga, pero caducarán después de 24 horas.

Crear su propio cargador de archivos

Si desea crear su propio cargador, para obtener el mejor rendimiento, se recomienda cargar fragmentos en paralelo. Cada fragmento debe enviarse con PUT directamente a las URL de Amazon S3 proporcionadas en la respuesta de la API de Frame.io. Los fragmentos del archivo deben coincidir con el orden de las upload_urls proporcionadas, ya que dictan la secuencia del activo final concatenado y transcodificado. Esto significa que la primera URL toma el primer fragmento, la segunda URL toma el segundo fragmento, y así sucesivamente.

Ejemplo de pseudocódigo

Python
1filesize = 30000000
2
3
4
5
6upload_urls = [&quot;https://...&quot;, &quot;https://...&quot;, &quot;https://...&quot;]
7
8
9
10
11chunk_size = filesize / len(upload_urls)
12
13
14
15
16
17start_byte = 0 # Set to 0 to start
18
19
20
21
22for i, url in enumerate(upload_urls):
23
24
25
26
27end_byte = chunk_size * (i + 1)
28
29
30
31
32upload_chunk(url=url, start_byte, end_byte)
33
34
35
36
37start_byte = start_byte + chunk_size
38
39``` Los encabezados de cada solicitud a S3 deben incluir el `filetype` del activo nuevo exactamente como se ha devuelto desde la llamada inicial a la API de Frame.io, así como un encabezado de privacidad adicional:
40
41```text
42PUT https://frameio-uploads-production.s3/etc/etc
43Content-Type: video/mp4
44x-amz-acl: private

Puede ver un ejemplo de cómo se gestiona todo esto en nuestro SDK de Python aquí.

Los errores de AWS tienen formato XML

Tenga en cuenta que cualquier error que obtenga en esta fase provendrá directamente de AWS y, por lo tanto, tendrá formato XML, no la gestión de errores JSON estándar de Frame.io. Por lo general, recomendamos crear lógica de reintento para estas cargas en cualquier uso de producción, ya que los archivos cargados de forma incompleta (es decir, archivos con fragmentos que faltan) no se transcodificarán y no se mostrarán en Frame.io

Eso es todo. Una vez que haya completado las llamadas PUT a las upload_urls, tendrá un activo nuevo en Frame.io.