体验 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)