PopNowDokumentacja API
Poradniki
Treść główna

Poradnik: zamiana obrazów w wideo

Ożyw zdjęcie, wybierz pierwszą i ostatnią klatkę, użyj obrazów referencyjnych, przedłuż klip i trzymaj koszty w ryzach.

Wideo powstaje minutami, nie sekundami, więc integracja wideo opiera się na zadaniach i webhookach, a nie na jednym czekającym zapytaniu. Ten poradnik omawia typowe zadania na prawdziwych ID modeli.

Ożyw jeden obraz

curl -X POST "https://api.popnow.ai/api/v1/jobs/createTask" \
  -H "Authorization: Bearer $POPNOW_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "model": "alibaba/wan-3.0/image-to-video",
    "input": {
      "image_url": "https://media.popnow.ai/movie/lighthouse.webp",
      "prompt": "Waves roll in slowly, clouds drift, the camera pushes gently toward the lighthouse",
      "resolution": "480p",
      "duration_seconds": 5
    },
    "callBackUrl": "https://your-app.example.com/hooks/popnow"
  }'

Od razu dostajesz 202 z taskId. Kilka minut później webhook dostarczy gotowe zadanie albo odczytasz je przez recordInfo. Wideo jest w output.assets[0], razem z durationSeconds, width i height.

Ile to kosztuje

Większość modeli wideo nalicza opłatę za sekundę wyniku, a stawka rośnie z rozdzielczością. Dla alibaba/wan-3.0/image-to-video to 6,75 kredytu za sekundę w 480p, 13,5 w 720p i 27 w 1080p — więc powyższe zapytanie blokuje 34 kredyty (5 × 6,75, zaokrąglone w górę) i tyle też kosztuje przy sukcesie.

  • Dopracowując prompty, zacznij od najniższej rozdzielczości i krótkiego czasu trwania, a podnieś je przy finalnym renderze.
  • Zanim pokażesz cenę użytkownikowi, zapytaj jobs/quote o dokładną kwotę.
  • Nieudane albo wygasłe wideo nic nie kosztuje.

Wybierz pierwszą i ostatnią klatkę

Wiele modeli obraz→wideo przyjmuje także last_image_url. Klip zaczyna się od image_url i kończy dokładnie na last_image_url — tak robi się przemianę albo płynną pętlę (ten sam obraz w obu polach).

Wideo z referencji: spójna postać lub produkt

Modele reference-to-video budują nową scenę wokół jednego lub kilku obrazów referencyjnych (a niektóre także wokół wideo lub audio referencyjnego), zamiast ożywiać podaną pierwszą klatkę:

{
  "model": "minimax/h3/reference-to-video",
  "input": {
    "prompt": "The same lighthouse at night, its beam sweeping over a calm sea while the camera circles slowly",
    "reference_image_urls": ["https://media.popnow.ai/movie/lighthouse.webp"],
    "duration_seconds": 6
  }
}

Sposób odwoływania się do materiałów referencyjnych w prompcie zależy od modelu; wyjaśniają to opisy pól na jego stronie referencyjnej.

Wydłuż klip

Modele video-extend kontynuują istniejący klip od jego ostatniej klatki. Wyślij klip jako video_url i opisz, co dzieje się dalej:

{
  "model": "minimax/h3/video-extend",
  "input": {
    "video_url": "https://media.popnow.ai/showcase/moon-picnic-loop.mp4",
    "prompt": "The camera keeps drifting right as the picnic blanket ripples in the breeze"
  }
}

Modele przedłużające, które łączą klipy, zwracają dwa pliki: najpierw połączone wideo (role: "video"), potem sam nowy fragment (role: "segment").

Dźwięk

Modele z generate_audio dodają do klipu ścieżkę dźwiękową; w niektórych modelach wyłączenie jej obniża cenę. Aby dodać dźwięk do gotowego wideo, użyj popnow/foley-v1/video-to-audio, który zwraca to samo wideo z wygenerowanym dźwiękiem.

Prompty, które działają w wideo

Opisuj ruch, a nie tylko scenę: co się porusza, jak szybko i co robi kamera. „Kamera powoli się zbliża, a osoba odwraca się w stronę światła” daje modelowi zadanie; „piękna latarnia morska” — nie. Wygląd rzeczy pokazuje już obraz, więc słowa przeznacz na to, co się zmienia.

Wzorzec na produkcję

  1. Prześlij albo zapisz obraz źródłowy i zachowaj jego URI popnow://.
  2. Pobierz wycenę, pokaż cenę, a potem wywołaj createTask z Idempotency-Key utworzonym z twojego ID zlecenia i z callBackUrl.
  3. W webhooku zweryfikuj podpis, najpierw potwierdź odbiór, a dopiero potem pobierz wideo do własnego magazynu.
  4. Raz dziennie wylistuj ostatnie zadania przez GET /api/v1/jobs i odczytaj te, których webhook nigdy nie dotarł.

Resztę znajdziesz w liście kontrolnej przed wdrożeniem.

Na tej stronie