メインコンテンツへスキップ

Seedanceで画像から動画を作る方法:3モードの選び方と画像の条件

Seedanceで画像を動画にするときは、目的に合わせて3モードから1つ選びます。API用の画像は各辺300〜6000px・縦横比0.4〜2.5で、比率が違えば中央で切られます。

LaoZhang AI Team公開23 分で読めます
目次
Seedanceで画像から動画を作る3つのモード:first_frame、first_frameとlast_frame、reference_image

Seedanceで手元の写真やイラストを動画にするには、入口とモードを先に決めます。アプリで済ませるなら、CapCut系のDreaminaで画像をアップロードし、どう動かしたいかを文章で書いて生成するだけです。APIで作るなら、1枚の画像から動き出す「最初のフレーム指定」(role: "first_frame")、終わりの絵まで決める「最初と最後のフレーム指定」(first_frameとlast_frame)、商品やキャラクターの見た目だけを参考にさせる「参照画像」(reference_image)の3つから1つを選びます。この3つは1回のリクエストの中で混ぜられません。

APIに送る前に、画像が各辺300〜6000px、縦横比0.4〜2.5、1枚30MB未満に収まっているかを確かめてください。指定したratioが画像の比率と違うと画像は中央で切り取られ、4:3のスマホ写真を16:9で出すと高さの25%が消えます。Seedance 2.5で最初のフレームを使う場合はratioに"adaptive"しか指定できず、durationを省くと既定値の-1でモデルが4〜30秒の長さを自分で選ぶので、"duration": 5のように秒数を明記します。

まず数本試すだけなら、無料試用クレジットのあるDreaminaから始められます。決まった比率と秒数で何本も作る場合や、自分のサービスに組み込む場合はAPIを使います。以下の条件と数値は、2026年11月2日時点の火山方舟(Volcengine Ark)の動画生成APIドキュメントに基づきます。BytePlus ModelArkやlaozhang.aiの中継も同じタスク形式です。

注記:laozhang.ai は当ブログ運営チームの自社サービスです。その料金は中立的な比較ではなく、自社の提示価格です。

3つのモードの選び方:最初のフレーム・最初と最後・参照画像

迷ったら、画像を「動画の1コマ目そのもの」として使いたいかどうかで決めます。1コマ目にしたいなら最初のフレーム指定、終わりの1コマも決めたいなら最初と最後のフレーム指定です。構図は自由でよく、写っている商品や人物の見た目をそろえたいだけなら参照画像を選びます。

モード向いている目的画像の枚数とrole対応モデルratioの扱い
最初のフレーム指定商品写真やイラストをそのまま動かし始める1枚、first_frame(省略可)2.5、2.0系、1.0 pro、1.0 pro fast2.5はadaptiveのみ。2.0系は指定も可
最初と最後のフレーム指定開始と終了の絵が決まっている転換や変身2枚、first_frameとlast_frame(必須)2.5、2.0系、1.0 pro同上。比率が違えば最後のフレームが切られる
参照画像見た目をそろえた新しいカットを作る2.5は1〜30枚、2.0系は1〜9枚、すべてreference_image2.5、2.0系指定もadaptiveも可

参照画像モードでも、プロンプトで「画像1を最初のフレームにする」と書けば似た効果は出せます。ただし火山方舟のドキュメントは、最初と最後の絵を指定した画像と厳密に一致させたい場合は最初と最後のフレーム指定を優先するよう案内しています。参照画像モードには参照動画(2.5は最大10本、2.0系は最大3本)と参照音声も加えられますが、2.0系では音声だけを渡すことはできません。

2.0系には標準のdoubao-seedance-2-0-260128のほか、-fast-260128と-mini-260615があり、2.5はdoubao-seedance-2-5-260628です。1.0系は最初と最後のフレーム指定が1.0 proに限られ、参照画像は使えないため、画像から動画を作るなら2.5か2.0系を選ぶのが無難です。

Dreaminaで画像から動画にする3ステップ

アプリで作るなら、DreaminaのSeedance画像から動画ページでアップロードから保存まで終わります。2026年11月2日時点の公式ツールページに書かれている手順は次の3つです。

  1. Dreaminaの「Seedance image to video」ページを開き、新しいプロジェクトを始めます。
  2. 画像をアップロードし、どう動かしたいか、どんな雰囲気にしたいかを書きます。カメラの動き、人物や物の動作、スタイルといった短い指示で構いません。
  3. 生成してプレビューし、必要なら指示を調整してからダウンロードします。

同じページのFAQには、Seedance 2.0は無料試用クレジットがあり、画像から動画を無料で作れると書かれています。プロンプトや参照で動きのスタイルやカメラワークを指示できるとも説明されています。一方で、1本あたりのクレジット消費量、受け付ける画像の上限、最初と最後のフレームを指定する画面については公式ページに記載がありません。以下で説明する画像の条件やトリミングの仕組みはAPIの仕様で、Dreaminaの画面がそのまま同じとは限りません。日本から使える公式の入口はSeedance 2.0の使い方:日本の公式ルートとオンライン利用確認で確認できます。

使える画像か確かめる:300〜6000px・縦横比0.4〜2.5・30MB未満

APIで画像を渡すとき、次の条件を1つでも外れるとリクエストは通りません。2026年11月2日時点の火山方舟ドキュメントの値で、Seedance 2.5と2.0系に共通です。

  • 形式はJPEG、PNG、WebP、BMP、TIFF、GIFのいずれか。HEIC/HEIFはSeedance 2.0系以降で使えます。
  • 幅と高さはどちらも300〜6000px。
  • 縦横比(幅÷高さ)は0.4〜2.5。横長なら5:2、縦長なら2:5より極端な画像は使えません。
  • 1枚あたり30MB未満で、リクエスト全体は64MB以下。大きなファイルはBase64ではなく公開URLで渡します。
  • Base64で渡すときはdata:image/png;base64,...の形で、形式名を小文字にします。アップロード済みの素材はasset://<ASSET_ID>でも指定できます。
  • 実在人物の顔が写った写真は、Seedance 2.5と2.0系にそのままでは渡せません。対処はSeedance 2.5/2.0「input image may contain a real person」の対処を参照してください。

2026年11月2日に、上の条件と料金表をそのまま組み込んだローカルのチェック用スクリプト(モデルは呼び出さず、公開ルールと照合するだけ)で、人物を含まない合成画像9枚を15通りの設定で確かめました。アイコンを想定した256×256pxは短い辺が300px未満で不可、8000×2000pxのパノラマは長い辺が6000pxを超え、縦横比も4.00で不可、3000×1000pxのバナーは縦横比3.00で不可でした。6000×4000pxのBMPは68.7MBで30MBを超え、Base64にすると約91.6MBになるので64MBの上限も超えます。スマホ写真やスクリーンショット、正方形の商品写真は条件内でした。

自分の画像を同じように確かめるなら、Pillowを入れたPythonで次の関数を使えます。条件は上のリストと同じで、ratioを指定すると何%切れるかも表示します。HEICはPillowだけでは開けないため、pillow-heifを追加するかJPEGに変換してから確かめてください。

python
from pathlib import Path
from PIL import Image

FORMATS = {"jpeg", "png", "webp", "bmp", "tiff", "gif"}

def seedance_check(path, ratio="adaptive"):
    p = Path(path)
    with Image.open(p) as im:
        w, h = im.size
        fmt = {"mpo": "jpeg"}.get(im.format.lower(), im.format.lower())  # MPOはJPEGの一種
    notes = []
    if fmt not in FORMATS:
        notes.append(f"NG 形式{fmt}は不可")
    if min(w, h) < 300 or max(w, h) > 6000:
        notes.append(f"NG {w}x{h}px:各辺300〜6000pxの範囲外")
    if not 0.4 <= w / h <= 2.5:
        notes.append(f"NG 縦横比{w / h:.2f}:0.4〜2.5の範囲外")
    if p.stat().st_size >= 30 * 1024 * 1024:
        notes.append("NG 30MB以上:縮小するか圧縮する")
    if ratio != "adaptive":
        a, b = map(int, ratio.split(":"))
        img_r, out_r = w / h, a / b
        keep = min(img_r, out_r) / max(img_r, out_r)
        if keep < 0.99:
            side = "幅" if img_r > out_r else "高さ"
            notes.append(f"注意 {ratio}だと{side}の{1 - keep:.0%}が中央で切れる")
    return notes or ["OK"]

print(seedance_check("photo.jpg", ratio="16:9"))

画像が切れる理由:ratioが違うと中央でトリミングされる

画像の縦横比とratioが違うと、火山方舟は画像を中央基準で切り取ってから動画にします。切られるのは比率の差の分だけで、どちらの辺が切れるかは画像が出力より横長か縦長かで決まります。端に写った文字やロゴを残したいなら、送る前に自分で出力と同じ比率に切っておくか、ratioを"adaptive"にします。

2026年11月2日の同じチェックでは、4032×3024pxのスマホ写真(4:3)をSeedance 2.0で"ratio": "16:9"にすると、高さの75%しか残らず上下が合わせて25%切れる計算でした。1179×2556pxのスマホのスクリーンショットを9:16にした場合は、画像のほうが細長いので高さの18%が切れます。最初と最後のフレームの比率が違うときは最初のフレームが優先され、2048×2048pxの商品写真と1920×1080pxの完成カットを組み合わせると、最後のフレームが1:1に切られます。

4:3の写真を16:9にすると高さの25%、スクリーンショットを9:16にすると高さの18%が中央基準で切れ、比率の違う最後のフレームは1:1に切られる

モデルによってratioの自由度も違います。最初のフレーム指定と最初と最後のフレーム指定では、Seedance 2.5は出力を最初のフレームの比率に合わせるため"adaptive"しか受け付けず、"16:9"のように指定すると条件違反になります。2.0系は16:9、4:3、1:1、3:4、9:16、21:9から指定するか、"adaptive"で最初のフレームに近い比率を選ばせるかを選べます。参照画像モードはどちらのモデルでも指定でき、"adaptive"ならプロンプトから比率が決まります。

出力の大きさはresolutionと比率の組み合わせで決まります。2.5は480p・720p・1080p(既定は720p)、2.0は4Kまで選べ、2.0 fastと2.0 miniは480pと720pだけです。2.5の1080pと2.0の4Kは10bitのH.265/HEVCで出力されるため、再生できないプレーヤーもあります。

ratio720pの出力1080pの出力
16:91280×7201920×1080
4:31112×8341664×1248
1:1960×9601440×1440
3:4834×11121248×1664
9:16720×12801080×1920
21:91470×6302206×946

2.5で"adaptive"にしたとき、表にない比率の画像がちょうど何pxで出力されるかはドキュメントに載っていません。

APIのリクエスト例:モード別のcontentとroleの書き方

どのモードも、content配列にテキスト1つと画像を並べ、画像ごとにroleを付けるだけです。違うのは画像の枚数とroleの値で、エンドポイント、認証、ratioやdurationなどのパラメーターは共通です。下の例はlaozhang.aiの中継ドキュメントにある書式に合わせており、火山方舟に直接送る場合はhttps://ark.cn-beijing.volces.com/api/v3/contents/generations/tasksに同じ本文を送ります。BytePlus ModelArkを含む提供元ごとのモデルIDはSeedance 2.5 API実装ガイド:提供元別モデルID、Python、Node.jsで確認できます。

注記:laozhang.ai は当ブログ運営チームの自社サービスです。その料金は中立的な比較ではなく、自社の提示価格です。

最初のフレーム指定:手元の画像1枚をBase64で送る

手元のファイルをそのまま送るなら、Base64のデータURLにしてimage_url.urlに入れます。プロンプトは日本語で構いません。Seedance 2.5と2.0系はどちらも日本語のプロンプトに対応しています。

python
import base64
import os

import requests

API = "https://api.laozhang.ai/seedance/api/v3/contents/generations/tasks"
KEY = os.environ["LAOZHANG_API_KEY"]  # SeeDance2グループで作ったキー

with open("photo.jpg", "rb") as f:
    data_url = "data:image/jpeg;base64," + base64.b64encode(f.read()).decode()

payload = {
    "model": "doubao-seedance-2-5-260628",
    "content": [
        {"type": "text", "text": "カップから湯気がゆっくり立ちのぼり、カメラが少しだけ寄る。人物は登場しない。"},
        {"type": "image_url", "image_url": {"url": data_url}, "role": "first_frame"},
    ],
    "ratio": "adaptive",      # 2.5の最初のフレーム指定はadaptiveのみ
    "duration": 5,            # 省略すると-1になり、4〜30秒をモデルが選ぶ
    "resolution": "720p",
    "generate_audio": False,  # 既定はtrue(音声付き)
    "return_last_frame": True,
}

r = requests.post(API, json=payload, headers={"Authorization": f"Bearer {KEY}"}, timeout=60)
print(r.status_code, r.json())  # 受け付けられると {"id": "cgt-..."} が返る

生成は非同期です。返ってきたidでGET https://api.laozhang.ai/seedance/api/v3/contents/generations/tasks/{id}を定期的に呼び、statusがqueuedやrunningのあいだは待ち、succeeded(laozhang.aiではcompletedもあり)になったらcontent.video_urlから動画を取得します。この結果URLは通常24時間ほどで期限が切れるので、すぐに保存してください。failedやexpiredで止まったらerrorの中身を確認します。待機やタイムアウトの切り分けはSeedance 2.5のエラー・待機列・タイムアウトを切り分ける方法、ポーリングまで含めた完全なコードは前出のAPI実装ガイドにあります。

最初と最後のフレーム指定:2枚に役割を付ける

上のコードのpayloadをこの本文に差し替えます。2枚ともroleが必須で、公開URLで渡す例です。2枚は同じ画像でも構いません。

json
{
  "model": "doubao-seedance-2-0-260128",
  "content": [
    {"type": "text", "text": "画像1の商品の寄りから、画像2の完成した一杯へなめらかに切り替わる。商品の形と色は変えず、人物は出さない。"},
    {"type": "image_url", "image_url": {"url": "https://example.com/start.jpg"}, "role": "first_frame"},
    {"type": "image_url", "image_url": {"url": "https://example.com/end.jpg"}, "role": "last_frame"}
  ],
  "ratio": "adaptive",
  "duration": 5,
  "resolution": "720p",
  "generate_audio": false
}

参照画像:見た目をそろえて新しいカットを作る

参照画像では、どの画像を何の参考にするかをプロンプトの中で「画像1」「画像2」と番号で書き分けます。番号はcontentに並べた画像の順番です。

json
{
  "model": "doubao-seedance-2-0-260128",
  "content": [
    {"type": "text", "text": "画像1のスニーカーを主役に、画像2のような夕方の屋上で、ゆっくり回り込むカメラで見せる。ロゴの形は画像1のまま。"},
    {"type": "image_url", "image_url": {"url": "https://example.com/sneaker.png"}, "role": "reference_image"},
    {"type": "image_url", "image_url": {"url": "https://example.com/rooftop.jpg"}, "role": "reference_image"}
  ],
  "ratio": "16:9",
  "duration": 5,
  "resolution": "720p",
  "generate_audio": false
}

ratioやdurationは本文のパラメーターで渡すのが確実です。プロンプトの末尾に--rt 16:9 --dur 5のように書く方法もありますが、こちらは検証が緩く、値が間違っていると無視されることがあります。

laozhang.aiで「no available channels」が返るとき

laozhang.aiでSeedanceを使うには、SeeDance2グループで作ったキーが必要です。2026年11月2日に、defaultグループのキーで最初のフレーム指定のリクエスト(100×100pxのPNGをBase64で添付)を送ったところ、HTTP 503でCurrent group default has no available channels for model doubao-seedance-2-0-260128 under billing mode [pay-per-request]が返り、doubao-seedance-2-5-260628でも同じでした。100pxは画像の下限300pxを下回っていますが、画像についてのエラーより先にこの応答が返ったので、グループの確認は画像のチェックより前に行われます。このメッセージが出たら画像やパラメーターを直す前に、キーをSeeDance2グループで作り直してください。URLに/seedanceの接頭辞がないと別の失敗になるので、パスも上の例と同じにします。

火山方舟で直接使う場合は、Seedance 2.5と2.0系を開通する条件として、残高200元超、200元以上の節約プラン、残量のあるSeedanceリソースパックのいずれかが必要です。

1本あたりの費用:2.5はdurationを指定しないと最長30秒分になる

費用は出力動画の長さと大きさで決まり、画像を何枚入れても増えません。火山方舟が示す目安は、token数 ≒(入力動画の秒数+出力の秒数)×出力の幅×高さ×フレームレート÷1024で、入力が画像だけなら出力側だけで計算できます。ただしSeedance 2.5はdurationの既定値が-1で、モデルが4〜30秒の中から長さを選び、ドキュメントも長さは課金に関わるので慎重に設定するよう注意しています。

2026年11月2日のチェックでは、1536×2048pxのイラスト(3:4)を2.5の720pでduration: -1にした場合、最長の30秒(721フレーム)なら834×1112×721÷1024で約652,989token、laozhang.aiの提示価格(100万tokenあたり$12.00)で約$7.84になりました。5秒(121フレーム)を明記すれば約109,586tokenで約$1.32です。2.0系は4〜15秒の範囲外を受け付けず、20秒を指定した設定はチェックの段階で止まりました。動きの確認だけなら解像度を下げるのも手で、2.5の480p・16:9・5秒は854×480×121÷1024で約48,438token、約$0.58です。

注記:laozhang.ai は当ブログ運営チームの自社サービスです。その料金は中立的な比較ではなく、自社の提示価格です。

Seedance 2.5の720pでdurationを省いて30秒になった場合は約$7.84、5秒を明記すると約$1.32、480p・5秒なら約$0.58になる費用比較

laozhang.aiのSeeDance2グループの提示価格(2026年10月14日からの価格、2026年11月2日時点)を、動画入力なし・16:9・5秒の1本で並べると次のとおりです。

モデル100万tokenあたり(480p・720p/1080p)720p・5秒1080p・5秒
Seedance 2.5$12.00/$13.20約$1.31約$3.23
Seedance 2.0$7.88/$8.74約$0.86約$2.14
Seedance 2.0 fast$6.34/非対応約$0.69非対応
Seedance 2.0 mini$3.94/非対応約$0.43非対応

もっと安く試すなら、2.0 miniの480pで1:1・5秒(640×640)は約48,400token、約$0.19です。laozhang.aiの利用ログには1つのタスクにつき作成時の事前引き落としと完了時の精算の2行が記録され、その合計がそのタスクの費用になります。BytePlusなど他の経路の秒単価はSeedance 2.5 API料金:経路別の1秒単価と無料で使えるかで比べられます。

前の動画の続きを作る:return_last_frameで最後のフレームを引き継ぐ

5秒や10秒の動画をつないで長い1本にしたいときは、"return_last_frame": trueを付けて生成し、返ってきた最後のフレームを次のタスクのfirst_frameにします。最後のフレームは動画と同じ幅と高さのJPEGで、透かしは入りません。laozhang.aiではcontent.last_frame_urlから取得できます。火山方舟のドキュメントもこの方法を連続した動画の作り方として案内しています。

注記:laozhang.ai は当ブログ運営チームの自社サービスです。その料金は中立的な比較ではなく、自社の提示価格です。

前の動画の最後の1コマから次の動画が始まるので、つなぎ目の絵はそろいます。引き継がれるのは絵だけなので、動きやカメラワークは次のタスクのプロンプトで改めて指定します。なお、Seedance 2.5なら1本で最長30秒まで作れるので、30秒以内に収まるなら分けずにdurationを長く取るほうが手間は少なく済みます。

Seedanceの画像から動画でよくある質問

Seedanceの画像から動画は無料でできますか?

アプリならできます。2026年11月2日時点で、DreaminaのSeedance画像から動画ページはSeedance 2.0に無料試用クレジットがあると案内していますが、何本作れるかは書かれていません。APIは1本ごとにtoken課金で、無料枠の有無と経路ごとの単価はSeedance 2.5 API料金:経路別の1秒単価と無料で使えるかで比べられます。

画像をどう動かすか、プロンプトはどう書けばいいですか?

Seedance 2.5と2.0系は日本語のプロンプトに対応しているので、カメラの動き、被写体の動作、変えてはいけないものを日本語で具体的に書けば十分です。秒ごとの指定や参照素材の書き分けはSeedance 2 プロンプトの書き方:2.5の秒指定、参照素材、絵コンテと修正例に例があります。

画像から動画の生成が失敗する、いつまでも終わらないときは?

タスクがfailedやexpiredで止まった場合も、queuedのまま進まない場合も、まずタスクIDと状態をそのまま控えます。そのうえで、どこで止まっているかの切り分け方をSeedance 2.5のエラー・待機列・タイムアウトを切り分ける方法で確認してください。

さらに読む: AI 動画生成
Wan 2.7とSeedance 2.0の制作工程を比較する図
AI 動画生成

Wan 2.7とSeedance 2.0を比較:動画の作り方、参照素材、料金で選ぶ

Wan 2.7とSeedance 2.0は、どちらも動画生成・編集に対応します。2〜3秒の新規生成はWan、4KはSeedance標準版、720pで費用を抑えて候補を作るならSeedance Miniも選択肢です。使う操作と素材を決めてから、同じ条件で費用を比べましょう。

31 分
日本でSeedance 2.0を利用するためのDreamina、BytePlus API、中国向け公式ルートの確認図
AI 動画生成

Seedance 2.0の使い方:日本の公式ルートとオンライン利用確認

日本ではCapCutが2026年3月31日にDreamina上のSeedance 2.0展開を公式発表しました。ただし、ページが見えることと自分のアカウントで生成・書き出しできることは別です。公式Web、API、中国向けルートを分けて確認します。

8 分