本文實(shí)例為大家分享了iOS使用AVFoundation展示視頻的具體代碼,供大家參考,具體內(nèi)容如下
成都創(chuàng)新互聯(lián)公司成立與2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元雨湖做網(wǎng)站,已為上家服務(wù),為雨湖各地企業(yè)和個人服務(wù),聯(lián)系電話:13518219792// // Capter2ViewController.m // IosTest // // Created by garin on 13-7-19. // Copyright (c) 2013年 garin. All rights reserved. // #import "Capter2ViewController.h" @interface Capter2ViewController () @end @implementation Capter2ViewController -(void) dealloc { [session release]; [super dealloc]; } - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } - (void)viewDidLoad { [super viewDidLoad]; videoPreviewView=[[UIView alloc] initWithFrame:CGRectMake(10, 10, 320, 200)]; [self.view addSubview:videoPreviewView]; [videoPreviewView release]; // Do any additional setup after loading the view. //在viewdidload調(diào)用下面的函數(shù)顯示攝像信息 [self setupCaptureSession]; // imgView=[[UIImageView alloc] initWithFrame:CGRectMake(10, 230, 320, 100)]; // imgView.backgroundColor=[UIColor grayColor]; // [self.view addSubview:imgView]; // [imgView release]; UIButton *cloeseBtn=[UIButton buttonWithType:UIButtonTypeRoundedRect]; cloeseBtn.frame=CGRectMake(10, 220, 300, 50); [cloeseBtn setTitle:@"Press" forState:UIControlStateNormal]; [cloeseBtn addTarget:self action:@selector(closeBtnClick:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:cloeseBtn]; } -(void) closeBtnClick:(id) sender { [session stopRunning]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (void)setupCaptureSession { NSError *error = nil; // Create the session session = [[AVCaptureSession alloc] init]; // Configure the session to produce lower resolution video frames, if your // processing algorithm can cope. We'll specify medium quality for the // chosen device. session.sessionPreset = AVCaptureSessionPresetLow; // Find a suitable AVCaptureDevice AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; // Create a device input with the device and add it to the session. AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error]; if (!input) { // Handling the error appropriately. } [session addInput:input]; // Create a VideoDataOutput and add it to the session AVCaptureVideoDataOutput *output = [[[AVCaptureVideoDataOutput alloc] init] autorelease]; [session addOutput:output]; // Configure your output. dispatch_queue_t queue = dispatch_queue_create("myQueue", NULL); [output setSampleBufferDelegate:self queue:queue]; dispatch_release(queue); // Specify the pixel format output.videoSettings = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:kCVPixelFormatType_32BGRA] forKey:(id)kCVPixelBufferPixelFormatTypeKey]; // If you wish to cap the frame rate to a known value, such as 15 fps, set // minFrameDuration. //output.minFrameDuration = CMTimeMake(1, 15); //AVCaptureConnection *avcaptureconn=[[AVCaptureConnection alloc] init]; //[avcaptureconn setVideoMinFrameDuration:CMTimeMake(1, 15)]; // Start the session running to start the flow of data [session startRunning]; AVCaptureVideoPreviewLayer* previewLayer = [AVCaptureVideoPreviewLayer layerWithSession: session]; previewLayer.frame = videoPreviewView.bounds; //視頻顯示到的UIView previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill; // [previewLayer setOrientation:AVCaptureVideoOrientationLandscapeRight]; // if(previewLayer.orientationSupported){ // previewLayer.orientation = mOrientation; // } [videoPreviewView.layer addSublayer: previewLayer]; if(![session isRunning]){ [session startRunning]; } // Assign session to an ivar. //[self setSession:session]; } //得到視頻流 - (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection { // Create a UIImage from the sample buffer data return; UIImage *image = [self imageFromSampleBuffer:sampleBuffer]; //得到的視頻流圖片 imgView.image=image; } // Create a UIImage from sample buffer data - (UIImage *) imageFromSampleBuffer:(CMSampleBufferRef) sampleBuffer { // Get a CMSampleBuffer's Core Video image buffer for the media data CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer); // Lock the base address of the pixel buffer CVPixelBufferLockBaseAddress(imageBuffer, 0); // Get the number of bytes per row for the pixel buffer void *baseAddress = CVPixelBufferGetBaseAddress(imageBuffer); // Get the number of bytes per row for the pixel buffer size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer); // Get the pixel buffer width and height size_t width = CVPixelBufferGetWidth(imageBuffer); size_t height = CVPixelBufferGetHeight(imageBuffer); // Create a device-dependent RGB color space CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); // Create a bitmap graphics context with the sample buffer data CGContextRef context = CGBitmapContextCreate(baseAddress, width, height, 8, bytesPerRow, colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst); // Create a Quartz image from the pixel data in the bitmap graphics context CGImageRef quartzImage = CGBitmapContextCreateImage(context); // Unlock the pixel buffer CVPixelBufferUnlockBaseAddress(imageBuffer,0); // Free up the context and color space CGContextRelease(context); CGColorSpaceRelease(colorSpace); // Create an image object from the Quartz image UIImage *image = [UIImage imageWithCGImage:quartzImage]; // Release the Quartz image CGImageRelease(quartzImage); return (image); } @end
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站redsoil1982.com.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
名稱欄目:iOS使用AVFoundation展示視頻-創(chuàng)新互聯(lián)
網(wǎng)頁網(wǎng)址:http://redsoil1982.com.cn/article48/hcjhp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、搜索引擎優(yōu)化、域名注冊、Google、營銷型網(wǎng)站建設(shè)、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容