不修改原始数据避免失败

This commit is contained in:
Jerry Yan 2025-04-13 15:09:13 +08:00
parent c6a6518248
commit cdd1358d45

View File

@ -66,8 +66,14 @@ func runFfmpegForMultipleFile1(ctx context.Context, task *dto.FfmpegTask) bool {
var wg sync.WaitGroup var wg sync.WaitGroup
var mu sync.Mutex var mu sync.Mutex
var notOk bool var notOk bool
var taskClone = dto.FfmpegTask{
Files: task.Files,
OutputFile: task.OutputFile,
Offset: task.Offset,
Length: task.Length,
}
for i := range task.Files { for i := range taskClone.Files {
wg.Add(1) wg.Add(1)
go func(file *dto.File) { go func(file *dto.File) {
defer wg.Done() defer wg.Done()
@ -88,7 +94,7 @@ func runFfmpegForMultipleFile1(ctx context.Context, task *dto.FfmpegTask) bool {
// 失败了,务必删除临时文件 // 失败了,务必删除临时文件
os.Remove(tmpFile) os.Remove(tmpFile)
} }
}(&task.Files[i]) }(&taskClone.Files[i])
} }
wg.Wait() wg.Wait()
@ -99,7 +105,7 @@ func runFfmpegForMultipleFile1(ctx context.Context, task *dto.FfmpegTask) bool {
} }
// 步骤二使用concat协议拼接裁切 // 步骤二使用concat协议拼接裁切
result, err := QuickConcatVideoCut(subCtx, task.Files, int64(task.Offset), int64(task.Length), task.OutputFile) result, err := QuickConcatVideoCut(subCtx, taskClone.Files, int64(taskClone.Offset), int64(taskClone.Length), taskClone.OutputFile)
if err != nil { if err != nil {
span.SetAttributes(attribute.String("error", err.Error())) span.SetAttributes(attribute.String("error", err.Error()))
span.SetStatus(codes.Error, "FFMPEG多文件concat协议转码失败") span.SetStatus(codes.Error, "FFMPEG多文件concat协议转码失败")
@ -107,13 +113,13 @@ func runFfmpegForMultipleFile1(ctx context.Context, task *dto.FfmpegTask) bool {
} }
// 步骤三:删除临时文件 // 步骤三:删除临时文件
for _, file := range task.Files { for _, file := range taskClone.Files {
if err := os.Remove(file.Url); err != nil { if err := os.Remove(file.Url); err != nil {
log.Printf("删除临时文件失败: %v", err) log.Printf("删除临时文件失败: %v", err)
} }
} }
if result { if result {
outfile, err := os.Stat(task.OutputFile) outfile, err := os.Stat(taskClone.OutputFile)
if err != nil { if err != nil {
span.SetAttributes(attribute.String("error", err.Error())) span.SetAttributes(attribute.String("error", err.Error()))
span.SetStatus(codes.Error, "文件不存在") span.SetStatus(codes.Error, "文件不存在")