見出し画像

Luma AI 「Dream Machine API」の使い方 | Flux APIを使って画像から動画を一気通貫で生成する方法

9月17日、動画生成AI を開発するLuma AIから待望の「Dream Machine API」が公開されました。

本記事では、そのAPIの使い方、さらに、発展編としてFluxという画像生成AIのAPIと連携して、画像生成からその画像をもとに動画生成をする text to image to videoを一気通貫で行う方法を紹介します。

例えば、以下のプロンプトを用いて画像の生成からその画像をもとにした動画の作成まで、全て自動的に行うことができます。

「A majestic tiger prowling through a snowy landscape, seen from a low-angle perspective, with clear paw prints left behind in the snow(虎が雪の中を低い視点から歩き回る)」

動画:



概要

Luma AIのDream Machine APIは、直感的なテキスト指示で高品質な動画生成を可能にする「Dream Machine」モデルを提供します。

このAPIの主な特徴は以下の通りです:

  1. テキストから動画生成:自然言語による指示で動画を生成できます。

  2. 画像から動画生成:静止画を基に、動画を生成できます。

  3. キーフレーム制御:開始フレームと終了フレームを指定することができます。

  4. 動画の延長:生成された動画を継続して延長し、より長いストーリーを作成できます。

  5. ループ生成:シームレスなループ動画を作成できます。

  6. カメラコントロール:テキスト指示で簡単にカメラアングルを調整できます。

  7. アスペクト比の変更:様々なプラットフォームに適したコンテンツを生成できます。

APIの利用には、事前にクレジットの購入が必要です。料金は生成されたピクセル数に基づき、100万ピクセルあたり0.0032ドルです。

例えば、1280×720pの5秒間の動画(24fps)で約0.35ドルとなります。

APIキーは以下のURLから取得できます:

https://lumalabs.ai/dream-machine/api/keys

クレジット購入や請求情報の確認は以下のURLから行えます:

https://lumalabs.ai/dream-machine/api/billing/overview


使い方

Dream Machine APIを使用するには、まずPythonライブラリをインストールする必要があります。以下のコマンドでインストールできます:

pip install lumaai


APIを使用するための基本的な手順は以下の通りです:

① APIクライアントの初期化:

環境変数LUMAAI_API_KEYにAPIキーを設定する(推奨)、または直接クライアントに渡します。

環境変数を使用する場合:

a. ターミナルで以下のコマンドを実行します(LinuxまたはmacOS):

export LUMAAI_API_KEY=your_api_key_here        

Windowsの場合は以下のコマンドを使用します:

set LUMAAI_API_KEY=your_api_key_here

b. Pythonスクリプトで以下のように初期化します:

from lumaai import LumaAI

client = LumaAI()

直接APIキーを渡す場合:

from lumaai import LumaAI

client = LumaAI(auth_token="YOUR_API_KEY")

Dream Machine API キーは以下のリンクから取得できます。

https://lumalabs.ai/dream-machine/api/keys


② 動画生成:

generations.create()メソッドを使用して、テキストプロンプトから動画を生成します。

generation = client.generations.create(
    prompt="Low-angle shot of a teddy bear in sunglasses playing electric guitar and dancing",
    aspect_ratio="16:9",
    loop=True
)


③ 生成状態の確認:

生成プロセスは非同期で行われるため、完了を待つ必要があります。

import time

while True:
    generation = client.generations.get(generation.id)
    if generation.state == "completed":
        video_url = generation.assets.video
        break
    time.sleep(10)  # 10秒ごとに確認


④ 動画のダウンロード:

生成された動画はvideo_urlからダウンロードできます。

import requests

response = requests.get(video_url)
with open('generated_video.mp4', 'wb') as file:
    file.write(response.content)


全てのコードをまとめたものがこちらです:

import os
import time
import requests
from lumaai import LumaAI

# APIキーの設定
os.environ["LUMAAI_API_KEY"] = "YOUR_API_KEY"

# クライアントの初期化
client = LumaAI()

# 動画生成
generation = client.generations.create(
    prompt="Low-angle shot of a teddy bear in sunglasses playing electric guitar and dancing",
    aspect_ratio="16:9",
    loop=True
)

print(f"Generation started. ID: {generation.id}")

# 生成完了を待つ
while True:
    generation = client.generations.get(generation.id)
    print(f"Current status: {generation.state}")
    if generation.state == "completed":
        video_url = generation.assets.video
        break
    elif generation.state in ["failed", "error"]:
        print("Generation failed.")
        exit(1)
    time.sleep(10)  # 10秒ごとに確認

print("Generation completed.")

# 動画のダウンロード
print("Downloading video...")
response = requests.get(video_url)
with open('generated_video.mp4', 'wb') as file:
    file.write(response.content)

print("Video downloaded as 'generated_video.mp4'")

実行する前に、YOUR_API_KEYを実際のAPIキーに置き換えてください。

また、環境変数を使用する場合は、スクリプト内のos.environ["LUMAAI_API_KEY"] = "YOUR_API_KEY" の行を削除し、代わりにターミナルで環境変数を設定してください。

実行結果:

「Low-angle shot of a teddy bear in sunglasses playing electric guitar and dancing」のプロンプトで生成された動画がこちら:


動画の長さ延長

Dream Machine APIを使用して、既存の動画を延長することができます。これは、生成された動画をさらに発展させたい場合に便利です。

extended_generation = client.generations.create(
    prompt="A teddy bear in sunglasses playing electric guitar and dancing",
    keyframes={
        "frame0": {
            "type": "generation",
            "id": "existing_generation_id"
        }
    }
)

`existing_generation_id`の部分をterminalに出力される既存のgeneration IDに置き換えてください。


画像から動画生成

静止画像を基に動画を生成することもできます。これは、既存の画像に動きを加えたい場合に有用です。

image_to_video_generation = client.generations.create(
    prompt="Low-angle shot of a majestic tiger prowling through a snowy landscape, leaving paw prints on the white blanket",
    keyframes={
        "frame0": {
            "type": "image",
            "url": "https://example.com/tiger_image.jpg"
        }
    }
)

ここでは、"https://example.com/tiger_image.jpg"は実際の画像URLに置き換える必要があります。


キーフレームの指定

開始フレームと終了フレームを指定して、より制御された動画生成が可能です。

keyframe_generation = client.generations.create(
    prompt="A day in the life of a blooming flower",
    keyframes={
        "frame0": {
            "type": "image",
            "url": "https://example.com/flower_bud.jpg"
        },
        "frame1": {
            "type": "image",
            "url": "https://example.com/bloomed_flower.jpg"
        }
    }
)


Flux APIを使って画像生成しさらに一気通貫で動画生成する方法

ここからは記事の冒頭で説明したようなFluxという画像生成をした後に、その画像をもとに動画生成をする方法をご紹介します。

この方法では、Flux APIを使用して画像を生成し、その画像を基にDream Machine APIを利用して動画を生成します。

概要

以下の手順を自動化します:

  1. Flux API(devモデル)を使用して画像を生成

  2. 生成された画像を基にDream Machine APIで動画を生成

  3. 生成された動画を自動的にローカルにダウンロード

Flux APIとDream Machine API連携のセットアップ手順

以下に、プロジェクトのセットアップから実行までの詳細な手順を説明します。

ここから先は

7,805字 / 1画像
この記事のみ ¥ 500

この記事が参加している募集