
文字生成圖像
根據文字提示詞建立 AI 圖像
使用 Google Gemini Omni 1.2 Flash API 讓靜態圖片動起來。描述運動方式,並可提供結束圖片,引導影片的最後一格。支援 3–15 秒長度,加入結束影格時最長 10 秒,解析度最高可選 4K。
Gemini Omni 1.2 Flash Image-to-Video API 可根據起始圖片與動作描述生成短片。 在 Best Image AI 上使用時,也可以提供結尾圖片,引導影片過渡到預期的最後一幕。 你可以將產品照片、美術作品或分鏡圖轉成動態影像,並選擇橫式或直式影片輸出。
讓靜態圖片動起來: 以提供的圖片為基礎產生動態影像, 並以原圖的構圖作為短片的開場畫面。
首尾影格轉場: 若已確定場景結束時的畫面,可提供起始與結尾圖片, 引導影片呈現兩者之間的過渡。
用文字指引動作: 為圖片搭配提示詞,描述畫面中的動作, 並說明場景應如何發展。
輸入: 提供起始圖片,並用提示詞說明預期的動作。也可視需要提供結尾圖片。
輸出設定: 選擇橫式或直式構圖、解析度及片長。提供結尾圖片後, 可生成的最長片長會縮短,目前的限制請參閱 API 文件。
輸出: 圖片轉影片工作完成後,即可取得生成的影片。
計費: 依所選解析度及請求的輸出秒數計費, 提供結尾圖片無須另外付費。
讓產品照片動起來: 以靜態產品照片作為開場畫面,製作宣傳短片的概念樣片。
分鏡轉場: 提供開頭與結尾的原畫,探索兩個預設分鏡之間的動態過渡。
社群素材改編: 將現有的行銷活動圖片或編輯插畫轉製成影片。
動作設計審閱: 將已定稿的美術作品搭配不同的動作描述, 在進入後續製作前探索場景的呈現方式。
注意 撰寫提示詞時,除了描述圖片內容,也應說明畫面之間如何變化。 結尾圖片會引導影片的最終畫面,也會縮短可生成的最長片長。
與文字轉影片比較: 圖片轉影片需要一張起始圖片。若想單憑文字描述生成場景, 無須輸入圖片,可選擇文字轉影片。
與參考素材生成影片比較: 圖片轉影片須指定起始圖片,也可指定結尾圖片。 參考素材生成影片則接受圖片與影片素材,作為產生新片段的參考。
與影片編輯比較: 圖片轉影片讓靜態圖片動起來,並依所選片長與畫面方向輸出。 影片編輯從既有素材開始,輸出的時間安排與長寬比取決於來源影片。
在瀏覽器中探索多種 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)