Files
tokens-reef/deploy/docs-backup/MODULE_10_SORA.md

82 lines
2.2 KiB
Markdown
Raw Permalink Normal View History

# Sub2API 模块分析报告Sora与媒体服务模块
## 1. 模块概述
### 1.1 模块定位
Sora与媒体服务模块是Sub2API的视频生成和媒体管理核心负责接入OpenAI Sora视频生成服务提供视频生成、媒体存储、播放等功能。
### 1.2 核心职责
- **Sora视频生成**调用Sora API生成视频
- **媒体存储**:管理生成的视频文件
- **播放服务**:提供视频播放和下载
## 2. 代码结构分析
### 2.1 核心文件
| 文件路径 | 职责 |
|---------|------|
| `handler/sora_gateway_handler.go` | Sora网关处理 |
| `handler/sora_client_handler.go` | Sora客户端API |
| `service/sora_gateway_service.go` | Sora网关服务 |
| `service/sora_media_storage.go` | 媒体存储服务 |
| `service/sora_s3_storage.go` | S3存储服务 |
## 3. 功能详细分析
### 3.1 视频生成流程
```go
// service/sora_gateway_service.go - GenerateVideo
func (s *SoraGatewayService) GenerateVideo(ctx context.Context, req *SoraRequest) (*SoraResponse, error) {
// 1. 验证请求
if err := s.validateRequest(req); err != nil {
return nil, err
}
// 2. 获取Sora账号
account := s.selectAccount(req.GroupID)
if account == nil {
return nil, ErrNoAccountAvailable
}
// 3. 调用Sora API
response, err := s.callSoraAPI(ctx, account, req)
if err != nil {
return nil, err
}
// 4. 返回结果
return &SoraResponse{
VideoID: response.VideoID,
Status: response.Status,
DownloadURL: s.getDownloadURL(response.VideoID),
}, nil
}
```
### 3.2 媒体存储
```go
// service/sora_media_storage.go
type MediaStorage interface {
Upload(ctx context.Context, key string, data []byte, contentType string) error
Download(ctx context.Context, key string) ([]byte, error)
GetURL(ctx context.Context, key string, expiry time.Duration) (string, error)
Delete(ctx context.Context, key string) error
}
// 支持本地存储、S3兼容存储
```
## 4. 总结
Sora模块特点
- **视频生成**支持Sora API调用
- **多种存储**支持本地和S3存储
- **URL签名**支持带签名的播放URL
---
*文档版本1.0*
*分析基于Sub2API v0.1.104*