Video ersetzen
Um die Videodatei zu ersetzen, sendest du eine PUT-Anfrage an den Endpoint /videos/upload/[VIDEO_ID].
In der Antwort erhältst du eine signierte S3-URL, über die du die Videodatei hochladen kannst. Setze useMultipart im JSON-Body auf true, wenn du stattdessen einen Multipart Upload willst. Die Antwort enthält dann multipartUpload statt signedUrl. Siehe Multipart Upload.
Beim Ersetzen werden alle alten Videodateien dieses Videos gelöscht oder überschrieben. Der Vorgang ist nicht rückgängig zu machen.
Signierte URL abrufen
CURL
curl -X PUT https://app.ignitevideo.cloud/api/videos/upload/[VIDEO_ID] \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"useMultipart": false}'Antwort
Ein Upload einer einzelnen Datei liefert signedUrl. Diese URL läuft nach 1 Stunde ab.
{
"videoId": "[VIDEO_ID]",
"signedUrl": "[SIGNED_URL]"
}Mit useMultipart: true besteht die Antwort aus videoId plus multipartUpload:
{
"videoId": "[VIDEO_ID]",
"multipartUpload": {
"uploadId": "[UPLOAD_ID]",
"key": "[S3_KEY]"
}
}Fehler
Ein fehlendes Video liefert 400:
{
"error": "not_found"
}Eine Id, die nicht aus 24 Hex-Zeichen besteht, liefert 400:
{
"error": "invalid_video_id"
}Videodatei hochladen
Lade deine Videodatei per PUT-Anfrage zu der signierten URL aus dem vorherigen Schritt hoch.
Du musst den MIME-Typ der Datei als Content-Type-Header übergeben. Den MIME-Typ kannst du aus deiner lokalen Videodatei über das Datei-Input-Element auslesen.
CURL
curl -X PUT [SIGNED_URL] \
-H "Content-Type: [MIME_TYPE]" \
--data-binary "@[PATH_TO_VIDEO_FILE]"Encoding-Prozess
Nach dem Upload der Ersatzdatei startet das Encoding. Im Replace-Flow kann status kurz REPLACING sein, bevor er PROGRESSING wird. Je nach Dateigröße und Encoding-Komplexität kann das eine Weile dauern.
Den Encoding-Status pollst du mit GET /api/videos/[VIDEO_ID] wie im Abschnitt Video abrufen beschrieben. Ein Poll-Intervall von ein paar Sekunden reicht normalerweise aus. Während das Encoding läuft, ist status PROGRESSING und statusProgress ein Prozentwert von 0 bis 100.
Beispielfelder während des Encodings:
{
"id": "[VIDEO_ID]",
"status": "PROGRESSING",
"statusProgress": 36,
"errorCode": null,
"errorMessage": null
}Ist das Encoding erfolgreich, wird status zu COMPLETE, statusProgress ist 100, und Wiedergabequellen sind unter src verfügbar.
Schlägt das Encoding fehl, wird status zu ERROR. Nutze errorCode für die programmatische Verarbeitung und errorMessage als lesbare Fallback-Meldung. Siehe Encoding-Status für den vollständigen Lebenszyklus, Statuswerte und Fehlercodes.
Alternativ kannst du video.updated-Webhooks abonnieren statt zu pollen. Fortschritts-Updates können während des Encodings häufig ausgelöst werden. Siehe Webhooks.