Skip to Content

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ż:

PoleUwagi
descriptionMaksimum 2000 znaków.
visibilitypublic wymaga videos.publish. W przeciwnym razie wideo jest zapisywane jako private.
categoriesCo najwyżej 10 identyfikatorów. Nieznane identyfikatory są odrzucane. Klucz z zakresem bez podanych kategorii dostaje kategorie swojego zakresu, maksymalnie 10.
tagsCo najwyżej 20 identyfikatorów. Nieznane identyfikatory są odrzucane.
languageLocale języka mówionego, na przykład de-DE. Wymagane, gdy autoTranscribe ma wartość true.
autoTranscribeUruchom transkrypcję AI po kodowaniu.
customMetadataPłaski obiekt klucz-wartość. Zobacz obiekt wideo.
durationOpcjonalna wskazówka w sekundach. Kodowanie ją nadpisuje.
fpsOpcjonalna wskazówka. Kodowanie ją nadpisuje.
orientationlandscape albo portrait. Kodowanie ją nadpisuje.
useMultipartZwraca 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 -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 -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.