試用 Google Gemini Omni 1.1 Flash API,將提示詞轉換成動作連貫、取景靈活的影片,適合故事敘述與創意內容製作,輕鬆實現更生動的視覺構想,打造精彩影片作品。
Google Gemini Omni 1.1 Flash Text-to-Video API 為開發者提供從文字創意指示到 精緻 AI 影片片段的直接途徑。描述主體、動作、鏡頭運動、燈光和氛圍,再使用 Gemini 影片 API 將這些指示轉化為連貫的短篇場景。此 API 可透過 Best Image AI 使用,專為需要 靈活構思影片並可靠地以程式化方式交付內容,同時無須維護自有影片生成技術堆疊的團隊打造。
提示詞驅動的影片創作: 將詳細的自然語言描述轉化為具有明確主體、 環境、動作和視覺基調的影片場景。
透過文字進行電影級導演控制: 在定義場景的同一 提示詞中控制鏡頭構圖、鏡頭動感、燈光、氛圍和節奏。
感知動作的場景合成: 建立將主體動作、環境反應和畫面構圖 融為一體的影片片段,呈現更連貫的視覺效果。
靈活的交付格式: 生成橫向或直向影片,適用於電影級展示版位、社群內容和 行動裝置優先的行銷活動。
可調整的輸出品質: 選擇適合預期製作、審核或發佈 工作流程的輸出品質等級。
短篇敘事控制: 為產品瞬間、敘事節點、社群內容 和快速創意測試設定精簡的影片長度。
輸入: 使用自然語言提示詞描述場景、關鍵動作、視覺風格、燈光和所需的鏡頭 行為。
輸出: 透過 Gemini Omni 1.1 Flash API 工作流程傳回生成的影片片段。
格式控制: 選擇橫向或直向構圖,以及適合目標 管道的輸出品質。
影片片段控制: 設定精簡的影片長度,並透過提示詞細節引導動作、節奏和電影級 氛圍。
功能: 文字生成影片、場景構圖、主體動作、鏡頭感知提示詞,以及 可用於製作的創意反覆調整。
社群影片製作: 為短篇社群貼文、產品發佈時刻和 符合管道特色的創意內容製作直向與寬螢幕影片概念。
行銷活動構思: 在完整製作開始前,將行銷活動方案、藝術指導和敘事節點轉化為動態 視覺概念。
產品故事敘述: 為行銷工作流程生成精簡的產品場景、生活風格片段,以及以動作為主導的功能 敘事。
創意原型設計: 無須傳統拍攝即可探索構圖、燈光、鏡頭運動和氛圍的多種 方向。
自動化內容管線: 透過 API 將提示詞驅動的影片創作加入應用程式、發佈系統和大量 創意工作流程。
注意 請確保提示詞符合 Google 的安全準則。如果要求受到限制或未生成 預期結果,請修改場景描述後再試一次。
Gemini Omni 1.1 Flash 與 Google Veo 比較: 兩者都是 Google 的影片生成選項。如果團隊希望在同一 模型系列中同時使用文字生成影片、圖片驅動、參考素材驅動和影片編輯工作流程,Gemini Omni 1.1 Flash 是相當合適的 選擇。
Gemini Omni 1.1 Flash 與 OpenAI Sora 比較: Sora 廣泛用於文字驅動的創意影片探索。Gemini Omni 1.1 Flash 在 Best Image AI 上提供提示詞驅動的影片工作流程,並支援靈活的畫面比例和品質選擇,適合以 API 為基礎的 製作。
Gemini Omni 1.1 Flash 與 Runway 比較: Runway 提供豐富的創作者影片工具。Gemini Omni 1.1 Flash 專注於將文字場景指示整合至面向產品團隊和開發者的精簡、程式化生成 流程。
Gemini Omni 1.1 Flash 與 Kling AI 比較: Kling AI 以富有視覺表現力的生成影片聞名。Gemini Omni 1.1 Flash 為開發者提供提示詞驅動的場景創作、鏡頭感知指導和 API 交付的另一種選擇。
Gemini Omni 1.1 Flash 與 Pika 比較: Pika 專為容易上手的創意實驗而設計。Gemini Omni 1.1 Flash 適合需要將文字生成影片納入互聯 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.1-flash-text-to-video',
prompt: 'A cinematic tracking shot follows a sailboat crossing a glowing ocean at sunset',
aspect_ratio: '16:9',
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[0].url);
break;
}
if (status === 'failed') {
console.error(pollResultData.data.task_status_msg);
break;
}
await new Promise(resolve => setTimeout(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.1-flash-text-to-video',
'prompt': 'A cinematic tracking shot follows a sailboat crossing a glowing ocean at sunset',
'aspect_ratio': '16:9',
'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.1-flash-text-to-video",
"prompt": "A cinematic tracking shot follows a sailboat crossing a glowing ocean at sunset",
"aspect_ratio": "16:9",
"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)