試用 Google Gemini Omni 1.1 Flash API,以自然語言指示編輯來源影片,在變更場景與角色時保留原有時間節奏,快速完成更連貫的影片內容,打造精彩影片作品。
Google Gemini Omni 1.1 Flash Video Edit API 將自然語言影片最佳化融入開發者友善的工作流程。 上傳現有影片、描述您想要的變更,並使用 Gemini 影片 API 建立修訂版本, 同時保留原始片段作為創意起點。此 API 已在 Best Image AI 上提供,可協助團隊探索具針對性的 視覺變更,而無需從頭重新製作剪輯。
提示詞引導的影片最佳化: 使用自然語言指令引導現有片段在視覺效果、動作、 氛圍或創意處理方面的變更。
感知來源素材的編輯工作流程: 從上傳的素材開始,使修訂以來源素材的時間節奏、主體 和視覺情境為基礎。
情境化變更指引: 描述需要調整和需要保留的元素,協助團隊將 編輯表達為創意意圖,而非手動時間軸操作。
電影級視覺調整: 透過單一 影片輸入探索新的燈光、氛圍、場景處理和鏡頭質感方向。
彈性的輸出品質: 選擇符合內部審核、快速反覆運算或最終 交付要求的輸出品質等級。
面向影片團隊的高效反覆運算: 為精簡的來源片段產生具針對性的替代方案,使此 API 適用於實驗和製作支援。
輸入: 一個現有影片片段,以及描述所需編輯效果的自然語言指令。
輸出: 透過 Gemini Omni 1.1 Flash 影片編輯 API 工作流程產生的修訂影片。
編輯方向: 說明預期的視覺變更,例如新環境、變化後的視覺色調、主體 動作或場景處理。
品質控制: 選擇適合工作流程審核或交付階段的輸出品質。
功能: 基於提示詞的影片編輯、感知來源素材的最佳化、場景處理變更、視覺風格重塑,以及 快速產生創意替代方案。
行銷活動在地化: 在保留底層製作 起點的同時,為現有行銷活動片段建立新的創意處理效果。
社群影片變體: 為面向不同 頻道或受眾的短影片製作不同的視覺效果、氛圍和場景方向。
創意後期製作支援: 在投入時間進行完整手動編輯或 重新拍攝之前,探索視覺調整效果。
產品影片更新: 為新的季節性、編輯性或 行銷活動方向更新現有產品素材的呈現方式。
自動化修訂工作流程: 將指令驅動的影片最佳化新增至內部創意工具、審核 系統和內容營運流程中。
注意 來源影片是編輯的基礎。請使用明確的指令,說明預期變更以及應保持一致的 視覺特徵,以獲得最可靠的結果。
Gemini Omni 1.1 Flash 與 Google Veo Video Editing 對比: Google Veo 支援先進的生成式影片工作流程。Gemini Omni 1.1 Flash 在同一模型系列中提供簡潔的自然語言編輯方式,並同時支援文字轉影片、圖片轉影片和 參考素材引導的生成。
Gemini Omni 1.1 Flash 與 Runway Video Editing 對比: Runway 提供廣泛的視覺編輯工具。Gemini Omni 1.1 Flash 強調 API 優先的工作流程,以來源片段和文字指令作為新編輯的基礎。
Gemini Omni 1.1 Flash 與 Adobe Firefly Video 對比: Adobe Firefly Video 與成熟的 創意軟體工作流程緊密相連。Gemini Omni 1.1 Flash 為開發者提供以程式設計方式描述並 產生具針對性的影片修訂版本的選擇。
Gemini Omni 1.1 Flash 與 Kling Video Editing 對比: Kling 提供用於風格化創作的生成式影片工具。Gemini Omni 1.1 Flash 適合需要透過直接 API 整合進行來源素材感知編輯的團隊。
Gemini Omni 1.1 Flash 與 Pika 對比: Pika 提供易於使用的創作和以特效為導向的實驗功能。Gemini Omni 1.1 Flash 面向指令驅動的影片最佳化,可將其整合到互聯的產品 工作流程中。
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-video-edit',
prompt: 'A small ball rolls into the scene and captures the attention of the cat',
video_url: 'https://example.com/source-video.mp4',
resolution: '1080p'
})
});
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-video-edit',
'prompt': 'A small ball rolls into the scene and captures the attention of the cat',
'video_url': 'https://example.com/source-video.mp4',
'resolution': '1080p'
}
)
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-video-edit",
"prompt": "A small ball rolls into the scene and captures the attention of the cat",
"video_url": "https://example.com/source-video.mp4",
"resolution": "1080p"
}'
# 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)