优化 获取视频信息 合并时间段
This commit is contained in:
parent
b9563452c3
commit
5ff60df3d3
|
|
@ -79,16 +79,44 @@ 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>
|
/// </summary>
|
||||||
/// </summary>
|
/// <param name="taskId"></param>
|
||||||
/// <param name="taskId"></param>
|
/// <param name="tagId">自定义id</param>
|
||||||
/// <param name="tagId">自定义id</param>
|
/// <param name="needSubtitle">是否附加字幕</param>
|
||||||
/// <param name="needSubtitle">是否附加字幕</param>
|
/// <returns></returns>
|
||||||
/// <returns></returns>
|
[HttpGet(Name = "TaskInfo")]
|
||||||
[HttpGet(Name = "TaskInfo")]
|
|
||||||
public async Task<IActionResult> TaskInfo(long taskId,string? tagId,bool needSubtitle=false)
|
public async Task<IActionResult> TaskInfo(long taskId,string? tagId,bool needSubtitle=false)
|
||||||
{
|
{
|
||||||
var task = await videoTaskDB.AsQueryable()
|
var task = await videoTaskDB.AsQueryable()
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue