# 克隆项目
git clone https://github.com/TheSmallHanCat/sora2api.git
cd sora2api
# 启动服务
docker-compose up -d
# 查看日志
docker-compose logs -f
# 使用 WARP 代理启动
docker-compose -f docker-compose.warp.yml up -d
# 查看日志
docker-compose -f docker-compose.warp.yml logs -f
# 克隆项目
git clone https://github.com/TheSmallHanCat/sora2api.git
cd sora2api
# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activate
# 安装依赖
pip install -r requirements.txt
# 启动服务
python main.py
服务启动后,访问管理后台进行初始化配置:
adminadmin⚠️ 重要: 首次登录后请立即修改密码!
| 功能 | 模型 | 说明 |
|---|---|---|
| 文生图 | sora-image* | 使用 content 为字符串 |
| 图生图 | sora-image* | 使用 content 数组 + image_url |
| 文生视频 | sora-video* | 使用 content 为字符串 |
| 图生视频 | sora-video* | 使用 content 数组 + image_url |
| 创建角色 | sora-video* | 使用 content 数组 + video_url |
| 角色生成视频 | sora-video* | 使用 content 数组 + video_url + 文本 |
| Remix | sora-video* | 在 content 中包含 Remix ID |
http://localhost:8000/v1/chat/completionsAuthorization: Bearer YOUR_API_KEYhan1234(建议修改)图片模型
| 模型 | 说明 | 尺寸 |
|---|---|---|
sora-image | 文生图(默认) | 360×360 |
sora-image-landscape | 文生图(横屏) | 540×360 |
sora-image-portrait | 文生图(竖屏) | 360×540 |
视频模型
| 模型 | 时长 | 方向 | 说明 |
|---|---|---|---|
sora-video-10s | 10秒 | 横屏 | 文生视频/图生视频 |
sora-video-15s | 15秒 | 横屏 | 文生视频/图生视频 |
sora-video-landscape-10s | 10秒 | 横屏 | 文生视频/图生视频 |
sora-video-landscape-15s | 15秒 | 横屏 | 文生视频/图生视频 |
sora-video-portrait-10s | 10秒 | 竖屏 | 文生视频/图生视频 |
sora-video-portrait-15s | 15秒 | 竖屏 | 文生视频/图生视频 |
文生图
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Authorization: Bearer han1234" \
-H "Content-Type: application/json" \
-d '{
"model": "sora-image",
"messages": [
{
"role": "user",
"content": "一只可爱的小猫咪"
}
]
}'
图生图
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Authorization: Bearer han1234" \
-H "Content-Type: application/json" \
-d '{
"model": "sora-image",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "将这张图片变成油画风格"
},
{
"type": "image_url",
"image_url": {
"url": "data:image/png;base64,<base64_encoded_image_data>"
}
}
]
}
],
"stream": true
}'
文生视频
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Authorization: Bearer han1234" \
-H "Content-Type: application/json" \
-d '{
"model": "sora-video-landscape-10s",
"messages": [
{
"role": "user",
"content": "一只小猫在草地上奔跑"
}
],
"stream": true
}'
图生视频
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Authorization: Bearer han1234" \
-H "Content-Type: application/json" \
-d '{
"model": "sora-video-landscape-10s",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "这只猫在跳舞"
},
{
"type": "image_url",
"image_url": {
"url": "data:image/png;base64,<base64_encoded_image_data>"
}
}
]
}
],
"stream": true
}'
视频Remix(基于已有视频继续创作)
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Authorization: Bearer han1234" \
-H "Content-Type: application/json" \
-d '{
"model": "sora-video-landscape-10s",
"messages": [
{
"role": "user",
"content": "https://sora.chatgpt.com/p/s_68e3a06dcd888191b150971da152c1f5改成水墨画风格"
}
]
}'
Sora2API 支持视频角色生成功能。
场景 1: 仅创建角色(不生成视频)
上传视频提取角色信息,获取角色名称和头像。
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Authorization: Bearer han1234" \
-H "Content-Type: application/json" \
-d '{
"model": "sora-video-landscape-10s",
"messages": [
{
"role": "user",
"content": [
{
"type": "video_url",
"video_url": {
"url": "data:video/mp4;base64,<base64_encoded_video_data>"
}
}
]
}
],
"stream": true
}'
场景 2: 创建角色并生成视频
上传视频创建角色,然后使用该角色生成新视频。
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Authorization: Bearer han1234" \
-H "Content-Type: application/json" \
-d '{
"model": "sora-video-landscape-10s",
"messages": [
{
"role": "user",
"content": [
{
"type": "video_url",
"video_url": {
"url": "data:video/mp4;base64,<base64_encoded_video_data>"
}
},
{
"type": "text",
"text": "角色做一个跳舞的动作"
}
]
}
],
"stream": true
}'
import requests
import base64
# 读取视频文件并编码为 Base64
with open("video.mp4", "rb") as f:
video_data = base64.b64encode(f.read()).decode("utf-8")
# 仅创建角色
response = requests.post(
"http://localhost:8000/v1/chat/completions",
headers={
"Authorization": "Bearer han1234",
"Content-Type": "application/json"
},
json={
"model": "sora-video-landscape-10s",
"messages": [
{
"role": "user",
"content": [
{
"type": "video_url",
"video_url": {
"url": f"data:video/mp4;base64,{video_data}"
}
}
]
}
],
"stream": True
},
stream=True
)
# 处理流式响应
for line in response.iter_lines():
if line:
print(line.decode("utf-8"))
本项目采用 MIT 许可证。详见 LICENSE 文件。
感谢所有贡献者和使用者的支持!
⭐ 如果这个项目对你有帮助,请给个 Star!