已弃用的AVCaptureConnection帧持续时间属性的替代方案是什么?

5
根据这份文档,与视频帧最大和最小持续时间相关的属性和方法已被弃用,包括:
  • supportsVideoMaxFrameDuration
  • supportsVideoMinFrameDuration
  • videoMaxFrameDuration
  • videoMinFrameDuration
是否有替代方案?
2个回答

7
根据头文件(AVCaptureSession.h), 在iOS上,此属性已被弃用,最小和最大帧率的调整专门应用于AVCaptureDevice,使用activeVideoMinFrameDuration和activeVideoMaxFrameDuration属性。

activeVideoMinFrameDuration对我不起作用,我已经尝试在捕获开始之前或之后更改活动设备,有什么建议吗? - Avishay Cohen

7
在iOS7中,使用以下步骤可以按照我指定的帧速率运行它(我在使用activeVideoMinFrameDuration时遇到了一些问题,但这似乎是一个可行的解决方案):
AVCaptureDevice* camera = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if([camera isTorchModeSupported:AVCaptureTorchModeOn]) {
    [camera lockForConfiguration:nil];
    //configure frame rate
    [camera setActiveVideoMaxFrameDuration:CMTimeMake(1, samplingFrequency)];
    [camera setActiveVideoMinFrameDuration:CMTimeMake(1, samplingFrequency)];
    [camera unlockForConfiguration];
}

AVCaptureInput* cameraInput = [[AVCaptureDeviceInput alloc] initWithDevice:camera error:nil];
AVCaptureVideoDataOutput* videoOutput = [[AVCaptureVideoDataOutput alloc] init];
dispatch_queue_t captureQueue=dispatch_queue_create("catpureQueue", DISPATCH_QUEUE_SERIAL);

//setup delegate
[videoOutput setSampleBufferDelegate:self queue:captureQueue];

videoOutput.videoSettings = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithUnsignedInt:kCVPixelFormatType_32BGRA], (id)kCVPixelBufferPixelFormatTypeKey,
                             nil];
[catpureSession setSessionPreset:AVCaptureSessionPresetMedium];

if([catpureSession canAddInput:cameraInput])
    [catpureSession addInput:cameraInput];
if([catpureSession canAddOutput:videoOutput])
    [catpureSession addOutput:videoOutput];

[catpureSession startRunning];

其中catpureSessionAVCaptureSession类的对象,samplingFrequency是我的帧速率(设为30)。


1
在iOS上,文档说明了activeVideoMinFrameDurationactiveMaxFrameDuration属性在AVCaptureDevice的activeFormat更改、sessionPreset更改或设备的输入添加到会话时会重置为它们的默认值。因此,在iOS上,你应该在开始运行捕获会话之前调用设置activeVideoMaxFrameDurationactiveVideoMinDuration属性。 - tumtumtum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接