3 回答
TA贡献1815条经验 获得超13个赞
1)CMTimeMake(1,10)
实际上表示值1和时标10。它们是分子和分母,所以它是1/10秒,而不是1秒。
2)结果将类似于CMTimeMake(2, 10)
,即2/10秒。
TA贡献1864条经验 获得超6个赞
以下代码使概念更清晰:
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)之间的差异
希望这种解释有所帮助。如需进一步的说明,请不要犹豫,在此职位上发表其他问题。
TA贡献1824条经验 获得超6个赞
随着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
实际上意味着“ 最高分辨率 ”。
- 3 回答
- 0 关注
- 977 浏览
添加回答
举报