Przesyłanie wideo
Przesyłanie wideo realizujesz przez wysłanie żądania PUT do endpointu /videos/upload, aby utworzyć nowy obiekt wideo.
W odpowiedzi otrzymasz podpisany adres URL S3, pod który możesz wgrać plik wideo.
Tworzenie wideo wymaga uprawnienia videos.create. Ustawienie visibility na public wymaga też videos.publish. Bez publish wideo jest tworzone jako private. Zobacz Uwierzytelnianie.
title jest wymagane. Jest przycinane i skracane do 100 znaków. Aktualizacja pozwala na 150 znaków. Zobacz Aktualizacja wideo.
Ciało JSON przyjmuje też:
| Pole | Uwagi |
|---|---|
description | Maksimum 2000 znaków. |
visibility | public wymaga videos.publish. W przeciwnym razie wideo jest zapisywane jako private. |
categories | Co najwyżej 10 identyfikatorów. Nieznane identyfikatory są odrzucane. Klucz z zakresem bez podanych kategorii dostaje kategorie swojego zakresu, maksymalnie 10. |
tags | Co najwyżej 20 identyfikatorów. Nieznane identyfikatory są odrzucane. |
language | Locale języka mówionego, na przykład de-DE. Wymagane, gdy autoTranscribe ma wartość true. |
autoTranscribe | Uruchom transkrypcję AI po kodowaniu. |
customMetadata | Płaski obiekt klucz-wartość. Zobacz obiekt wideo. |
duration | Opcjonalna wskazówka w sekundach. Kodowanie ją nadpisuje. |
fps | Opcjonalna wskazówka. Kodowanie ją nadpisuje. |
orientation | landscape albo portrait. Kodowanie ją nadpisuje. |
useMultipart | Zwraca identyfikatory multipart upload zamiast signedUrl. |
Ciało JSON nie ma pola mimeType. Typ MIME pliku wyślij jako nagłówek Content-Type przy przesyłaniu na podpisany URL w następnym kroku.
Utworzenie obiektu wideo
CURL
curl -X PUT https://app.ignitevideo.cloud/api/videos/upload \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title": "Your video title", "visibility": "private" | "public"}'Jeśli wideo zawiera mówioną treść i chcesz, aby automatyczna transkrypcja AI uruchomiła się zaraz po kodowaniu wideo,
możesz przy żądaniu PUT tworzącym nowe wideo przekazać dwa dodatkowe parametry:
{
...,
"language": string, // "de-DE" | "..." locale of the spoken language
"autoTranscribe": true
}Odpowiedź
signedUrl wygasa po 1 godzinie. Dla przesyłania wieloczęściowego ustaw useMultipart na true. Odpowiedź zawiera wtedy multipartUpload zamiast signedUrl. Zobacz multipart upload.
{
"videoId": "[VIDEO_ID]",
"title": "Your video title",
"signedUrl": "[SIGNED_URL]"
}Przesłanie pliku wideo
Prześlij plik wideo jako żądanie PUT na podpisany adres URL z poprzedniego kroku.
Musisz przekazać typ MIME pliku w nagłówku Content-Type. Typ MIME możesz odczytać z lokalnego pliku wideo przez element file input.
Dla dużych plików (powyżej 100 MB) zalecamy multipart upload, który jest bardziej niezawodny i obsługuje pliki do 60 GB. Możesz też użyć biblioteki Uppy dla prostszej implementacji z automatycznym dzieleniem na fragmenty i śledzeniem postępu.
CURL
curl -X PUT [SIGNED_URL] \
-H "Content-Type: [MIME_TYPE]" \
--data-binary "@[PATH_TO_VIDEO_FILE]"Proces kodowania
Po wgraniu pliku wideo rozpoczyna się kodowanie. Może to chwilę potrwać — zależy to od rozmiaru wideo i złożoności kodowania.
Status kodowania sprawdzisz przez GET /api/videos/[VIDEO_ID], zgodnie z sekcją pobierz wideo. Interwał odpytywania co kilka sekund zwykle wystarczy. Podczas kodowania status to PROGRESSING, a statusProgress to procent od 0 do 100.
Przykładowe pola podczas kodowania:
{
"id": "[VIDEO_ID]",
"status": "PROGRESSING",
"statusProgress": 36,
"errorCode": null,
"errorMessage": null
}Gdy kodowanie się powiedzie, status przechodzi na COMPLETE, statusProgress wynosi 100, a źródła odtwarzania są dostępne w src.
Gdy kodowanie się nie powiedzie, status przechodzi na ERROR. Do obsługi programowej użyj errorCode, a errorMessage traktuj jako czytelny zapasowy opis. Zobacz Status kodowania po pełny cykl życia, wartości statusu i kody błędów.
Możesz też subskrybować webhooki video.updated zamiast odpytywać API. Aktualizacje postępu mogą często wysyłać się podczas kodowania. Zobacz Webhooks.