我试图用AVCaptureSession每秒拍摄5张照片,我不确定我理解AVFrameRange的含义 . 目前我有一些设置设备的代码:
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
并尝试将 activeVideoMinFrameDuration
和 activeVideoMaxFrameDuration
设置为自定义值 CMTimeMake(1, 5)
. Apple告诉我,我只能使用他们提供的AVFrameRanges之一 .
当我对它们进行NSLog时,我得到(2,30),(2,60)和(2,24) . 我首先想知道这意味着什么?这是相机运行的帧速率还是捕获帧的间隔(即我正在尝试做的事情)?
如果不是,我该怎样做才能在sampleBufferDelegate方法上每秒保存5帧?目前它给了我每一个帧,因为每次有一个帧时都会调用该方法,所以我只需要一些指针来说明我每秒只能抓5个 .
2 回答
这是我们使用的工作代码,它将帧速率设置为每秒5帧 .
如果在使用此代码时测量对CaptureOutput的调用,则可以看到相机帧每200毫秒调用一次(即每秒5帧) . (我们只是对此进行了测试以确认 . )
更改desiredFrameRate以获取其他相机帧速率 .
选择自定义帧速率的代码如下所示 - 添加了对Apple RosyWriter的检查以验证当前格式是否支持选择的FPS
如果当前格式(
activeFormat
)不支持您选择的FPS,请使用以下代码更改activeFormat
,然后选择FPS . 需要获得格式尺寸以满足您的需求 .注意:不建议使用
AVCaptureConnection
videoMinFrameDuration
来设置FPS .