优化 获取视频信息 合并时间段

This commit is contained in:
小肥羊 2024-11-20 18:19:49 +08:00
parent b9563452c3
commit 5ff60df3d3
2 changed files with 39 additions and 18 deletions

View File

@ -79,7 +79,35 @@ namespace Learn.VideoAnalysis.Controllers
return Ok(res); return Ok(res);
} }
[NonAction]
private static List<TimeBase> MergeTimeBases(IEnumerable<TimeBase> timeBases)
{
if (timeBases == null || timeBases.Count() == 0)
{
return new List<TimeBase>();
}
var mergedList = new List<TimeBase>();
// 初始化合并段
var current = timeBases.First();
foreach (var next in timeBases)
{
// 如果类型相同,则扩展时间段
if (current.TimeBaseType == next.TimeBaseType)
{
current.End = Math.Max(current.End, next.End);
}
else
{
// 类型不同,将当前时间段加入结果列表,并开始新时间段
current.Content = string.Empty;
mergedList.Add(current);
current = next;
}
}
// 添加最后的时间段
mergedList.Add(current);
return mergedList;
}
/// <summary> /// <summary>
/// 获取视频信息<para>taskId/tagId二选一</para> /// 获取视频信息<para>taskId/tagId二选一</para>
@ -104,15 +132,7 @@ namespace Learn.VideoAnalysis.Controllers
if (task.LastEnum != RedisChannelEnum.EndTask) if (task.LastEnum != RedisChannelEnum.EndTask)
return BadRequest(taskData); return BadRequest(taskData);
if (!needSubtitle && taskData != null && taskData.TimeBase != null) if (!needSubtitle && taskData != null && taskData.TimeBase != null)
{ taskData.TimeBase = MergeTimeBases(taskData.TimeBase);
taskData.TimeBase = taskData.TimeBase
.Select(s =>
{
s.Content = null;
return s;
})
.ToArray();
}
return Ok(taskData); return Ok(taskData);
} }

View File

@ -74,6 +74,7 @@ namespace Learn.VideoAnalysis.Controllers.Dto
Enum.GetValues(typeof(TimeBaseTypeEnum)) Enum.GetValues(typeof(TimeBaseTypeEnum))
.Cast<TimeBaseTypeEnum>() .Cast<TimeBaseTypeEnum>()
.ToDictionary(x => (int)x, x => x.ToString()); .ToDictionary(x => (int)x, x => x.ToString());
/// <summary> /// <summary>
/// 时间轴合计 /// 时间轴合计
/// </summary> /// </summary>