0

我的项目中有以下代码:

CMTimeRange clipRange = clip.range;
CMTime clipTime = CMTimeClampToRange(editor.currentClipTime, clipRange);

根据文档CMTimeClampToRange()应该表现得像:

对于给定的CMTimeand ,返回该时间范围内CMTimeRange最接近的值。CMTime

但是,当我添加这个时:

assert(CMTimeRangeContainsTime(clipRange, clipTime));

断言失败。状态的文档CMTimeRangeContainsTime()

指示时间是否包含在时间范围内。

我会假设inside和inside意思是一样的,但显然不是。有没有一种优雅的方法可以将 a 夹CMTime在一个范围内以使其满足CMTimeRangeContainsTime()

4

1 回答 1

0

我已经制定了以下技巧:

clipTime = CMTimeMaximum(clipRange.start, CMTimeSubtract(clipTime, CMTimeMake(1, clipTime.timescale)));

基本上,它会从钳位时间中减去同一时间尺度内的最小非空时间跨度,并确保我们不会产生负值。

于 2015-01-28T14:29:29.450 回答