
文生图
根据文本提示词创建 AI 图像
使用 Google Gemini Omni 1.2 Flash API 修改视频。描述场景或光线的变化,同时保留原片的时长与画幅。输入片段需为 3–10 秒,可选择 360p 至 4K 分辨率,并以文字指令调整画面。
在 Best Image AI 上,Gemini Omni 1.2 Flash 视频编辑 API 可根据已有视频和文字指令生成修改后的版本。 你可以用文字描述想对现有场景做哪些调整,尝试不同的效果。 开发者可以将这种基于指令的视频编辑方式集成到创作应用和审核流程中。
按提示词修改视频: 用文字说明需要如何修改现有素材, 即可生成该场景的修订版本。
调整场景外观: 用自然语言描述需要更换的背景、 想要的光照效果或天气变化。
保留源视频格式: 修改画面内容时,保留源视频的时长和宽高比。
输入: 提供一段源视频短片和说明修改要求的提示词。短片时长应在支持范围内,并符合服务提供方的最短时长要求。 当前限制请查阅 API 文档。
编辑指令: 说明希望做哪些修改,并指出需要保留的细节, 以明确本次编辑的范围。
输出设置: 选择输出分辨率。输出时长和宽高比由源视频决定, 无法单独设置。
输出: 处理任务完成后,获取编辑后的视频。
计费: 费用取决于所选输出分辨率和源视频时长。计费时长四舍五入到整秒, 最低按 3 秒计费。
短片修改流程: 在内部视频审核工具中加入通过提示词提交修改要求的功能。
尝试不同的活动背景: 为已有的营销视频场景指定另一种环境, 再对照创意简报审核结果。
探索产品场景的光照效果: 指定如何调整产品短片的光照, 并将生成结果与源视频对比。
评估创意简报: 先验证拟议的修改能否传达预期想法, 再规划后续编辑工作。
注意 请按成片所需的时长和画面比例准备源视频。源视频时长的取整只用于计费, 不会决定或延长实际输出时长。请检查编辑后的视频, 确认结果符合修改要求。
与文生视频相比: 视频编辑需要已有的视频素材。文生视频根据文字描述生成新的场景短片, 调用方可以选择短片时长和画面方向。
与图生视频相比: 图生视频让起始图像动起来,也可以额外指定一张结束图像。 视频编辑则使用一段完整的源视频作为修改对象。
与参考素材生成视频相比: 参考素材生成视频使用图像或短视频作为参考,引导新视频的生成。 视频编辑直接修改所提供的短片, 输出时长和画面比例均由该短片决定。
在浏览器中探索多种 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-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.2-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.2-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)