Przejdź do głównej treści
Ten dokument przedstawi sposób integracji z Kling Videos Generation API, które umożliwia generowanie oficjalnych filmów Kling poprzez wprowadzenie niestandardowych parametrów.

Proces aplikacji

Aby skorzystać z API, należy najpierw przejść do strony Kling Videos Generation API i złożyć wniosek o odpowiednią usługę. Po wejściu na stronę, kliknij przycisk „Acquire”, jak pokazano na obrazku: Jeśli nie jesteś zalogowany lub zarejestrowany, automatycznie zostaniesz przekierowany na stronę logowania, aby zarejestrować się i zalogować. Po zalogowaniu lub rejestracji automatycznie wrócisz na bieżącą stronę. Podczas pierwszej aplikacji otrzymasz darmowy limit, który pozwala na bezpłatne korzystanie z tego API.

Podstawowe użycie

Najpierw zapoznaj się z podstawowym sposobem użycia, czyli wprowadzeniem słowa kluczowego prompt, działania action, linku do obrazu referencyjnego start_image_url oraz modelu model, aby uzyskać przetworzony wynik. Najpierw musisz przekazać pole action, którego wartość to text2video. Obejmuje ono trzy główne działania: generowanie wideo z tekstu (text2video), generowanie wideo z obrazu (image2video), rozszerzenie wideo (extend). Następnie musimy wprowadzić model model, który obecnie obejmuje głównie modele kling-v1, kling-v1-6, kling-v2-master, kling-v2-1-master, kling-v2-5-turbo, kling-video-o1, szczegóły są następujące:

Możemy zobaczyć, że ustawiliśmy nagłówki żądania, w tym:
  • accept: format odpowiedzi, który chcemy otrzymać, tutaj wpisujemy application/json, czyli format JSON.
  • authorization: klucz do wywołania API, który można wybrać z rozwijanej listy po złożeniu wniosku.
Dodatkowo ustawiono ciało żądania, które obejmuje:
  • model: model generujący wideo, głównie kling-v1, kling-v1-6, kling-v2-master, kling-v2-1-master, kling-v2-5-turbo, kling-video-o1.
  • mode: tryb generowania wideo, głównie standardowy tryb std i tryb superszybki pro.
  • action: działanie związane z generowaniem wideo, które obejmuje trzy główne działania: generowanie wideo z tekstu (text2video), generowanie wideo z obrazu (image2video), rozszerzenie wideo (extend).
  • start_image_url: link do obrazu referencyjnego, który musi być przesłany, gdy wybierzesz działanie generowania wideo z obrazu image2video.
  • end_image_url: opcjonalne, określa końcową klatkę w przypadku generowania wideo z obrazu.
  • aspect_ratio: proporcje wideo, opcjonalne, wspiera 16:9, 9:16, 1:1, domyślnie 16:9.
  • cfg_scale: intensywność związku, zakres [0,1], im większa wartość, tym bardziej zgodna z podanym słowem kluczowym.
  • camera_control: opcjonalne, parametry kontrolujące ruch kamery, wspiera predefiniowane typy/simple oraz konfiguracje horizontal, vertical, pan, tilt, roll, zoom.
  • negative_prompt: opcjonalne, słowa kluczowe, które nie powinny się pojawić, maksymalnie 200 znaków.
  • element_list: lista referencyjna dla głównych elementów, stosowana tylko w modelu kling-video-o1, szczegóły dotyczące użycia tego parametru można znaleźć w dokumentacji.
  • video_list: referencyjne wideo, uzyskiwane przez URL, stosowane tylko w modelu kling-video-o1, szczegóły dotyczące użycia tego parametru można znaleźć w dokumentacji.
  • prompt: słowo kluczowe.
  • callback_url: URL, na który mają być zwracane wyniki.
Po dokonaniu wyboru, można zauważyć, że po prawej stronie wygenerowano odpowiedni kod, jak pokazano na obrazku:

Kliknij przycisk „Try”, aby przeprowadzić test, jak pokazano na powyższym obrazku, a otrzymamy następujący wynik:
{
  "success": true,
  "video_id": "af9a1af0-9aa0-4638-81c1-d41d6143c508",
  "video_url": "https://cdn.klingai.com/bs2/upload-kling-api/7485378259/text2video/Cjil4mfBfs0AAAAAAKbMQQ-0_raw_video_1.mp4",
  "duration": "5.1",
  "state": "succeed",
  "task_id": "e3a575aa-a4bd-49c8-9b12-cde38d5462e0"
}
Wynik zwrotny zawiera wiele pól, które są opisane poniżej:
  • success, status zadania generowania wideo.
  • task_id, ID zadania generowania wideo.
  • video_id, ID wideo wygenerowanego w ramach zadania.
  • video_url, link do wygenerowanego wideo.
  • duration, długość wygenerowanego wideo.
  • state, status zadania generowania wideo.
Możemy zobaczyć, że otrzymaliśmy satysfakcjonujące informacje o wideo, wystarczy, że na podstawie adresu URL wideo w data uzyskamy wygenerowane wideo Kling. Dodatkowo, jeśli chcesz wygenerować odpowiedni kod integracyjny, możesz go bezpośrednio skopiować, na przykład kod CURL wygląda następująco:
curl -X POST 'https://api.acedata.cloud/kling/videos' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "action": "text2video",
  "model": "kling-v1",
  "prompt": "Biały ceramiczny kubek do kawy na błyszczącej marmurowej blacie z porannym światłem z okna. Kamera powoli obraca się o 360 stopni wokół kubka, zatrzymując się na chwilę przy uchwycie."
}'

Funkcja rozszerzenia wideo

Jeśli chcesz kontynuować generowanie już wygenerowanego wideo Kling, możesz ustawić parametr action na extend i wprowadzić ID wideo, które chcesz kontynuować. ID wideo można uzyskać na podstawie podstawowego użycia, jak pokazano na poniższym obrazku:

W tym momencie możesz zobaczyć, że ID wideo to:
"video_id": "030bb06d-98d4-4044-9042-0aa0822e8c8c"
Uwaga, tutaj video_id w wideo to ID wygenerowanego wideo. Jeśli nie wiesz, jak wygenerować wideo, możesz odwołać się do podstawowego użycia opisanego powyżej.
Następnie musimy wprowadzić kolejne słowo kluczowe, które chcemy rozszerzyć, aby dostosować generowanie wideo, co pozwoli na określenie następujących treści:
  • model:Model generujący wideo, głównie modele kling-v1, kling-v1-5 i kling-v1-6.
  • mode:Tryb generowania wideo, głównie standardowy tryb std i tryb superszybki pro.
  • duration:Czas trwania wideo w tej zadaniu generowania wideo, głównie 5s i 10s.
  • start_image_url:Gdy wybierzesz zachowanie generowania wideo z obrazu image2video, musisz przesłać link do referencyjnego obrazu pierwszej klatki.
  • prompt:Słowo kluczowe.
Przykład wypełnienia poniżej:

Po wypełnieniu automatycznie wygenerowano kod jak poniżej:

Odpowiedni kod Python:
import requests

url = "https://api.acedata.cloud/kling/videos"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "action": "extend",
    "model": "kling-v1",
    "video_id": "030bb06d-98d4-4044-9042-0aa0822e8c8c",
    "prompt": "Biały ceramiczny kubek do kawy na błyszczącej marmurowej powierzchni z porannym światłem z okna. Kamera powoli obraca się o 360 stopni wokół kubka, zatrzymując się na chwilę przy uchwycie.",
    "duration": 10
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Po kliknięciu uruchomienia, można zauważyć, że otrzymano wynik jak poniżej:
{
  "success": true,
  "video_id": "bbc3b105-ac72-4de2-8390-0cb37dc7d41e",
  "video_url": "https://cdn.klingai.com/bs2/upload-kling-api/7822108635/extendVideo/Cjil4mfBfs0AAAAAAKhr6A-0_raw_video_1.mp4",
  "duration": "9.6",
  "state": "succeed",
  "task_id": "3ece87e6-3ee3-4f5e-bd70-5ae5eca89a23"
}
Można zauważyć, że treść wyniku jest zgodna z powyższym, co realizuje funkcję rozszerzenia wideo.

Asynchroniczny callback

Ponieważ czas generowania przez API Kling Videos jest stosunkowo długi, wynosi około 1-2 minut, jeśli API nie odpowiada przez dłuższy czas, żądanie HTTP będzie utrzymywać połączenie, co prowadzi do dodatkowego zużycia zasobów systemowych, dlatego to API oferuje również wsparcie dla asynchronicznych callbacków. Cały proces polega na tym, że klient inicjuje żądanie, dodatkowo określając pole callback_url, po wysłaniu żądania API natychmiast zwraca wynik, zawierający pole task_id, które reprezentuje aktualne ID zadania. Po zakończeniu zadania, wynik generowania wideo zostanie wysłany do określonego przez klienta callback_url w formie POST JSON, w tym również zawierając pole task_id, dzięki czemu wyniki zadania można powiązać za pomocą ID. Poniżej przyjrzymy się, jak to dokładnie działa na przykładzie. Najpierw, callback Webhook to usługa, która może odbierać żądania HTTP, deweloperzy powinni zastąpić to URL swojego serwera HTTP. Dla wygody demonstracji użyjemy publicznej strony przykładowej Webhook https://webhook.site/, otwierając tę stronę można uzyskać URL Webhook, jak pokazano na obrazku: Skopiuj ten URL, aby użyć go jako Webhook, przykładowy URL to https://webhook.site/624b2c78-6dbd-4618-9d2b-b32eade6d8c3. Następnie możemy ustawić pole callback_url na powyższy URL Webhook, jednocześnie wypełniając odpowiednie parametry, szczegóły jak na obrazku:

Po kliknięciu uruchomienia, można zauważyć, że natychmiast otrzymano wynik jak poniżej:
{
  "task_id": "20068983-0cc9-4c6a-aeb6-9c6a3c668be0"
}
Po chwili możemy na https://webhook.site/624b2c78-6dbd-4618-9d2b-b32eade6d8c3 zaobserwować wynik generowania wideo, jak pokazano na obrazku: Treść jest następująca:
{
    "success": true,
    "video_id": "030bb06d-98d4-4044-9042-0aa0822e8c8c",
    "video_url": "https://cdn.klingai.com/bs2/upload-kling-api/7822108635/text2video/CjJzzGfBfqcAAAAAAKdVMQ-0_raw_video_1.mp4",
    "duration": "5.1",
    "state": "succeed",
    "task_id": "20068983-0cc9-4c6a-aeb6-9c6a3c668be0"
}
Można zauważyć, że w wyniku znajduje się pole task_id, a pozostałe pola są podobne do powyższych, dzięki czemu można powiązać zadanie za pomocą tego pola.

Obsługa błędów

Podczas wywoływania API, jeśli wystąpią błędy, API zwróci odpowiedni kod błędu i informacje. Na przykład:
  • 400 token_mismatched:Złe żądanie, prawdopodobnie z powodu brakujących lub nieprawidłowych parametrów.
  • 400 api_not_implemented:Złe żądanie, prawdopodobnie z powodu brakujących lub nieprawidłowych parametrów.
  • 401 invalid_token:Nieautoryzowany, nieprawidłowy lub brakujący token autoryzacyjny.
  • 429 too_many_requests:Zbyt wiele żądań, przekroczono limit szybkości.
  • 500 api_error:Błąd wewnętrzny serwera, coś poszło nie tak na serwerze.

Przykład odpowiedzi błędu

{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

Wnioski

Dzięki temu dokumentowi zrozumiałeś, jak korzystać z API Kling Videos Generation, aby generować wideo na podstawie wprowadzonych słów kluczowych oraz referencyjnego obrazu pierwszej klatki. Mamy nadzieję, że ten dokument pomoże Ci lepiej zintegrować i korzystać z tego API. W przypadku jakichkolwiek pytań, prosimy o kontakt z naszym zespołem wsparcia technicznego.