首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用AVFoundation框架设置视频输入

如何使用AVFoundation框架设置视频输入
EN

Stack Overflow用户
提问于 2015-08-17 22:50:20
回答 1查看 165关注 0票数 0

我从另一篇stackoverflow帖子中得到了这段代码,它似乎很好地完成了我想做的事情:

代码语言:javascript
复制
- (void)captureOutput:(AVCaptureOutput *)captureOutput
didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer
       fromConnection:(AVCaptureConnection *)connection
{

    CFDictionaryRef metadataDict = CMCopyDictionaryOfAttachments(NULL,
                                                                 sampleBuffer, kCMAttachmentMode_ShouldPropagate);
    NSDictionary *metadata = [[NSMutableDictionary alloc]
                              initWithDictionary:(__bridge NSDictionary*)metadataDict];
    CFRelease(metadataDict);
    NSDictionary *exifMetadata = [[metadata
                                   objectForKey:(NSString *)kCGImagePropertyExifDictionary] mutableCopy];
    float brightnessValue = [[exifMetadata
                              objectForKey:(NSString *)kCGImagePropertyExifBrightnessValue] floatValue];
    NSLog(@"AVCapture: %f", brightnessValue);
}

但由于我对AVFoundation了解不多,我不知道如何使用它……如何获取AVCaptureOutput、CMSampleBufferRef和AVCaptureConnection对象?

或者换句话说,“如何使用AVFoundation框架设置视频输入”?

EN

回答 1

Stack Overflow用户

发布于 2015-08-17 23:46:29

下面的代码应该可以帮助您设置具有SampleBufferDelegate的CaptureSession:

代码语言:javascript
复制
AVCaptureSession *session = [[AVCaptureSession alloc] init];

AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error];
[session addInput:input];

AVCaptureVideoDataOutput *output = [[AVCaptureVideoDataOutput alloc] init];
[session addOutput:output];

dispatch_queue_t queue = dispatch_queue_create("VideoQueue", NULL);
[output setSampleBufferDelegate:self queue:queue];

NSDictionary *outputSettings = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_32BGRA]
                                                           forKey:(id)kCVPixelBufferPixelFormatTypeKey];
[output setVideoSettings:outputSettings];

output.alwaysDiscardsLateVideoFrames = YES;

更多信息请参考:https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/04_MediaCapture.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32053460

复制
相关文章

相似问题

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