Skip to Content
API-ReferenzVideosVideodatei ersetzen

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 -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 -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.