亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

通過AVFoundation框架獲取攝像頭數據

2019-11-09 15:02:26
字體:
來源:轉載
供稿:網友
一、概述從iOS4開始,AVFoundation框架增加了幾個類,AVCaptureDevice、AVCapturesession等,可以獲取攝像頭的數據,而不會彈出類似于ImagePicker一樣的界面,我們可以將數據轉為一張張的圖片,然后我們可以即時顯示在視圖上,也可以使用FFMPEG或者其它的視頻編碼工具,來合成視頻。二、步驟第一步:創建AVCaptureSession,添加輸入,輸出源#import <AVFoundation/AVFoundation.h>//創建并配置一個攝像會話,并啟動。- (void)setupCaptureSession{    NSError *error = nil;    //創建會話    AVCaptureSession *session = [[AVCaptureSession alloc] init];    //設置視頻質量    session.sessionPReset = AVCaptureSessionPresetMedium;    //獲取合適的AVCaptureDevice    AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];    //創建設備輸入流,并增加到會話。    AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device                                                                    error:&error];    if (!input) {        //處理錯誤    }    [session addInput:input];    //創建一個視頻輸出流,并增加到會話。    AVCaptureVideoDataOutput *output = [[[AVCaptureVideoDataOutput alloc] init] autorelease];    [session addOutput:output];    //配置輸出流    dispatch_queue_t queue = dispatch_queue_create("myQueue", NULL);    [output setSampleBufferDelegate:self queue:queue];    dispatch_release(queue);    //指定像素格式。    output.videoSettings = [NSDictionary dictionaryWithObject:      [NSNumber numberWithInt:kCVPixelFormatType_32BGRA] forKey:(id)kCVPixelBufferPixelFormatTypeKey];    //設置FPS    output.minFrameDuration = CMTimeMake(1, 15);    //啟動會話    [session startRunning];    //將會話與當前控制器關聯    [self setSession:session];}第二步:實現AVCaptureVideoDataOutputSampleBufferDelegate協議方法 //當采樣數據被寫入緩沖區時調用- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer         fromConnection:(AVCaptureConnection *)connection{    //抽取采樣數據,合成UIImage對象    UIImage *image = [self imageFromSampleBuffer:sampleBuffer];    //后續自定義處理    xxxxxxxx}//抽取采樣數據,合成UIImage對象- (UIImage *)imageFromSampleBuffer:(CMSampleBufferRef) sampleBuffer{    CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);        //鎖定像素緩沖區的起始地址    CVPixelBufferLockBaseAddress(imageBuffer,0);    //獲取每行像素的字節數    size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer);        //獲取像素緩沖區的寬度和高度    size_t width = CVPixelBufferGetWidth(imageBuffer);    size_t height = CVPixelBufferGetHeight(imageBuffer);    //創建基于設備的RGB顏色空間    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();    if (!colorSpace)    {        NSLog(@"CGColorSpaceCreateDeviceRGB failure");        return nil;    }    //獲取像素緩沖區的起始地址    void *baseAddress = CVPixelBufferGetBaseAddress(imageBuffer);        //獲取像素緩沖區的數據大小    size_t bufferSize = CVPixelBufferGetDataSize(imageBuffer);    //使用提供的數據創建CGDataProviderRef    CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, baseAddress, bufferSize,NULL);        //通過CGDataProviderRef,創建CGImageRef    CGImageRef cgImage =        CGImageCreate(width,                        height,                        8,                        32,                        bytesPerRow,                        colorSpace,                        kCGImageAlphaNoneSkipFirst | kCGBitmapByteOrder32Little,                        provider,                        NULL,                        true,                        kCGRenderingIntentDefault);    CGDataProviderRelease(provider);    CGColorSpaceRelease(colorSpace);    //創建UIImage    UIImage *image = [UIImage imageWithCGImage:cgImage];    CGImageRelease(cgImage);    //解鎖像素緩沖區起始地址    CVPixelBufferUnlockBaseAddress(imageBuffer, 0);    return image;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91国产视频在线播放| 亚洲欧美日韩成人| 久久视频中文字幕| 亚洲欧美一区二区三区久久| 国产精品久久久久久久久粉嫩av| 亚洲一区二区三区视频播放| 国产精品久久久久9999| 国产网站欧美日韩免费精品在线观看| xvideos亚洲人网站| 国产免费一区二区三区在线观看| 久久免费视频这里只有精品| 7m第一福利500精品视频| 一个色综合导航| 日韩极品精品视频免费观看| 久久久久久久999精品视频| 日韩电影中文字幕一区| 亚洲免费av网址| 国产精品视频一区二区三区四| 法国裸体一区二区| 国产91精品久久久久久| 久久久久久久久久久久久久久久久久av| 日韩精品电影网| 亚洲自拍偷拍色片视频| 中文字幕少妇一区二区三区| 久久精品国产99国产精品澳门| 日本欧美在线视频| 亚洲一区二区三区四区在线播放| 久久精品中文字幕一区| 成人免费视频xnxx.com| 欧美成人精品在线视频| 亚洲精品不卡在线| 日本不卡视频在线播放| 亚洲国产精品一区二区三区| 欧美激情视频网| 亚洲va欧美va国产综合剧情| 国产成人自拍视频在线观看| 亚洲成人精品久久| 美女撒尿一区二区三区| 国产v综合v亚洲欧美久久| 精品久久久免费| 欧美日韩一区二区三区在线免费观看| 亚洲一区二区中文| 欧美大片在线免费观看| 国产一区私人高清影院| 国产亚洲人成a一在线v站| 亚洲精品国产精品国自产在线| 国产精品入口福利| 精品视频久久久久久久| 亚洲高清久久网| 欧美日韩国内自拍| 国产91精品久久久久| 国产在线999| 欧美午夜精品久久久久久人妖| 2019中文字幕在线| 亚洲伊人久久大香线蕉av| 国产精品久久77777| 亚洲欧美中文日韩在线| 精品亚洲一区二区三区在线播放| 日韩中文字幕在线观看| 亚洲高清免费观看高清完整版| 国产精品第一页在线| 久久九九亚洲综合| 亚洲欧美国产精品va在线观看| 国产精品露脸av在线| 亚洲性无码av在线| 操日韩av在线电影| 国产精品久久久久久久久久东京| 久久天天躁狠狠躁老女人| 精品日本高清在线播放| 日韩美女主播视频| 日韩av手机在线观看| 国产精品色午夜在线观看| 国产精品日韩专区| 91精品国产高清自在线看超| 日韩美女av在线| 欧美性猛交xxxx乱大交3| 成人在线观看视频网站| 久久久久久久久久亚洲| 欧美日韩激情美女| 欧美一区二区三区精品电影| 国产欧美一区二区三区在线看| 亚洲天堂开心观看| 亚洲精品www久久久久久广东| 欧美丰满少妇xxxxx做受| 日韩网站免费观看高清| 欧美午夜丰满在线18影院| 国产日韩欧美自拍| 久久久久在线观看| 777精品视频| 精品国产区一区二区三区在线观看| 播播国产欧美激情| 久久九九全国免费精品观看| 2019中文字幕免费视频| 久久久视频免费观看| 日韩久久免费电影| www.99久久热国产日韩欧美.com| xxx一区二区| 91久久在线视频| 欧美诱惑福利视频| 福利二区91精品bt7086| 国产激情视频一区| 欧美另类暴力丝袜| 亚洲美腿欧美激情另类| 91久热免费在线视频| 欧美激情极品视频| 久久久久久久久久av| 日韩av免费在线观看| 亚洲国产成人精品久久| 亚洲成人精品视频在线观看| 国产+成+人+亚洲欧洲| 成人激情视频在线播放| 亚洲色图第一页| 欧美极品少妇xxxxⅹ裸体艺术| 日本久久久久久久久| 秋霞成人午夜鲁丝一区二区三区| 亚洲欧美成人精品| 精品亚洲一区二区三区| 97久久精品人人澡人人爽缅北| 日韩精品一二三四区| 91精品在线国产| 777午夜精品福利在线观看| 久久视频免费在线播放| 欧美亚洲午夜视频在线观看| 国产欧美精品一区二区三区-老狼| 丰满岳妇乱一区二区三区| 久久亚洲一区二区三区四区五区高| 亚洲欧美日韩视频一区| 韩国视频理论视频久久| 亚洲网站在线看| 亚洲黄一区二区| 欧美美女操人视频| 欧美成人午夜激情在线| 在线精品91av| 欧美中文字幕在线视频| 久久中文字幕一区| 国产视频在线一区二区| 精品爽片免费看久久| 亚洲男女自偷自拍图片另类| 国产亚洲精品久久久久久| 久久久久久久亚洲精品| 欧美丰满少妇xxxxx做受| 精品久久久久久久久中文字幕| 38少妇精品导航| 97久久精品人搡人人玩| 国产性猛交xxxx免费看久久| 97欧美精品一区二区三区| 黑人巨大精品欧美一区二区三区| 精品久久久999| 日韩av在线免费看| 亚洲小视频在线| 欧美日韩在线第一页| 日韩精品中文字| 国产精品第100页| 97免费在线视频| 色偷偷偷亚洲综合网另类| 国产精品自在线| 97人人爽人人喊人人模波多| 黄色一区二区三区| 欧美日韩中国免费专区在线看| 欧美日韩亚洲一区二| 中文字幕国产日韩| 亚洲日韩中文字幕| 久久影视三级福利片| 国产99久久精品一区二区永久免费|