Admin commited on
Commit
c0100d6
·
1 Parent(s): 22a3c56
Files changed (1) hide show
  1. README.md +7 -406
README.md CHANGED
@@ -1,409 +1,10 @@
1
- # Sora2API
2
-
3
- <div align="center">
4
-
5
- [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
6
- [![Python](https://img.shields.io/badge/python-3.8%2B-blue.svg)](https://www.python.org/)
7
- [![FastAPI](https://img.shields.io/badge/fastapi-0.119.0-green.svg)](https://fastapi.tiangolo.com/)
8
- [![Docker](https://img.shields.io/badge/docker-supported-blue.svg)](https://www.docker.com/)
9
-
10
- **一个功能完整的 OpenAI 兼容 API 服务,为 Sora 提供统一的接口**
11
-
12
- </div>
13
-
14
- ---
15
-
16
- ## 📋 目录
17
-
18
- - [功能特性](#功能特性)
19
- - [快速开始](#快速开始)
20
- - [使用指南](#使用指南)
21
- - [快速参考](#快速参考)
22
- - [管理后台](#管理后台)
23
- - [API 调用](#api-调用)
24
- - [视频角色功能](#视频角色功能)
25
- - [常见问题](#常见问题)
26
- - [许可证](#许可证)
27
-
28
  ---
29
-
30
- ## ✨ 功能特性
31
-
32
- ### 核心功能
33
- - 🎨 **文生图** - 根据文本描述生成图片
34
- - 🖼️ **图生图** - 基于上传的图片进行创意变换
35
- - 🎬 **文生视频** - 根据文本描述生成视频
36
- - 🎥 **图生视频** - 基于图片生成相关视频
37
- - 📊 **多尺寸支持** - 横屏、竖屏等多种规格
38
- - 🎭 **视频角色功能** - 创建角色,生成角色视频
39
- - 🎬 **Remix 功能** - 基于已有视频继续创作
40
-
41
- ### 高级特性
42
- - 🔐 **Token 管理** - 支持多 Token 管理和轮询负载均衡
43
- - 🌐 **代理支持** - 支持 HTTP 和 SOCKS5 代理
44
- - 📝 **详细日志** - 完整的请求/响应日志记录
45
- - 🔄 **异步处理** - 高效的异步任务处理
46
- - 💾 **数据持久化** - SQLite 数据库存储
47
- - 🎯 **OpenAI 兼容** - 完全兼容 OpenAI API 格式
48
- - 🛡️ **安全认证** - API Key 验证和权限管理
49
- - 📱 **Web 管理界面** - 直观的管理后台
50
-
51
- ---
52
-
53
- ## 🚀 快速开始
54
-
55
- ### 前置要求
56
-
57
- - Docker 和 Docker Compose(推荐)
58
- - 或 Python 3.8+
59
-
60
- ### 方式一:Docker 部署(推荐)
61
-
62
- #### 标准模式(不使用代理)
63
-
64
- ```bash
65
- # 克隆项目
66
- git clone https://github.com/TheSmallHanCat/sora2api.git
67
- cd sora2api
68
-
69
- # 启动服务
70
- docker-compose up -d
71
-
72
- # 查看日志
73
- docker-compose logs -f
74
- ```
75
-
76
- #### WARP 模式(使用代理)
77
-
78
- ```bash
79
- # 使用 WARP 代理启动
80
- docker-compose -f docker-compose.warp.yml up -d
81
-
82
- # 查看日志
83
- docker-compose -f docker-compose.warp.yml logs -f
84
- ```
85
-
86
- ### 方式二:本地部署
87
-
88
- ```bash
89
- # 克隆项目
90
- git clone https://github.com/TheSmallHanCat/sora2api.git
91
- cd sora2api
92
-
93
- # 创建虚拟环境
94
- python -m venv venv
95
-
96
- # 激活虚拟环境
97
- # Windows
98
- venv\Scripts\activate
99
- # Linux/Mac
100
- source venv/bin/activate
101
-
102
- # 安装依赖
103
- pip install -r requirements.txt
104
-
105
- # 启动服务
106
- python main.py
107
- ```
108
-
109
- ### 首次启动
110
-
111
- 服务启动后,访问管理后台进行初始化配置:
112
-
113
- - **地址**: http://localhost:8000
114
- - **用户名**: `admin`
115
- - **密码**: `admin`
116
-
117
- ⚠️ **重要**: 首次登录后请立即修改密码!
118
-
119
- ---
120
-
121
- ### 快速参考
122
-
123
- | 功能 | 模型 | 说明 |
124
- |------|------|------|
125
- | 文生图 | `sora-image*` | 使用 `content` 为字符串 |
126
- | 图生图 | `sora-image*` | 使用 `content` 数组 + `image_url` |
127
- | 文生视频 | `sora-video*` | 使用 `content` 为字符串 |
128
- | 图生视频 | `sora-video*` | 使用 `content` 数组 + `image_url` |
129
- | 创建角色 | `sora-video*` | 使用 `content` 数组 + `input_video` |
130
- | 角色生成视频 | `sora-video*` | 使用 `content` 数组 + `input_video` + 文本 |
131
- | Remix | `sora-video*` | 在 `content` 中包含 Remix ID |
132
-
133
- ---
134
-
135
- ### API 调用
136
-
137
- #### 基本信息(OpenAI标准格式,需要使用流式)
138
-
139
- - **端点**: `http://localhost:8000/v1/chat/completions`
140
- - **认证**: 在请求头中添加 `Authorization: Bearer YOUR_API_KEY`
141
- - **默认 API Key**: `han1234`(建议修改)
142
-
143
- #### 支持的模型
144
-
145
- **图片模型**
146
-
147
- | 模型 | 说明 | 尺寸 |
148
- |------|------|------|
149
- | `sora-image` | 文生图(默认) | 360×360 |
150
- | `sora-image-landscape` | 文生图(横屏) | 540×360 |
151
- | `sora-image-portrait` | 文生图(竖屏) | 360×540 |
152
-
153
- **视频模型**
154
-
155
- | 模型 | 时长 | 方向 | 说明 |
156
- |------|------|------|------|
157
- | `sora-video-10s` | 10秒 | 横屏 | 文生视频/图生视频 |
158
- | `sora-video-15s` | 15秒 | 横屏 | 文生视频/图生视频 |
159
- | `sora-video-landscape-10s` | 10秒 | 横屏 | 文生视频/图生视频 |
160
- | `sora-video-landscape-15s` | 15秒 | 横屏 | 文生视频/图生视频 |
161
- | `sora-video-portrait-10s` | 10秒 | 竖屏 | 文生视频/图生视频 |
162
- | `sora-video-portrait-15s` | 15秒 | 竖屏 | 文生视频/图生视频 |
163
-
164
- #### 请求示例
165
-
166
- **文生图**
167
-
168
- ```bash
169
- curl -X POST "http://localhost:8000/v1/chat/completions" \
170
- -H "Authorization: Bearer han1234" \
171
- -H "Content-Type: application/json" \
172
- -d '{
173
- "model": "sora-image",
174
- "messages": [
175
- {
176
- "role": "user",
177
- "content": "一只可爱的小猫咪"
178
- }
179
- ]
180
- }'
181
- ```
182
-
183
- **图生图**
184
-
185
- ```bash
186
- curl -X POST "http://localhost:8000/v1/chat/completions" \
187
- -H "Authorization: Bearer han1234" \
188
- -H "Content-Type: application/json" \
189
- -d '{
190
- "model": "sora-image",
191
- "messages": [
192
- {
193
- "role": "user",
194
- "content": [
195
- {
196
- "type": "text",
197
- "text": "将这张图片变成油画风格"
198
- },
199
- {
200
- "type": "image_url",
201
- "image_url": {
202
- "url": "data:image/png;base64,<base64_encoded_image_data>"
203
- }
204
- }
205
- ]
206
- }
207
- ],
208
- "stream": true
209
- }'
210
- ```
211
-
212
- **文生视频**
213
-
214
- ```bash
215
- curl -X POST "http://localhost:8000/v1/chat/completions" \
216
- -H "Authorization: Bearer han1234" \
217
- -H "Content-Type: application/json" \
218
- -d '{
219
- "model": "sora-video-landscape-10s",
220
- "messages": [
221
- {
222
- "role": "user",
223
- "content": "一只小猫在草地上奔跑"
224
- }
225
- ],
226
- "stream": true
227
- }'
228
- ```
229
-
230
- **图生视频**
231
-
232
- ```bash
233
- curl -X POST "http://localhost:8000/v1/chat/completions" \
234
- -H "Authorization: Bearer han1234" \
235
- -H "Content-Type: application/json" \
236
- -d '{
237
- "model": "sora-video-landscape-10s",
238
- "messages": [
239
- {
240
- "role": "user",
241
- "content": [
242
- {
243
- "type": "text",
244
- "text": "这只猫在跳舞"
245
- },
246
- {
247
- "type": "image_url",
248
- "image_url": {
249
- "url": "data:image/png;base64,<base64_encoded_image_data>"
250
- }
251
- }
252
- ]
253
- }
254
- ],
255
- "stream": true
256
- }'
257
- ```
258
-
259
- **视频Remix(基于已有视频继续创作)**
260
-
261
- ```bash
262
- curl -X POST "http://localhost:8000/v1/chat/completions" \
263
- -H "Authorization: Bearer han1234" \
264
- -H "Content-Type: application/json" \
265
- -d '{
266
- "model": "sora-video-landscape-10s",
267
- "messages": [
268
- {
269
- "role": "user",
270
- "content": "https://sora.chatgpt.com/p/s_68e3a06dcd888191b150971da152c1f5改成水墨画风格"
271
- }
272
- ]
273
- }'
274
- ```
275
-
276
- ### 视频角色功能
277
-
278
- Sora2API 支持**视频角色生成**功能。
279
-
280
- #### 功能说明
281
-
282
- - **角色创建**: 如果只有视频,无prompt,则生成角色自动提取角色信息,输出角色名
283
- - **角色生成**: 有视频、prompt,则上传视频创建角色,使用角色和prompt进行生成,输出视频
284
-
285
- #### API调用(OpenAI标准格式,需要使用流式)
286
-
287
- **场景 1: 仅创建角色(不生成视频)**
288
-
289
- 上传视频提取角色信息,获取角色名称和头像。
290
-
291
- ```bash
292
- curl -X POST "http://localhost:8000/v1/chat/completions" \
293
- -H "Authorization: Bearer han1234" \
294
- -H "Content-Type: application/json" \
295
- -d '{
296
- "model": "sora-video-landscape-10s",
297
- "messages": [
298
- {
299
- "role": "user",
300
- "content": [
301
- {
302
- "type": "input_video",
303
- "videoUrl": {
304
- "url": "data:video/mp4;base64,<base64_encoded_video_data>"
305
- }
306
- }
307
- ]
308
- }
309
- ],
310
- "stream": true
311
- }'
312
- ```
313
-
314
- **场景 2: 创建角色并生成视频**
315
-
316
- 上传视频创建角色,然后使用该角色生成新视频。
317
-
318
- ```bash
319
- curl -X POST "http://localhost:8000/v1/chat/completions" \
320
- -H "Authorization: Bearer han1234" \
321
- -H "Content-Type: application/json" \
322
- -d '{
323
- "model": "sora-video-landscape-10s",
324
- "messages": [
325
- {
326
- "role": "user",
327
- "content": [
328
- {
329
- "type": "input_video",
330
- "videoUrl": {
331
- "url": "data:video/mp4;base64,<base64_encoded_video_data>"
332
- }
333
- },
334
- {
335
- "type": "text",
336
- "text": "角色做一个跳舞的动作"
337
- }
338
- ]
339
- }
340
- ],
341
- "stream": true
342
- }'
343
- ```
344
-
345
- #### Python 代码示例
346
-
347
- ```python
348
- import requests
349
- import base64
350
-
351
- # 读取视频文件并编码为 Base64
352
- with open("video.mp4", "rb") as f:
353
- video_data = base64.b64encode(f.read()).decode("utf-8")
354
-
355
- # 仅创建角色
356
- response = requests.post(
357
- "http://localhost:8000/v1/chat/completions",
358
- headers={
359
- "Authorization": "Bearer han1234",
360
- "Content-Type": "application/json"
361
- },
362
- json={
363
- "model": "sora-video-landscape-10s",
364
- "messages": [
365
- {
366
- "role": "user",
367
- "content": [
368
- {
369
- "type": "input_video",
370
- "videoUrl": {
371
- "url": f"data:video/mp4;base64,{video_data}"
372
- }
373
- }
374
- ]
375
- }
376
- ],
377
- "stream": True
378
- },
379
- stream=True
380
- )
381
-
382
- # 处理流式响应
383
- for line in response.iter_lines():
384
- if line:
385
- print(line.decode("utf-8"))
386
- ```
387
-
388
- ---
389
-
390
- ## 📄 许可证
391
-
392
- 本项目采用 MIT 许可证。详见 [LICENSE](LICENSE) 文件。
393
-
394
- ---
395
-
396
- ## 🙏 致谢
397
-
398
- 感谢所有贡献者和使用者的支持!
399
-
400
- ---
401
-
402
- ## 📞 联系方式
403
-
404
- - 提交 Issue:[GitHub Issues](https://github.com/TheSmallHanCat/sora2api/issues)
405
- - 讨论:[GitHub Discussions](https://github.com/TheSmallHanCat/sora2api/discussions)
406
-
407
  ---
408
 
409
- **⭐ 如果这个项目对你有帮助,请给个 Star!**
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
+ title: Google
3
+ emoji: 📉
4
+ colorFrom: gray
5
+ colorTo: yellow
6
+ sdk: docker
7
+ pinned: false
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  ---
9
 
10
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference