我有一个Keyframe
s 列表,它们只是具有 TimeSpan 的对象和一个具有自己的 timeSpan 刻度的字段(类型 long),称为tempTicks
。完整列表从关键帧 1 - 7000 开始。
几乎每个关键帧的时间戳都比之前的要大。 我想从 300-800 中获取这些关键帧,并且我想给它们一个从 0 滴答开始的新 TimeSpan。
List<Keyframe> region = new List<Keyframe>();
long highestTicks = 0;
long durationTicks = 0; //Stores the whole duration of this new region
//beginFrame and endFrame are 300 and 800
for (int i = beginFrame; i < endFrame; i += 1)
{
//Clip is the full list of keyframes
Keyframe k = clip.Keyframes[i];
if (region.Count < 1)
{
k.Time = TimeSpan.FromTicks(0);
}
else
{
//This is the trouble-part
if (k.Time.Ticks > highestTicks)
{
highestTicks = k.Time.Ticks;
k.Time =
TimeSpan.FromTicks(highestTicks - region[region.Count -1].tempTicks);
}
}
durationTicks += k.Time.Ticks;
region.Add(k);
}
我不能以这种方式正确地得到所有这些。你明白为什么吗?
示例:拍摄电影中最喜欢的场景。您希望以场景在媒体播放器中从 0:00 开始的方式导出它,而不是从 87:00 开始,即您最初拍摄它的地方。