生成视频并且上传到minio-异步
This commit is contained in:
@@ -26,6 +26,9 @@ var Concat = new(video)
|
||||
// Concat 视频拼接(URL模式) POST /video/concat
|
||||
func (c *video) Concat(ctx context.Context, req *dto.ConcatReq) (res *dto.ConcatRes, err error) {
|
||||
ctx = withUser(ctx)
|
||||
g.Log().Infof(ctx, "[视频拼接] 收到请求 入参: method=%s, upload=%v, video_urls=%v",
|
||||
req.Method, req.Upload, req.VideoURLs)
|
||||
|
||||
if req.Method == "" {
|
||||
req.Method = "auto"
|
||||
}
|
||||
@@ -44,12 +47,33 @@ func (c *video) Concat(ctx context.Context, req *dto.ConcatReq) (res *dto.Concat
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
defer os.Remove(svcRes.OutputPath)
|
||||
return toDTORes(svcRes), nil
|
||||
}
|
||||
|
||||
// ConcatAsync 视频拼接-异步(URL模式) POST /video/concat/async
|
||||
func (c *video) ConcatAsync(ctx context.Context, req *dto.ConcatAsyncReq) (res *dto.CreateConcatTaskRes, err error) {
|
||||
ctx = withUser(ctx)
|
||||
g.Log().Infof(ctx, "[视频拼接-异步] 收到请求 入参: method=%s, upload=%v, callback=%s, video_urls=%v",
|
||||
req.Method, req.Upload, req.CallbackURL, req.VideoURLs)
|
||||
|
||||
if req.Method == "" {
|
||||
req.Method = "auto"
|
||||
}
|
||||
|
||||
taskID, taskErr := service.Concat.CreateAsyncTask(ctx, req.VideoURLs, req.Method, req.Upload, req.CallbackURL)
|
||||
if taskErr != nil {
|
||||
return nil, taskErr
|
||||
}
|
||||
return &dto.CreateConcatTaskRes{TaskID: taskID}, nil
|
||||
}
|
||||
|
||||
// ConcatUpload 视频拼接(文件上传模式) POST /video/concat/upload
|
||||
func (c *video) ConcatUpload(ctx context.Context, req *dto.ConcatUploadReq) (res *dto.ConcatRes, err error) {
|
||||
ctx = withUser(ctx)
|
||||
g.Log().Infof(ctx, "[视频拼接-上传] 收到请求 入参: method=%s, upload=%v", req.Method, req.Upload)
|
||||
|
||||
savePaths, err := common.SaveUploadedFilesFromCtx(ctx)
|
||||
if err != nil || len(savePaths) < 2 {
|
||||
return nil, fmt.Errorf("至少需要2个视频,当前%d个", len(savePaths))
|
||||
@@ -68,9 +92,40 @@ func (c *video) ConcatUpload(ctx context.Context, req *dto.ConcatUploadReq) (res
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
defer os.Remove(svcRes.OutputPath)
|
||||
return toDTORes(svcRes), nil
|
||||
}
|
||||
|
||||
// ConcatUploadAsync 视频拼接-异步(文件上传模式) POST /video/concat/upload/async
|
||||
func (c *video) ConcatUploadAsync(ctx context.Context, req *dto.ConcatUploadAsyncReq) (res *dto.CreateConcatTaskRes, err error) {
|
||||
ctx = withUser(ctx)
|
||||
g.Log().Infof(ctx, "[视频拼接-上传-异步] 收到请求 入参: method=%s, upload=%v, callback=%s",
|
||||
req.Method, req.Upload, req.CallbackURL)
|
||||
|
||||
savePaths, err := common.SaveUploadedFilesFromCtx(ctx)
|
||||
if err != nil || len(savePaths) < 2 {
|
||||
return nil, fmt.Errorf("至少需要2个视频,当前%d个", len(savePaths))
|
||||
}
|
||||
defer service.CleanupConcat(savePaths)
|
||||
|
||||
if req.Method == "" {
|
||||
req.Method = "auto"
|
||||
}
|
||||
|
||||
taskID, taskErr := service.Concat.CreateAsyncTaskWithFiles(ctx, savePaths, req.Method, req.Upload, req.CallbackURL)
|
||||
if taskErr != nil {
|
||||
return nil, taskErr
|
||||
}
|
||||
return &dto.CreateConcatTaskRes{TaskID: taskID}, nil
|
||||
}
|
||||
|
||||
// GetConcatTask 查询异步拼接任务结果 GET /video/concat/task/{taskId}
|
||||
func (c *video) GetConcatTask(ctx context.Context, req *dto.GetConcatTaskReq) (res *dto.GetConcatTaskRes, err error) {
|
||||
ctx = withUser(ctx)
|
||||
return service.Concat.GetTaskResult(ctx, req.TaskID)
|
||||
}
|
||||
|
||||
// withUser 为 context 注入默认用户(无认证基础设施时使用)
|
||||
func withUser(ctx context.Context) context.Context {
|
||||
if ctx.Value("user") == nil {
|
||||
|
||||
Reference in New Issue
Block a user