From cdd1358d45bb6817485627f85a94a9104d04a225 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sun, 13 Apr 2025 15:09:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8D=E4=BF=AE=E6=94=B9=E5=8E=9F=E5=A7=8B?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=81=BF=E5=85=8D=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- util/ffmpeg.go | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/util/ffmpeg.go b/util/ffmpeg.go index 53a2536..f0876ce 100644 --- a/util/ffmpeg.go +++ b/util/ffmpeg.go @@ -66,8 +66,14 @@ func runFfmpegForMultipleFile1(ctx context.Context, task *dto.FfmpegTask) bool { var wg sync.WaitGroup var mu sync.Mutex 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) go func(file *dto.File) { defer wg.Done() @@ -88,7 +94,7 @@ func runFfmpegForMultipleFile1(ctx context.Context, task *dto.FfmpegTask) bool { // 失败了,务必删除临时文件 os.Remove(tmpFile) } - }(&task.Files[i]) + }(&taskClone.Files[i]) } wg.Wait() @@ -99,7 +105,7 @@ func runFfmpegForMultipleFile1(ctx context.Context, task *dto.FfmpegTask) bool { } // 步骤二:使用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 { span.SetAttributes(attribute.String("error", err.Error())) 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 { log.Printf("删除临时文件失败: %v", err) } } if result { - outfile, err := os.Stat(task.OutputFile) + outfile, err := os.Stat(taskClone.OutputFile) if err != nil { span.SetAttributes(attribute.String("error", err.Error())) span.SetStatus(codes.Error, "文件不存在")