0
請耐心等待,因爲我的問題可能難以解釋。重疊時的分裂時間跨度
我有多個TXT文件表示的時間跨度,以秒爲視頻選擇部分。例如,1.23-5.45。
我想用這些時間跨度採取的多個視頻這些部分,並創建一個視頻的所有部分。
我解析這些TXT文件到的鍵值對列表中的數組:
List<KeyValuePair<Double, Double>>[] TagsOfSeconds= new List<KeyValuePair<Double, Double>>[]()
數組元素的每個索引代表一個TXT文件。每個元素都是一個KeyValue對列表,其中每個對都是秒時間跨度的開始結尾。
我的要求是解析這些TXT文件並將時間跨度分割爲5秒的片段(5是一個示例,片段值將由用戶提供),並將片段優先排列,以最小值(發生在其他段之前),如果兩者相等,則取第一個在TagsOfSeconds數組中的第一個。
下面是一個圖示。段順序就是我想要實現: 我創建了下面的結構來跟蹤從文本文件解析的部分:
public struct PortionInfo
{
public Double Start, End;
public int VideoIndex, PortionIndex;
public Double PortionLength;
}
這是基於我訂購的加載代碼段開始時間跨度和TXT文件索引:
private void OrderVideoPortions(List<KeyValuePair<Double, Double>>[] videoPortionslist)
{
videoPortionsOrder = new List<PortionInfo>(); //videoPortionsOrder.Sort()
for(int i=0;i< videoPortionslist.Length;i++)
{
for (int j = 0; j < videoPortionslist[i].Count; j++)
{
PortionInfo currentPortionInfo = new PortionInfo();
currentPortionInfo.VideoIndex = i;
currentPortionInfo.PortionIndex = j;
currentPortionInfo.Start = videoPortionslist[i][j].Key;
currentPortionInfo.End = videoPortionslist[i][j].Value;
currentPortionInfo.PortionLength = currentPortionInfo.End - currentPortionInfo.Start;
videoPortionsOrder.Add(currentPortionInfo);
}
}
videoPortionsOrder.Sort(SortAscending);
}
public static int SortAscending(PortionInfo p1, PortionInfo p2)
{
int returnVal = p1.Start.CompareTo(p2.Start);
if (returnVal == 0)
{
return p1.VideoIndex.CompareTo(p2.VideoIndex);
}
else
return returnVal;
}
現在我必須從排序列表中生成段。
任何一個可以幫我實現這一目標?我只是想要確定交叉點和分段的幫助或指導。
感謝
看起來你已經解決了這個問題 - 還有哪些工作要做? –
我能夠從TXT文件的標籤進行排序,但我需要把它們分成更小的片段,並創建一個類似的東西是什麼如圖所示 – David
你就不能每次都到最近的5S圓,然後創建每個運行(endTime - startTime)/ 5次的循環內的段? –