0

私のプロジェクトには次のコードがあります。

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

documentationによると、次のCMTimeClampToRange()ように動作する必要があります。

指定されたCMTimeandについて、その時間範囲内でCMTimeRange最も近いものを返します。CMTime

ただし、これを追加すると:

assert(CMTimeRangeContainsTime(clipRange, clipTime));

アサーションは失敗します。状態のドキュメントCMTimeRangeContainsTime():

時間が時間範囲内に含まれているかどうかを示します。

insidewithinは同じ意味だと思いますが、どうやらそうではありません。CMTimeを満たすように範囲内で aをクランプするエレガントな方法はありCMTimeRangeContainsTime()ますか?

4

1 に答える 1

0

私は次のハックを解決しました:

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

基本的に、クランプされた時間から同じタイムスケール内の最小の空でないタイムスパンを減算し、負の値が得られないようにします。

于 2015-01-28T14:29:29.450 に答える