我相信这以前是用captureOutput.minFrameDuration
做的。但是,这在iOS 5中已被弃用。
相反,我显然需要使用AVCaptureConnection
的video.minFrameDuration
。所以我有我的输入,我的输出,我把它们都添加到捕获会话中--我从哪里可以访问捕获连接?我想它是由会话为我创建的,但是在哪里呢?
我可以尝试使用addInputWithNoConnections
和addOutputWithNoConnections
添加I/O,然后可能手动创建连接。但这似乎有点麻烦,仅仅是为了设置最大帧率。另外,Xcode抱怨这些方法并不存在。
发布于 2014-01-22 16:02:47
AVCaptureConnection
videoMinFrameDuration
已弃用。使用AVCaptureDevice
activeVideoMinFrameDuration
/activeVideoMaxFrameDuration
。AVCaptureDevice类参考中的第一个代码片段回答了这个问题。
发布于 2011-11-14 08:55:42
假设有以下成员。
AVCaptureConnection *videoConnection;
AVCaptureVideoDataOutput *videoOutput;
AVCaptureDeviceInput *videoInput;
然后,您将执行类似以下的操作。我还没有测试过这个。这只是阅读文档后的猜测。
AVCaptureDevice *videoDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if ( videoDevice ) {
NSError *error;
videoInput = [AVCaptureDeviceInput deviceInputWithDevice:videoDevice error:&error];
[captureSession addInput:videoInput];
}
videoOutput = [[AVCaptureVideoDataOutput alloc] init];
//setup video options
if ([captureSession canAddOutput:videoOutput])
[captureSession addOutput:videoOutput];
videoConnection = [[AVCaptureConnection alloc] initWithInputPorts:captureSession.inputs output:videoOutput];
videoConnection.videoMinFrameDuration = CMTimeMake(1, frameRate);
[captureSession addConnection:videoConnection];
我还没有把我自己的代码转换成这个。当我进行转换时,我会返回工作代码。如果向captureSession添加了多个输入,则可能需要显式地将所需的输入加载到数组中。例如:
ports = [NSArray arrayWithObject:videoInput];
然后将其传递到AVCaptureConnection的初始化器中。
发布于 2016-05-10 03:13:02
正如Kiran提到的,从iOS 7开始就不推荐使用AVCaptureConnection videoMinFrameDuration
了。
更具体地说,“更新”Apple's example
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
AVCaptureDeviceInput *input = ... // Following the example
// ** Create and Configure the Video Data Output **
AVCaptureVideoDataOutput *output = [[AVCaptureVideoDataOutput alloc] init];
[session addOutput:output];
output.videoSettings = @{
(NSString *)kCVPixelBufferPixelFormatTypeKey : @(kCVPixelFormatType_32BGRA)
};
device.activeVideoMinFrameDuration = CMTimeMake(1, 15);
https://stackoverflow.com/questions/8101492
复制相似问题