
テキストから画像
テキストプロンプトからAI画像を作成
Google Gemini Omni 1.2 Flash API で静止画に動きをつけられます。動きを記述し、必要に応じて終了画像を指定することで、動画の最終フレームを誘導できます。終了画像ありなら最大10秒。
Gemini Omni 1.2 Flash Image-to-Video API は、開始画像と動きを説明する文章から短い動画を生成します。 Best Image AI で利用でき、任意で終了画像を指定すると、シーンの最後の見え方を方向づけられます。 商品写真やイラスト、絵コンテのコマに動きを加えられ、横長と縦長のどちらでも出力できます。
静止画のアニメーション化: 入力画像の構図を動画の冒頭に生かし、 その画像から動きを生み出せます。
フレーム間の移行: シーンの終わりに目指す画が決まっている場合は、 開始画像と終了画像を指定して、その間の映像の展開を導けます。
文章による動きの指定: 画像とともにプロンプトを入力し、被写体の動作や シーンの展開を説明できます。
入力: 開始画像と、意図する動きを説明するプロンプトを指定します。終了画像は任意です。
出力設定: 横長または縦長の画面、解像度、動画の長さを指定します。終了画像を含めると、指定できる最大時間が短くなります。 現在の上限は API ドキュメントを参照してください。
出力: 画像から動画を生成するタスクが完了したら、生成された動画を取得します。
料金: 選択した解像度とリクエストで指定した出力時間に応じて、秒単位で課金されます。 終了画像を追加しても、別途料金はかかりません。
商品写真の動画化: 商品の静止画を開始フレームにして、短いプロモーション動画の案を作成できます。
絵コンテのコマ間の移行: 始まりと終わりの絵を指定し、予定したコマの間をどのような動きでつなぐか検討できます。
ソーシャルメディア用素材の展開: 既存のキャンペーン画像や記事用イラストから動画版を作成できます。
動きの演出案のレビュー: 承認済みのビジュアルに異なる動きの指示を組み合わせ、 次の制作工程に入る前にシーンの演出を検討できます。
注意 画像に写っているものに加えて、指定したフレームの間でどのように動くかを説明してください。 終了画像は最後の画面を方向づけると同時に、生成可能な動画の最大時間を短くします。
Text-to-Video との比較: Image-to-Video には開始画像が必要です。画像を入力せず、文章での説明から シーンを生成したい場合は Text-to-Video を選びます。
Reference-to-Video との比較: Image-to-Video では画像を開始フレームと任意の終了フレームに明示的に割り当てます。 Reference-to-Video は画像や動画を参照素材として受け取り、新しい動画を生成します。
Video Edit との比較: Image-to-Video は静止画から動きを作り、動画の長さと画面の向きを指定できます。 Video Edit は既存の映像を出発点とし、出力の時間構成とアスペクト比は元の映像に従います。
ブラウザで画像や動画をすばやく制作できる複数のAIクリエイティブツールを試し、成功したアイデアをBest Image AIの本番運用対応モデルAPIでスケールできます。Best Image AIはすべてのモデルに対応する統合APIレイヤーを提供し、ワークフローを簡単に利用・拡張できるようにします。
const response = await fetch('https://api.flaq.ai/api/v1/video/task', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({
model_name: 'gemini-omni-1.2-flash-image-to-video',
prompt: 'The girl walks toward the camera while the city lights shimmer behind her',
image_url: 'https://example.com/start-frame.jpg',
image_end_url: 'https://example.com/end-frame.jpg',
aspect_ratio: '9:16',
resolution: '1080p',
duration: 8
})
});
const { data } = await response.json();
const taskId = data.task_id;
// Step 2: Poll for results
const taskId = data.task_id;
const pollResult = async (taskId) => {
const res = await fetch(`https://api.flaq.ai/api/v1/video/${taskId}`, {
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
});
return res.json();
};
while (true) {
const pollResultData = await pollResult(taskId);
const status = pollResultData.data.task_status;
if (status === 'succeed') {
console.log(pollResultData.data.task_result.videos[].);
;
}
(status === ) {
.(pollResultData..);
;
}
( (resolve, ));
}
import requests
response = requests.post(
'https://api.flaq.ai/api/v1/video/task',
headers={
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
json={
'model_name': 'gemini-omni-1.2-flash-image-to-video',
'prompt': 'The girl walks toward the camera while the city lights shimmer behind her',
'image_url': 'https://example.com/start-frame.jpg',
'image_end_url': 'https://example.com/end-frame.jpg',
'aspect_ratio': '9:16',
'resolution': '1080p',
'duration': 8
}
)
result = response.json()
task_id = result['data']['task_id']
curl -X POST https://api.flaq.ai/api/v1/video/task \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model_name": "gemini-omni-1.2-flash-image-to-video",
"prompt": "The girl walks toward the camera while the city lights shimmer behind her",
"image_url": "https://example.com/start-frame.jpg",
"image_end_url": "https://example.com/end-frame.jpg",
"aspect_ratio": "9:16",
"resolution": "1080p",
"duration": 8
}'
# Step 2: Poll for results
# Replace {task_id} with the task_id returned from the submit response
curl -X GET "https://api.flaq.ai/api/v1/video/{task_id}" \
-H "Authorization: Bearer YOUR_API_KEY"
# Step 2: Poll for results
task_id = response.json()['data']['task_id']
poll_url = f"https://api.flaq.ai/api/v1/video/{task_id}"
while True:
poll_result = requests.get(poll_url, headers={'Authorization': 'Bearer YOUR_API_KEY'}).json()
status = poll_result['data']['task_status']
if status == 'succeed':
print(poll_result['data']['task_result']['videos'][0]['url'])
break
if status == 'failed':
print(poll_result['data']['task_status_msg'])
break
time.sleep(10)