0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「Luma Dream Machine」公式の JavaScript SDK で動画生成(Text to Video)

Last updated at Posted at 2025-01-09

はじめに

この記事の内容

「Luma Dream Machine」の API を使った Text to Video を、公式の JavaScript SDK で試してみたという話です。

●Luma Dream Machine: New Freedoms of Imagination
 https://lumalabs.ai/dream-machine

2025-01-10_00-02-36.jpg

公式の JavaScript SDK

公式の JavaScript SDK は以下になるようです。

API利用

API利用のため、とりあえず最低金額の 5ドル分を課金しました(※ 要ログイン)。

●Luma Dream Machine | AI Video Generator API
 https://lumalabs.ai/dream-machine/api/billing/overview

2025-01-09_23-59-19.jpg

また、以下のページで APIキーを生成しました(※ 要ログイン)。

●Luma Dream Machine | AI Video Generator API
 https://lumalabs.ai/dream-machine/api/keys

公式の JavaScript SDK で試す

公式のドキュメントを参照しながら実際に試していきます。

事前準備

公式の JavaScript SDK を使うにあたり、まずはセットアップです。

●Video Generation
 https://docs.lumalabs.ai/docs/javascript-video-generation

パッケージのインストール

npmコマンドで、以下をインストールします。

●lumaai - npm
 https://www.npmjs.com/package/lumaai

●lumalabs/lumaai-node: Dream Machine SDK for JS/TS
 https://github.com/lumalabs/lumaai-node

npm install lumaai

自分で実装したもの

APIキーは環境変数「LUMAAI_API_KEY」として設定しておきます(※ 以下は Mac での例)。

export LUMAAI_API_KEY='【自分のAPIキー】'

サンプルコード

上のほうにあるサンプルを見てみます。

const fetch = require('node-fetch');
const fs = require('fs');
const { LumaAI } = require('lumaai');

const client = new LumaAI({ authToken: process.env.LUMAAI_API_KEY });

async function generateVideo() {
    let generation = await client.generations.create({
        prompt: "A teddy bear in sunglasses playing electric guitar and dancing"
    });

    let completed = false;

    while (!completed) {
        generation = await client.generations.get(generation.id);

        if (generation.state === "completed") {
            completed = true;
        } else if (generation.state === "failed") {
            throw new Error(`Generation failed: ${generation.failure_reason}`);
        } else {
            console.log("Dreaming...");
            await new Promise(r => setTimeout(r, 3000)); // Wait for 3 seconds
        }
    }

    const videoUrl = generation.assets.video;

    const response = await fetch(videoUrl);
    const fileStream = fs.createWriteStream(`${generation.id}.mp4`);
    await new Promise((resolve, reject) => {
        response.body.pipe(fileStream);
        response.body.on('error', reject);
        fileStream.on('finish', resolve);
    });

    console.log(`File downloaded as ${generation.id}.mp4`);
}

generateVideo();

これで Text to Video を軽く試してみます。

出力結果

サンプルコードの以下のプロンプトは書きかえました。

        prompt: "A teddy bear in sunglasses playing electric guitar and dancing"

プロンプトを「炎と氷のドラゴンが対峙して争っているシーン」として、以下の結果を得られました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?