取消 ai优化字幕的 死循环情况

新增 接收的任务学科类型校验
This commit is contained in:
小肥羊 2025-08-28 10:29:57 +08:00
parent 2ddbe98a1b
commit 4f48553afd
4 changed files with 45 additions and 35 deletions

View File

@ -84,7 +84,7 @@ namespace VideoAnalysisCore.AICore.FFMPGE
keyFrames.Add((int)timestamp); keyFrames.Add((int)timestamp);
//string outputPath = Path.Combine(outputDir, $"change_{timestamp:0000}.jpg"); //string outputPath = Path.Combine(outputDir, $"change_{timestamp:0000}.jpg");
//currFrame.Save(outputPath); //currFrame.Save(outputPath);
Console.WriteLine($"变化帧: {timestamp}秒,差异值: {ssim:F2}"); //Console.WriteLine($"变化帧: {timestamp}秒,差异值: {ssim:F2}");
} }
//Console.WriteLine($"帧: {timestamp}秒SSIM{ssim:F2} 差异值: {ssim:F2} "); //Console.WriteLine($"帧: {timestamp}秒SSIM{ssim:F2} 差异值: {ssim:F2} ");

View File

@ -199,15 +199,14 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek
await Parallel.ForAsync(0, totalCount, await Parallel.ForAsync(0, totalCount,
new ParallelOptions() { MaxDegreeOfParallelism = 20 }, new ParallelOptions() { MaxDegreeOfParallelism = 20 },
async (s, c) => async (s, c) =>
{
while (true)
{ {
var cArr = captionsArr var cArr = captionsArr
.Skip(spanCount * s) .Skip(spanCount * s)
.Take(spanCount); .Take(spanCount);
if (cArr.Count() == 0) if (cArr.Count() == 0)
return; return;
var nowCaptionStr = cArr.Select(s => s.Text).ToJson(); var cStrArr = cArr.Select(s => s.Text);
var nowCaptionStr = cStrArr.ToJson();
var resFormat = """[string(修改结果)]"""; var resFormat = """[string(修改结果)]""";
var postMessages = var postMessages =
$"这是一堂中国{subject}课堂的字幕,由结果是语音识别提供。" + $"这是一堂中国{subject}课堂的字幕,由结果是语音识别提供。" +
@ -224,8 +223,8 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek
var resData = await ChatAsync<string[]>(taskInfo.Id.ToString(), postMessages, "优化字幕", "deepseek-chat", 3000); var resData = await ChatAsync<string[]>(taskInfo.Id.ToString(), postMessages, "优化字幕", "deepseek-chat", 3000);
if (resData.Count() != cArr.Count()) if (resData.Count() != cArr.Count())
{ {
Console.WriteLine(DateTime.Now + $"=>{taskInfo.Id}字幕优化 分段{s} AI结果数量不匹配,重试×"); resData = cStrArr.ToArray();
continue; Console.WriteLine(DateTime.Now + $"=>{taskInfo.Id}字幕优化 分段{s} AI结果数量不匹配,采用原始值");
} }
newCaptionsList.AddRange(resData.Select((text, i) => new SenseVoiceRes() newCaptionsList.AddRange(resData.Select((text, i) => new SenseVoiceRes()
{ {
@ -235,7 +234,6 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek
})); }));
Console.WriteLine(DateTime.Now + $"=>{taskInfo.Id}字幕优化 分段{s}完成√ "); Console.WriteLine(DateTime.Now + $"=>{taskInfo.Id}字幕优化 分段{s}完成√ ");
return; return;
}
}); });
var res = newCaptionsList.OrderBy(s => s.Start).ToArray(); var res = newCaptionsList.OrderBy(s => s.Start).ToArray();
Console.WriteLine(DateTime.Now + $"=>字幕优化执行完成"); Console.WriteLine(DateTime.Now + $"=>字幕优化执行完成");
@ -505,6 +503,10 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek
} }
} }
} }
if(insertData==null || insertData.Count==0|| insertQuestionKonw.Count==0)
return null;
//上传oss 并更新imageUrl //上传oss 并更新imageUrl
ossClient.AddVideoQuestionUrl(insertData); ossClient.AddVideoQuestionUrl(insertData);

View File

@ -12,6 +12,7 @@ using VideoAnalysisCore.Job;
using VideoAnalysisCore.Model; using VideoAnalysisCore.Model;
using VideoAnalysisCore.Model.Enum; using VideoAnalysisCore.Model.Enum;
using AlibabaCloud.SDK.Vod20170321; using AlibabaCloud.SDK.Vod20170321;
using UserCenter.Model.Enum;
namespace VideoAnalysisCore.Common namespace VideoAnalysisCore.Common
{ {

View File

@ -70,11 +70,18 @@ namespace VideoAnalysisCore.Controllers
var nodePackages = new List<NodePackageInfo>(reqArr.Count()); var nodePackages = new List<NodePackageInfo>(reqArr.Count());
var videoIdArr = videoTaskDB.AsQueryable().Select(v => v.TagId).Distinct().ToArray(); var videoIdArr = videoTaskDB.AsQueryable().Select(v => v.TagId).Distinct().ToArray();
var courseArr = await courseInfoDB.AsQueryable().ToArrayAsync(); var courseArr = await courseInfoDB.AsQueryable().ToArrayAsync();
//系统可接收任务的学科
var subjectArr = new List<SubjectEnum?>
{
SubjectEnum.
};
foreach (var sGroup in reqArr.GroupBy(s => s.ContentId)) foreach (var sGroup in reqArr.GroupBy(s => s.ContentId))
{ {
var s = sGroup.FirstOrDefault(s => s.VideoType == VideoType.); var s = sGroup.FirstOrDefault(s => s.VideoType == VideoType.);
if (s is null) if (s is null)
return BadRequest("无有效的老师授课视频"); return BadRequest("无有效的老师授课视频");
//校验学科有效
if (!subjectArr.Contains(s.SubjectId)) continue;
var stageId = s.StageId.GetHashCode(); var stageId = s.StageId.GetHashCode();
var subjectId = s.SubjectId.GetHashCode(); var subjectId = s.SubjectId.GetHashCode();
var course = courseArr.FirstOrDefault(x => stageId == x.Stage_Id && subjectId == x.Subject_Id); var course = courseArr.FirstOrDefault(x => stageId == x.Stage_Id && subjectId == x.Subject_Id);