我见过一些例子 的 CMTime (三个独立的链接),但我还是不明白这一点。 我使用的是AVCaptureVideoDataOutput的AVCaptureSession,我想设置输出的最大值和最小值的帧速率。 我的问题是,我只是不明白的CMTime结构。
显然CMTimeMake(值,时间标度)应该给我每1 /秒时间刻度值帧,总共价值/秒的时间表,还是我得到那个错了吗?
为什么没有这个记录任何地方,以解释这个呢?
如果它真的像工作,我将如何得到它具有帧的数量不定?
如果它很简单,我很抱歉,但一切都没有点击,只是还没有。
甲CMTime
结构表示存储为有理数(见的时间长度CMTime参考 )。 CMTime
具有value
和timescale
字段,和表示时间value/timescale seconds
。
CMTimeMake
是返回的函数CMTime
结构,例如:
CMTime t1 = CMTimeMake(1, 10); // 1/10 second = 0.1 second
CMTime t2 = CMTimeMake(2, 1); // 2 seconds
CMTime t3 = CMTimeMake(3, 4); // 3/4 second = 0.75 second
CMTime t4 = CMTimeMake(6, 8); // 6/8 second = 0.75 second
最后两个时间值t3
和t4
表示相同的时间值,因此
CMTimeCompare(t3, t4) == 0
如果设置了videoMinFrameDuration
一个的AVCaptureSession
是不会有所作为,如果你设置
connection.videoMinFrameDuration = CMTimeMake(1, 20); // or
connection.videoMinFrameDuration = CMTimeMake(2, 40);
在这两种情况下的帧之间的最小时间间隔设定为1/20 = 0.05秒。