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)
Run Code Online (Sandbox Code Playgroud)
=(2,10)?
2秒的视频和每秒10帧的当前时间?
Pet*_*ese 157
1)CMTimeMake(1,10)实际上意味着值为1,时间刻度为10.它们是分子和分母,因此它是1/10秒,而不是1秒.
2)结果将是CMTimeMake(2, 10),即2/10秒.
Rau*_*nak 135
彼得是对的.以下代码使概念更加清晰:
1)
Float64 seconds = 5;
int32_t preferredTimeScale = 600;
CMTime inTime = CMTimeMakeWithSeconds(seconds, preferredTimeScale);
CMTimeShow(inTime);
Run Code Online (Sandbox Code Playgroud)
上面的代码给出:{3000/600 = 5.000}
这意味着总持续时间为5秒,3000帧,时间刻度为每秒600帧.
2)
int64_t value = 10000;
int32_t preferredTimeScale = 600;
CMTime inTime = CMTimeMake(value, preferredTimeScale);
CMTimeShow(inTime);
Run Code Online (Sandbox Code Playgroud)
这个给出{10000/600 = 16.667}
这意味着总持续时间为16.667秒,10000帧,时间刻度为每秒600帧.
注意CMTimeMake(int64_t值,int32_t时间刻度)和CMTimeMakeWithSeconds(Float64秒,int32_t preferredTimeScale)之间的区别
希望这个解释有所帮助 如需进一步说明,请随时在此帖子上发布更多问题.
bca*_*tle 36
随着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实际上意味着" 最高分辨率 ".
如果您只想知道如何间隔1秒(像我一样),这就是您的答案:
int seconds = 1;
CMTime interval = CMTimeMakeWithSeconds(seconds, NSEC_PER_SEC);
Run Code Online (Sandbox Code Playgroud)