Przejdź do głównej treści
Wraz z rosnącym zastosowaniem AI, różne programy AI stały się coraz bardziej powszechne. AI stopniowo przenika do wszystkich aspektów życia i pracy ludzi. Branże związane z AI również się rozszerzają, od początkowego pisania, przez edukację medyczną, aż po obecne wideo. Luma to profesjonalna platforma do generowania wysokiej jakości wideo, gdzie użytkownicy muszą jedynie przesłać materiały, aby automatycznie wygenerować wysokiej jakości wideo w różnych stylach i efektach. Ten generator wideo AI został opracowany przez zespół członków z renomowanych firm technologicznych, a jego celem jest umożliwienie każdemu łatwego tworzenia doskonałych wideo bez skomplikowanych narzędzi do edycji. Jednak Luma oficjalnie nie oferuje API, AceDataCloud dostarcza zestaw API Luma, symulując integrację z oficjalnym Suno, co umożliwia szybkie i wygodne generowanie pożądanych wideo.

Aplikacja i użycie

Aby korzystać z Luma Videos API, najpierw można przejść na stronę Luma Videos Generation API i kliknąć przycisk „Acquire”, aby uzyskać potrzebne poświadczenia: Jeśli nie jesteś zalogowany lub zarejestrowany, automatycznie zostaniesz przekierowany na stronę logowania, aby zarejestrować się i zalogować, a po zalogowaniu lub rejestracji automatycznie wrócisz na bieżącą stronę. Podczas pierwszej aplikacji przyznawana jest darmowa pula, która pozwala na bezpłatne korzystanie z tego API.

Podstawowe użycie

Aby wygenerować wideo, można wprowadzić dowolny tekst, na przykład, jeśli chcę wygenerować wideo o astronautach przemieszczających się między przestrzenią a wulkanem, mogę wpisać Astronauts shuttle from space to volcano, jak pokazano na obrazku:

Wygenerowany kod wygląda następująco:

Główne parametry żądania:
  • prompt: hasło do generowania wideo.
  • aspect_ratio: proporcje wideo, domyślnie 16:9.
  • end_image_url: opcjonalne, określa ostatnią klatkę.
  • enhancement: opcjonalne, przełącznik poprawy ostrości.
  • loop: czy generować wideo w pętli, domyślnie false.
  • timeout: opcjonalne, liczba sekund na czas oczekiwania.
  • callback_url: adres zwrotny asynchroniczny.
Można kliknąć przycisk „Try”, aby bezpośrednio przetestować API, poczekać 1-2 minuty, a wyniki będą następujące:
{
  "success": true,
  "task_id": "e4018a99-1522-4f24-9330-62c2a9b50b59",
  "video_id": "155838f8-7f1e-44d8-b387-192f3b4b509d",
  "prompt": "Astronauts shuttle from space to volcano",
  "video_url": "https://storage.cdn-luma.com/dream_machine/af94e7ca-da35-4b5f-a636-2d7254184d0d/watermarked_video0585de3737db946e5a0ac895384ecd180.mp4",
  "video_height": 752,
  "video_width": 1360,
  "state": "completed",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/e4018a99-1522-4f24-9330-62c2a9b50b59.jpg",
  "thumbnail_width": 1360,
  "thumbnail_height": 752
}
Można zauważyć, że otrzymaliśmy informacje o tym wideo, w tym ID wideo, link do wideo, miniaturę itp. Opis pól jest następujący:
  • success: czy generowanie się powiodło, jeśli tak, to true, w przeciwnym razie false
  • task_id: unikalne ID zadania generowania wideo
  • video_id: unikalne ID wideo wygenerowanego w tym zadaniu
  • prompt: słowo kluczowe zadania generowania wideo
  • video_url: link do wynikowego wideo wygenerowanego w tym zadaniu
  • video_height: wysokość wygenerowanego obrazu miniatury wideo
  • video_width: szerokość wygenerowanego obrazu miniatury wideo
  • state: stan zadania generowania wideo, jeśli zadanie jest zakończone, to completed.
  • thumbnail_url: link do wygenerowanego obrazu miniatury wideo
  • thumbnail_width: szerokość wygenerowanego obrazu miniatury wideo
  • thumbnail_height: wysokość wygenerowanego obrazu miniatury wideo

Generowanie niestandardowych klatek początkowych i końcowych

Jeśli chcesz wygenerować wideo za pomocą niestandardowych klatek początkowych i końcowych, możesz wprowadzić linki do obrazów klatek początkowych i końcowych: W tym przypadku pole start_image_url może przyjąć następujący obraz jako klatkę początkową wideo: Klatka początkowa Następnie, aby dostosować generowanie wideo na podstawie klatek początkowych i końcowych oraz słów kluczowych, można określić następujące treści:
  • action: działanie zadania generowania wideo, zazwyczaj zwykłe generowanie generate i rozszerzone generowanie extend, domyślnie generate.
  • start_image_url: określa klatkę początkową generowanego wideo.
  • end_image_url: określa klatkę końcową generowanego wideo.
  • prompt: treść słów kluczowych do generowania wideo.
Przykład wypełnienia wygląda następująco:

Po wypełnieniu automatycznie wygenerowano kod, który wygląda następująco:

Odpowiedni kod:
import requests

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

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

payload = {
    "start_image_url": "https://cdn.acedata.cloud/r9vsv9.png",
    "action": "generate",
    "prompt": "Astronauts shuttle from space to volcano"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Otrzymany wynik wygląda następująco:
{
  "success": true,
  "task_id": "12a18694-fd4b-47e7-9c50-34f30862cff6",
  "video_id": "0105c090-03a5-425a-8026-523341cd575b",
  "prompt": "Astronauts shuttle from space to volcano",
  "video_url": "https://platform.cdn.acedata.cloud/luma/12a18694-fd4b-47e7-9c50-34f30862cff6.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "completed",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/12a18694-fd4b-47e7-9c50-34f30862cff6.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
Ostateczny wynik jest podobny do powyższego, wygenerowana klatka początkowa wideo zawiera przesłany obraz, oczywiście można również jednocześnie przesłać linki do obrazów klatek początkowych i końcowych, aby wygenerować wideo, wystarczy dodać dodatkowy obraz klatki końcowej do powyższego. Informacje o obrazie klatki końcowej są następujące: Klatka końcowa Przykład wypełnienia wygląda następująco:

Na koniec uzyskujemy następujący wynik:
{
  "success": true,
  "task_id": "d1cb723a-e554-4775-94a4-bb6ae8c7ea67",
  "video_id": "6bebd0d2-f793-472e-9326-38528a9273bb",
  "prompt": "Astronauci przelatują z kosmosu do wulkanu",
  "video_url": "https://platform.cdn.acedata.cloud/luma/d1cb723a-e554-4775-94a4-bb6ae8c7ea67.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "completed",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/d1cb723a-e554-4775-94a4-bb6ae8c7ea67.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
Wynik jest podobny do powyższego, wygenerowane wideo zawiera zarówno obrazek z pierwszej, jak i ostatniej klatki, co kończy proces dostosowywania pierwszej i ostatniej klatki do generowania wideo.

Funkcje rozszerzenia wideo

Jeśli chcesz kontynuować generowanie wideo, możesz ustawić parametr action na extend i wprowadzić ID wideo lub link do wideo, ID wideo i link do wideo można uzyskać na podstawie podstawowego użycia, jak pokazano na poniższym obrazku:

W tym momencie można zobaczyć, że ID wideo to:
"video_id": "0105c090-03a5-425a-8026-523341cd575b",
"video_url": "https://platform.cdn.acedata.cloud/luma/12a18694-fd4b-47e7-9c50-34f30862cff6.mp4"
Uwaga, tutaj video_id i video_url w wideo to ID i link do wygenerowanego wideo, jeśli nie wiesz, jak wygenerować wideo, możesz odwołać się do podstawowego użycia opisanego powyżej.
Aby kontynuować generowanie wideo, musisz przesłać link do wideo lub ID wideo, poniżej pokazano, jak użyć ID wideo do rozszerzenia, następnie musimy wypełnić słowa kluczowe, aby dostosować generowanie wideo, co pozwoli na określenie następujących treści:
  • action: w tym przypadku działanie rozszerzające wideo, powinno być extend.
  • prompt: słowa kluczowe, które mają być rozszerzone w wideo.
  • video_url: link do wideo, które ma być rozszerzone.
  • video_id: unikalne ID wideo, które ma być rozszerzone.
  • end_image_url: link do obrazka końcowej klatki, opcjonalny parametr.
Przykład wypełnienia wygląda następująco:

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

Odpowiedni kod Python:
import requests

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

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

payload = {
    "action": "extend",
    "video_id": "0105c090-03a5-425a-8026-523341cd575b",
    "prompt": "Astronauci przelatują z kosmosu do wulkanu"
}

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,
  "task_id": "c6e529d1-a06d-4c12-91b2-c855135131c3",
  "video_id": "36908c49-c2bb-4a11-bd5a-b8512b004818",
  "prompt": "Astronauci przelatują z kosmosu do wulkanu",
  "video_url": "https://platform.cdn.acedata.cloud/luma/c6e529d1-a06d-4c12-91b2-c855135131c3.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "completed",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/c6e529d1-a06d-4c12-91b2-c855135131c3.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
Można zauważyć, że to wideo zostało rozszerzone na podstawie wideo, które miało być rozszerzone, a treść wyniku jest zgodna z powyższym, co realizuje funkcję kontynuacji generowania piosenki. Oczywiście możemy również określić link do wideo, aby przeprowadzić rozszerzenie, wypełniając następujące informacje:

Po uruchomieniu otrzymano następujący wynik:
{
  "success": true,
  "task_id": "1dcb5902-a7be-4b77-ba5d-dd8ec82b26ca",
  "video_id": "f0187dc2-339f-4a08-a435-c3a3341f620a",
  "prompt": "Astronauci przelatują z kosmosu do wulkanu",
  "video_url": "https://platform.cdn.acedata.cloud/luma/1dcb5902-a7be-4b77-ba5d-dd8ec82b26ca.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "completed",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/1dcb5902-a7be-4b77-ba5d-dd8ec82b26ca.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
Na podstawie wyniku można zauważyć, że na podstawie linku do wideo również można zrealizować funkcję rozszerzenia wideo. Na koniec możemy również określić obrazek końcowej klatki w rozszerzonym wideo, poniżej znajdują się informacje o obrazku końcowej klatki: Klatka końcowa Następnie na podstawie powyższego dodajemy informacje o obrazku końcowej klatki, szczegóły są następujące:

Po kliknięciu uruchomienia otrzymano następujące informacje:
{
  "success": true,
  "task_id": "b816b2b4-c345-4673-9e19-83e91f91b643",
  "video_id": "c5400053-63e6-4206-8082-31cf9dd1e7ed",
  "prompt": "Astronauci przelatują z kosmosu do wulkanu",
  "video_url": "https://platform.cdn.acedata.cloud/luma/b816b2b4-c345-4673-9e19-83e91f91b643.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "completed",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/b816b2b4-c345-4673-9e19-83e91f91b643.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
Można zauważyć, że na podstawie rozszerzonego wideo można również określić obrazek końcowej klatki do rozszerzenia.

Asynchroniczne wywołania zwrotne

Ponieważ czas generowania wideo przez Luma 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 wywołań zwrotnych. 整体流程是:Klient inicjuje żądanie, dodatkowo określając pole callback_url. Po wysłaniu żądania API, API natychmiast zwraca wynik, zawierający informacje o polu task_id, które reprezentuje aktualne ID zadania. Po zakończeniu zadania, wynik generowania muzyki zostanie wysłany do określonego przez klienta callback_url w formie POST JSON, w którym również znajduje się pole task_id, dzięki czemu wyniki zadania można powiązać za pomocą ID. Poniżej przyjrzymy się, jak to działa na przykładzie. Po pierwsze, Webhook to usługa, która może odbierać żądania HTTP, a deweloperzy powinni zastąpić ją URL swojego serwera HTTP. W tym celu, 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, a przykładowy URL to https://webhook.site/0c87ca0e-cd74-4577-8d68-f2b80fbf8a13. Następnie możemy ustawić pole callback_url na powyższy URL Webhook, a także wypełnić prompt, jak pokazano na obrazku:

Klikając uruchom, można zauważyć, że natychmiast otrzymujemy wynik, jak poniżej:
{
  "task_id": "732f8282-7cf8-401c-95f2-42c33aa079a6"
}
Po chwili możemy zaobserwować wynik generowania piosenki na https://webhook.site/0c87ca0e-cd74-4577-8d68-f2b80fbf8a13, jak pokazano na obrazku: Treść jest następująca:
{
    "success": true,
    "task_id": "732f8282-7cf8-401c-95f2-42c33aa079a6",
    "video_id": "4d8013c3-5de0-41aa-966e-0b1a51d1c633",
    "prompt": "Astronauts shuttle from space to volcano",
    "video_url": "https://platform.cdn.acedata.cloud/luma/732f8282-7cf8-401c-95f2-42c33aa079a6.mp4",
    "video_height": 752,
    "video_width": 1360,
    "state": "completed",
    "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/732f8282-7cf8-401c-95f2-42c33aa079a6.jpg",
    "thumbnail_width": 1360,
    "thumbnail_height": 752
}
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ć zadania za pomocą tego pola.