AVFoundation我使用setActiveVideoMinFrameDuration不起作用

Zy *_*hao 3 avfoundation ios avcapture

AVCaptureVideoDataOutput在我的演示中使用,在没有声音的情况下拍摄循环照片(如扫描仪),所以我将fps设置为低级别

[device setActiveVideoMinFrameDuration:CMTimeMake(1, 1)];
[device setActiveVideoMaxFrameDuration:CMTimeMake(1, 1)];
Run Code Online (Sandbox Code Playgroud)

在我的代码中,然后执行此操作

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer
   fromConnection:(AVCaptureConnection *)connection
{
     NSLog(@"date");
}
Run Code Online (Sandbox Code Playgroud)

检查是否有效,我发现它每秒打印24次,而不是1秒1秒

PS:设备版本是iPhone 5C和iOS 8.12

小智 10

我刚遇到同样的问题.你应该看看有关setActiveVideoMinFrameDuration或setActiveVideoMaxFrameDuration的函数说明.Apple说:

在iOS上,接收者的activeVideoMinFrameDuration在以下条件下重置为其默认值:
- 接收者的activeFormat更改
- 接收者的AVCaptureDeviceInput会话的sessionPreset更改
- 接收者的AVCaptureDeviceInput被添加到会话

因此,更改activeFormat,sessionPreset和AVCaptureSession的addInput 之后,您应该调用setActiveVideoMinFrameDuration和setActiveVideoMaxFrameDuration .