如何理解CMTime和CMTimeMake?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

1)CMTimeMake(1,10)意味着持续时间为1秒,时间刻度为10帧/秒,或10帧/秒。这意味着1s的视频持续时间有10帧?

2)

CMTime lastTime=CMTimeMake(1,10);
CMTime frameTime=CMTimeMake(1, 10);
CMTime currentTime=CMTimeAdd(lastTime, frameTime)

=(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帧。

用户回答回答于

1)CMTimeMake(1,10)实际上是指1的值和10的时间刻度。它们是分子和分母,所以是1/10秒,而不是1秒。

2)结果就像CMTimeMake(2, 10),即2/10秒。

扫码关注云+社区