首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在iOS 5中使用AVFoundation设置最大帧率

在iOS 5中使用AVFoundation设置最大帧率
EN

Stack Overflow用户
提问于 2011-11-12 08:25:49
回答 3查看 17.7K关注 0票数 18

我相信这以前是用captureOutput.minFrameDuration做的。但是,这在iOS 5中已被弃用。

相反,我显然需要使用AVCaptureConnectionvideo.minFrameDuration。所以我有我的输入,我的输出,我把它们都添加到捕获会话中--我从哪里可以访问捕获连接?我想它是由会话为我创建的,但是在哪里呢?

我可以尝试使用addInputWithNoConnectionsaddOutputWithNoConnections添加I/O,然后可能手动创建连接。但这似乎有点麻烦,仅仅是为了设置最大帧率。另外,Xcode抱怨这些方法并不存在。

EN

回答 3

Stack Overflow用户

发布于 2014-01-22 16:02:47

AVCaptureConnection videoMinFrameDuration已弃用。使用AVCaptureDevice activeVideoMinFrameDuration/activeVideoMaxFrameDurationAVCaptureDevice类参考中的第一个代码片段回答了这个问题。

票数 5
EN

Stack Overflow用户

发布于 2011-11-14 08:55:42

假设有以下成员。

代码语言:javascript
复制
AVCaptureConnection         *videoConnection;
AVCaptureVideoDataOutput    *videoOutput;
AVCaptureDeviceInput        *videoInput;

然后,您将执行类似以下的操作。我还没有测试过这个。这只是阅读文档后的猜测。

代码语言:javascript
复制
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添加了多个输入,则可能需要显式地将所需的输入加载到数组中。例如:

代码语言:javascript
复制
ports = [NSArray arrayWithObject:videoInput];

然后将其传递到AVCaptureConnection的初始化器中。

票数 2
EN

Stack Overflow用户

发布于 2016-05-10 03:13:02

正如Kiran提到的,从iOS 7开始就不推荐使用AVCaptureConnection videoMinFrameDuration了。

更具体地说,“更新”Apple's example

代码语言:javascript
复制
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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8101492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档