- 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
2.2 KiB
2.2 KiB
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 视频生成流程
// 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 媒体存储
// 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