Files
tokens-reef/deploy/docs-backup/MODULE_10_SORA.md
Developer 349d783fd1 refactor: clean up project structure
- 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
2026-04-06 23:36:03 +08:00

2.2 KiB
Raw Permalink Blame 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 视频生成流程

// 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