你还记得Sora2推出的Cameo和Remix功能吗?
Cameo(客串)是 Sora 2 推出的官方真人出镜功能,允许用户通过录制验证视频,将自己的面部、体型、声音特征提取并融合到 AI 生成的任意场景中,实现"真人演员+虚拟场景+配音"的混合视频生成。它允许你将多个角色(包括自己、朋友、宠物甚至原创形象)置入同一个AI生成的视频中。
Remix(重混)是Sora 2 的一项非常强大的视频二次创作能力,它允许你对已有的视频进行对象级和场景级的深度修改,而不仅仅是简单的剪辑或添加滤镜,通过提示词你可以修改视频并且加入自己的Cameo角色。
本文将详细介绍Sora 2 的Cameo 和Remix功能如何使用 ,以及企业、独立开发和普通用户如何通过GrsAi API调用Sora 2 Cameo和Remix。
Sora 2 Cameo和Remix 功能如何使用
- 创建Cameo 角色
- 录制视频:根据要求录制一段个人短视频,并按照屏幕指示读出屏幕中的数字,系统会从中学习你的外貌、动作甚至声线。
- 活体检测:Sora 2 采用多重活体检测技术防止冒充,所以需要几分钟审核时间。
- 权限配置:创建角色后,你可以精细设置其使用权限,例如仅自己使用、对所有朋友开放,或设置为需要你批准后才能使用。
- 使用Cameo角色
以“sora”app为例,点击底部“+”创建视频,选择cameo出镜秀中的角色,通过“@”标签来调用你已经创建或他人共享的角色,实现多角色同框,输入提示词(支持中文),等待生成。
- 提示词公式
[场景描述] + [主角(我/Cameo角色)动作] + [环境细节] + [风格要求]
案例:
古老巨龙盘踞的山巅,我是精灵法师举杖召唤魔法护盾,抵挡烈焰吐息,破碎巨石,魔法尘埃,云海夕阳,史诗奇幻,电影广角,戏剧灯光。
注意:
使用"我"或"主角"指代 Cameo 角色
详细描述动作和场景
避免描述面部细节(AI 会自动匹配你的特征)
可以指定服装、场景、氛围
- Remix二创视频
当你在 Sora App 的瀑布流中浏览视频时,可以直接对感兴趣的公开视频使用 Remix 功能,输入你的新想法来生成全新版本。
- 元素替换:一键更换视频中的主角,例如将街头漫步的角色换成您自己。
- 场景转换:无缝切换视频背景,如从东京街头变为赛博都市,AI会自动适配光影。
- 细节调整:修改道具与氛围,例如将手中的咖啡换成茶,或将雨天变为雪天。
- 情节续写:基于原视频生成续集,保持角色与画风一致,以延伸叙事(如通过API实现)。
- Sora2 应用场景
- 个人娱乐:将自已或朋友置入历史大片、科幻场景
- 内容创作:虚拟网红运营、品牌营销内容制作
- IP经济:数字肖像权租赁,为明星、经典IP提供新的变现渠道
- 广告营销:规模化生成个性化广告
Sora2 API调用实战
Sora2目前有严格的地区限制,并且采用邀请制,没有码且非美国,加拿大IP用户则无法使用。Openai目前还没有开通Sora 2 APi包括Cameo和Remix功能,那企业或独立开发者应该怎么调用正版的Sora2 Api?
GrsAi Sora2 Cameo多角色生成功能接入
GrsAi(https://grsai.com)是Ai大模型APi源头供应商,提供便宜稳定的Ai大模型APi接入服务,国内直连。Sora 2—0.08/条视频,同时支持Sora 2 Cameo多角色上传和Remix功能的调用。
Sora 2 API接入文档请到控制台查看:https://grsai.com/zh/dashboard/documents/sora-2
目前站内模型包含:Nano Banana-0.022/张,Sora-image(Gpt4o)-0.02/张,Veo3.1/Veo3.0-0.4/张,Gemini,Flux.......更多请查看GrsAi控制台(https://grsai.com/zh/dashboard/models)模型列表。
基础环境配置
1.API端点信息
// 海外用户使用
const HOST_OVERSEAS = "https://api.grsai.com";
// 国内用户使用
const HOST_DOMESTIC = "https://grsai.dakka.com.cn";
// 接口地址
const API_ENDPOINT = `${HOST_DOMESTIC}/v1/video/sora-video`;
2.请求头配置
const headers = {
"Content-Type": "application/json",
"Authorization": "Bearer apikey" // 替换为实际API密钥
};
Cameo APi多角色上传功能调用
1.characters参数完整说明
{
"characters": [
{
"url": "https://example.com/characterA.mp4",
"timestamps": "0,3"
},
{
"url": "https://example.com/characterB.mp4",
"timestamps": "1,4"
}
]
}
2.参数规范:
- url:角色视频的公开访问URL,支持MP4格式
- timestamps:视频截取范围,格式为"开始秒数,结束秒数"
- 时长限制:每个角色视频最多截取3秒
- 禁止内容:不可上传真人视频内容
3.角色引用语法
在prompt中使用@character+位置索引格式引用角色:
// 正确示例
const prompt = "在公园长椅上,@character1正在读书,@character2在旁边玩耍";
// 位置索引从1开始,对应characters数组中的顺序
// @character1 → characters[0]
// @character2 → characters[1]
如果要使用Sora2中公开的Cameo角色,则可以直接在提示词中@用户ID使用。
完整实战案例
案例:创建两个卡通角色在公园场景
步骤1:准备角色视频
确保视频文件可通过URL公开访问
步骤2:构造API请求
const requestBody = {
"model": "sora-2",
"prompt": "在阳光明媚的公园里,@character1在草地上快乐地跳舞,@character2在天空中盘旋飞翔,背景有鲜花和树木,风格为卡通动画",
"url": "https://example.com/park_background.png", // 场景参考图
"aspectRatio": "16:9",
"duration": 10,
"size": "large",
"characters": [
{
"url": "https://example.com/rabbit_dance.mp4",
"timestamps": "0,3"
},
{
"url": "https://example.com/bird_fly.mp4",
"timestamps": "0,3"
}
],
"webHook": "https://your-app.com/callback", // 回调地址
"shutProgress": false
};
步骤3:执行API调用
// 使用Fetch API调用
async function generateSoraVideo() {
try {
const response = await fetch('https://grsai.dakka.com.cn/v1/video/sora-video', {
method: 'POST',
headers: headers,
body: JSON.stringify(requestBody)
});
const data = await response.json();
console.log('任务ID:', data.data.id);
return data;
} catch (error) {
console.error('API调用失败:', error);
}
}
结果获取方式
方式1:WebHook回调(推荐)
// 你的回调接口需要处理的数据格式
const callbackData = {
"id": "f44bcf50-f2d0-4c26-a467-26f2014a771b",
"results": [
{
"url": "https://example.com/generated_video.mp4",
"removeWatermark": true,
"pid": "s_6916910fc8548191aa07e106e84b3bb8"
}
],
"progress": 100,
"status": "succeeded",
"failure_reason": "",
"error": ""
};
方式2:轮询获取结果
// 使用结果查询接口
async function getResult(taskId) {
const response = await fetch('https://grsai.dakka.com.cn/v1/draw/result', {
method: 'POST',
headers: headers,
body: JSON.stringify({ id: taskId })
});
return await response.json();
}
// 轮询示例
async function pollResult(taskId, interval = 5000) {
while (true) {
const result = await getResult(taskId);
if (result.data.status === 'succeeded') {
console.log('生成成功:', result.data.results[0].url);
break;
} else if (result.data.status === 'failed') {
console.error('生成失败:', result.data.failure_reason);
break;
}
console.log(`进度: ${result.data.progress}%`);
await new Promise(resolve => setTimeout(resolve, interval));
}
}
重要注意事项
1.视频规格限制
- 角色视频最长截取3秒
- 支持MP4格式,确保URL可公开访问
- 禁止上传真人视频内容
2.计费与配额
- 生成失败会返还积分
- 视频URL有效期为2小时
- 及时下载生成结果
3.错误处理
// 常见的状态码和错误信息
const errorMessages = {
"output_moderation": "输出内容违规",
"input_moderation": "输入内容违规",
"error": "其他系统错误"
};
Remix功能APi调用
二次创作功能
使用remixTargetId参数基于已有视频创作续集:
{
"remixTargetId": "s_6916910fc8548191aa07e106e84b3bb8",
"prompt": "同样的角色在夜晚的公园中,@character1和@character2在月光下继续他们的冒险"
}
多尺寸输出策略
// 快速预览使用small尺寸
const previewRequest = {
size: "small",
duration: 10
};
// 最终输出使用large尺寸
const finalRequest = {
size: "large",
duration: 15
};
通过GRSAI的Sora 2 API,开发者可以充分利用多角色上传功能,创建出丰富多样的个性化AI视频内容,为应用程序增添强大的视频生成能力。
更详细的Sora 2 Api文档请参考GrsAi控制台
