体验 Google Gemini Omni 1.1 Flash API,让必需的首帧自然过渡至可选的结束帧,精准控制运动效果与视觉连贯性,打造过渡流畅、画面稳定且更具表现力的视频内容。
Google Gemini Omni 1.1 Flash Image-to-Video API 帮助开发者将提供的图像转化为定向控制的 AI 视频 片段。以静态图像作为视觉起点,添加自然语言运动说明,生成按照预定镜头调度和运动方式 发展的场景。还可使用可选的结束图像引导序列的最终画面, 让 Gemini 视频 API 成为 Best Image AI 上可控动画工作流的实用选择。
图像驱动的视频动画: 从上传的图像开始,围绕其主体、构图、 光线和整体视觉方向构建运动效果。
可选的结束帧引导: 当视频片段需要更明确的视觉终点或 两种状态之间的引导式过渡时,可添加结束图像。
自然语言运动控制: 在输入图像的同时描述镜头运动、主体行为、环境变化和 节奏。
连贯的场景发展: 以输入图像作为视觉锚点,同时引导生成与 起始帧保持连贯而非相互割裂的序列。
灵活的视频呈现: 为营销活动素材、社交视频、产品 故事和移动端优先体验生成横屏或竖屏输出。
质量与时长选择: 调整输出质量和简短的视频时长,以满足原型设计、审核、发布 或制作需求。
输入: 一张起始图像,以及描述所需运动、镜头行为 和场景发展的自然语言运动提示词。
可选引导: 可提供结束图像,为动画设定可控的最终视觉状态。
输出: 通过 Gemini Omni 1.1 Flash 图生视频 API 工作流交付生成的视频片段。
格式控制: 选择适合目标 渠道的横向或纵向构图、输出质量和简短时长。
功能: 图像动画、从起始到结束的视觉引导、提示词驱动的镜头运动、场景发展以及 创意迭代。
产品图像动画: 为产品摄影和营销活动 主视觉添加运动、镜头动感和鲜活的环境效果。
社交内容再利用: 将静态帖子、编辑图像和发布素材转化为简短的竖屏或 宽屏视频概念。
故事板开发: 使用概念画面和主视觉测试视觉创意如何运动,然后再投入 更大规模的制作。
品牌创意变体: 根据已获批准的视觉方向创建以运动为主导的变体,同时为工作流保留明确的 起始图像。
电商和广告视频: 使用现有视觉素材制作简洁的产品瞬间、生活方式片段和宣传 素材。
注意 请使用清晰的高质量源图像,并准确描述所需运动。明确指定 主体运动、镜头方向和环境行为的提示词通常能够提供更实用的动画指导。
Gemini Omni 1.1 Flash 与 Google Veo Image-to-Video 对比: Google Veo 提供成熟的图生视频工作流。 Gemini Omni 1.1 Flash 在同一模型系列中提供互联的图像动画、文本生成、参考素材驱动视频和视频 编辑路径。
Gemini Omni 1.1 Flash 与 Runway Image-to-Video 对比: Runway 为生成动态效果提供丰富的创作者工具。Gemini Omni 1.1 Flash 面向希望在基于 API 的工作流中使用图像驱动动画和提示词指导的开发者。
Gemini Omni 1.1 Flash 与 Kling Image-to-Video 对比: Kling 是富有表现力的图像动画热门选项。Gemini Omni 1.1 Flash 支持从源图像和运动说明到输出的实用途径,并可选择使用结束帧 引导。
Gemini Omni 1.1 Flash 与 Pika Image-to-Video 对比: Pika 专注于简单易用的视觉实验。Gemini Omni 1.1 Flash 非常适合需要在可扩展集成中使用可控图像动画的产品团队。
Gemini Omni 1.1 Flash 与 Luma Dream Machine 对比: Luma Dream Machine 以快速视觉构思著称。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-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.1-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.1-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)