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

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,16 +79,44 @@ namespace Learn.VideoAnalysis.Controllers
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>
/// 获取视频信息<para>taskId/tagId二选一</para>
/// </summary>
/// <param name="taskId"></param>
/// <param name="tagId">自定义id</param>
/// <param name="needSubtitle">是否附加字幕</param>
/// <returns></returns>
[HttpGet(Name = "TaskInfo")]
/// <summary>
/// 获取视频信息<para>taskId/tagId二选一</para>
/// </summary>
/// <param name="taskId"></param>
/// <param name="tagId">自定义id</param>
/// <param name="needSubtitle">是否附加字幕</param>
/// <returns></returns>
[HttpGet(Name = "TaskInfo")]
public async Task<IActionResult> TaskInfo(long taskId,string? tagId,bool needSubtitle=false)
{
var task = await videoTaskDB.AsQueryable()
@ -104,15 +132,7 @@ namespace Learn.VideoAnalysis.Controllers
if (task.LastEnum != RedisChannelEnum.EndTask)
return BadRequest(taskData);
if (!needSubtitle && taskData != null && taskData.TimeBase != null)
{
taskData.TimeBase = taskData.TimeBase
.Select(s =>
{
s.Content = null;
return s;
})
.ToArray();
}
taskData.TimeBase = MergeTimeBases(taskData.TimeBase);
return Ok(taskData);
}

View File

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