package video import ( "context" "fmt" dto "media/model/dto/video" service "media/service/video" "github.com/gogf/gf/v2/frame/g" ) type merge struct{} var Merge = new(merge) // MergeAsync 视频拼接+混音(异步) POST /video/merge/async func (c *merge) MergeAsync(ctx context.Context, req *dto.VideoAudioMergeAsyncReq) (res *dto.CreateMergeTaskRes, err error) { ctx = withUser(ctx) g.Log().Infof(ctx, "[视频拼接+混音-异步] 收到请求 入参: video_count=%d, audio_count=%d, upload=%v, callback=%s", len(req.VideoURLs), len(req.AudioURLs), req.Upload, req.CallbackURL) if len(req.VideoURLs) < 1 { return nil, fmt.Errorf("至少需要1个视频") } if len(req.AudioURLs) < 1 { return nil, fmt.Errorf("至少需要1个音频") } taskID, taskErr := service.Merge.CreateAsyncTask(ctx, req.VideoURLs, req.AudioURLs, req.CallbackURL, req.Upload) if taskErr != nil { return nil, taskErr } return &dto.CreateMergeTaskRes{TaskID: taskID}, nil } // GetMergeTask 查询异步拼接+混音任务结果 GET /video/merge/task/{taskId} func (c *merge) GetMergeTask(ctx context.Context, req *dto.GetMergeTaskReq) (res *dto.GetMergeTaskRes, err error) { ctx = withUser(ctx) return service.Merge.GetTaskResult(ctx, req.TaskID) }