试图了解CMTime和CMTimeMake
 1) CMTimeMake(1,10)表示持续时间为1秒,时间刻度为10或10帧/秒。 这意味着10帧的video持续时间是1秒? 
2)
 CMTime lastTime=CMTimeMake(1,10); CMTime frameTime=CMTimeMake(1, 10); CMTime currentTime=CMTimeAdd(lastTime, frameTime) 
=(2,10)?
2秒的video和每秒10帧的currentTime?
  1) CMTimeMake(1,10)实际上是指1的值和10的时间刻度。它们是分子和分母,所以它是1/10秒,而不是1秒。 
  2)结果就像CMTimeMake(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)
希望这个解释有帮助。 为了进一步的澄清,请不要犹豫,在这个职位上发表进一步的问题。
 使用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有效的意思是“ 最高分辨率 ”。 
  CMTime结构体表示length of time that is stored as rational number.  CMTime具有值和时间范围字段,并且表示时间值/时间刻度秒。 
看到这个SO答案很清楚