- Remove old review reports (keep latest only) - Move docs/ to deploy/docs-backup/ - Move performance-testing/ to deploy/ - Clean up test output files - Organize root directory
82 lines
2.2 KiB
Markdown
82 lines
2.2 KiB
Markdown
# 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* |