试图了解CMTime和CMTimeMake

1)CMTimeMake(1,10)表示持续时间为1秒,时标为10或每秒10帧。这意味着1秒的视频持续时间为10帧?


2)


CMTime lastTime=CMTimeMake(1,10);

CMTime frameTime=CMTimeMake(1, 10);

CMTime currentTime=CMTimeAdd(lastTime, frameTime)

=(2,10)?


2秒的视频和当前时间每秒10帧?


子衿沉夜
浏览 941回答 3
3回答

萧十郎

1)CMTimeMake(1,10)实际上表示值1和时标10。它们是分子和分母,所以它是1/10秒,而不是1秒。2)结果将类似于CMTimeMake(2, 10),即2/10秒。

慕尼黑的夜晚无繁华

以下代码使概念更清晰:1)Float64 seconds = 5; int32_t preferredTimeScale = 600;CMTime inTime = CMTimeMakeWithSeconds(seconds, preferredTimeScale);CMTimeShow(inTime);上面的代码给出:{3000/600 = 5.000}这意味着总持续时间为5秒,具有3000帧,时标为每秒600帧。2)int64_t value = 10000;int32_t preferredTimeScale = 600;CMTime inTime = CMTimeMake(value, preferredTimeScale);CMTimeShow(inTime);这给了{10000/600 = 16.667}这意味着总持续时间为16.667秒,其中10000帧的时标为每秒600帧。注意CMTimeMake(int64_t值,int32_t时间标度)和CMTimeMakeWithSeconds(Float64秒,int32_t preferredTimeScale)之间的差异希望这种解释有所帮助。如需进一步的说明,请不要犹豫,在此职位上发表其他问题。

慕妹3242003

随着CMTimeMake(A, B)你存储一个有理数,一个确切的分数A / B秒CMTimeMake(1, 4) ->时间间隔0.25秒随着CMTimeMakeWithSeconds(A, B)您存储A 秒数以达到B步骤分辨率CMTimeMakeWithSeconds(0.25, ...) ->时间间隔0.25秒您通常会看到CMTimeMakeWithSeconds(time, NSEC_PER_SEC)。在NSEC_PER_SEC实际上意味着“ 最高分辨率 ”。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS