Caricamento delle risorse
Panoramica
Questa esercitazione spiega come caricare le risorse in Frame.io. Frame.io gestisce tutti i tipi di file, non solo video, ma anche script, immagini, mappe e file di riferimento. In termini più tecnici, una risorsa in Frame.io è una rappresentazione completa di un file in S3 e del relativo contesto in Frame.io, inclusi transcodifiche, contesto di utente/team/progetto e metadati. Per ulteriori informazioni sulle risorse, consulta la rispettiva definizione.
Gerarchie principali
È utile anche sapere in che modo Frame.io struttura i suoi modelli principali.
Gli account, ai quali appartengono gli utenti, hanno molti progetti che contengono risorse. I team sono disponibili solo per gli account Enterprise e forniscono un livello aggiuntivo di separazione logica. Le risorse non “sanno” a quale team appartengono, ma solo a quale progetto e account. I progetti, però, sono di proprietà esclusiva dei team e non degli account, di conseguenza i team sono parte integrante del processo di caricamento delle risorse.
Prerequisiti
Per questa esercitazione ti serve:
- Un account Frame.io con un token per sviluppatori (i token sono spiegati di seguito)
- SDK Python di Frame.io
Carica una risorsa
Questa sezione illustra i passaggi per caricare una risorsa.
- Crea un token per sviluppatori in developer.frame.io con i seguenti ambiti:
Hai bisogno di aiuto per creare un token API?
Consulta le istruzioni qui.
- Individua una destinazione per la risorsa. Come minimo, le risorse devono essere inserite all’interno di un progetto. Devi recuperare l’ID della risorsa radice (
root_asset_id) per un progetto o l’ID di una risorsa per una cartella per specificare la posizione nella gerarchia dei file in cui vuoi caricare.
NOTA:
Non puoi eseguire il caricamento usando solo l’ID del progetto. Per eseguire il caricamento nella root del progetto, specifica il root_asset_id nella richiesta.
In generale, devi recuperare (nell’ordine specificato):
- ID account e scegliere un account
- ID team e scegliere un team
- Progetti associati a un team
- ID del progetto su cui lavorare
- ID della risorsa root o ID di una cartella
Puoi eseguire il caricamento direttamente nella root di un progetto usando il root_asset_id.
Elenca le risorse
Per scegliere dove caricare la nuova risorsa, puoi usare l’API in modo da elencare tutte le risorse in un progetto o in una cartella all’interno di un progetto. Se una risorsa è una cartella, conterrà risorse figlio che possono essere file e cartelle. Quando elenchi le informazioni delle risorse, puoi usare qualsiasi ID risorsa, ma se vuoi rivedere tutto ciò che è associato a un progetto, usa il 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’])
Dall’elenco restituito delle risorse, puoi usare un ID per qualsiasi risorsa che sia una cartella oppure l’ID della risorsa root. Userai questo ID per contrassegnare dove vuoi caricare la nuova risorsa.
Carica la risorsa
In questo esempio, caricheremo un nuovo file. Devi inviare la richiesta con le seguenti informazioni:
Gli URL delle risorse scadono
Gli URL restituiti dalla chiamata API per la creazione delle risorse sono pre-firmati in modo da autorizzare il caricamento, ma scadono dopo 24 ore.
Crea il tuo programma di caricamento dei file
Se vuoi creare un programma di caricamento personalizzato, si consiglia di caricare i chunk in parallelo per avere delle prestazioni ottimali. Ogni chunk deve essere inserito (PUT) direttamente negli URL di Amazon S3 forniti nella risposta dall’API di Frame.io. I chunk dei file devono corrispondere all’ordine di upload_url forniti, poiché determinano la sequenza della risorsa finale concatenata e transcodificata. Questo significa che il primo URL prende il primo chunk, il secondo URL prende il secondo chunk e così via.
Esempio di pseudocodice
Le intestazioni per ogni richiesta a S3 devono includere il filetype della nuova risorsa esattamente come è stato restituito dalla chiamata iniziale all’API Frame.io, oltre a un’intestazione di privacy aggiuntiva:
Puoi vedere un esempio di come tutto questo viene gestito nel nostro SDK Python qui.
Gli errori AWS sono formattati in XML
Tieni presente che eventuali errori che ricevi in questa fase arriveranno direttamente da AWS e, pertanto, saranno formattati come XML, non secondo la gestione standard degli errori JSON di Frame.io. In generale, consigliamo di creare logiche di nuovi tentativi di questi caricamenti per qualsiasi utilizzo in produzione, poiché i file caricati in modo incompleto (ossia file con chunk mancanti) non riescono a essere transcodificati e visualizzati in Frame.io
Ecco fatto! Una volta completate le chiamate PUT agli `upload_url, avrai una nuova risorsa in Frame.io.