美文网首页
IOS视频采集

IOS视频采集

作者: 越天高 | 来源:发表于2020-08-11 14:55 被阅读0次

一定要倒入 AVFoundtion #import <AVFoundation/AVFoundation.h>

AVFoundtion 框架 => 了解框架哪些类,每个类有什么用

AVCaptureDevice : 摄像头,麦克风
AVCaptureInput 输入端口
AVCaptureOutput 设备输出
AVCaptureSession 管理输入到输出数据流
AVCaptureVideoPreviewLayer : 展示采集 预览View
简单使用

//1.创建捕获会话 : 设置分辨率
    AVCaptureSession *session = [[AVCaptureSession alloc] init];
    
    //设置分辨率 720p
    session.sessionPreset = AVCaptureSessionPreset1280x720;
    
    //2. 建立输入输出轨道
    //2.1获取 设备
    //这里设备有很多的额属性可以设置 activeVideoMinFrameDuration 采样率一秒有多少帧的数据 平时10 默认60
    AVCaptureDevice *device ;
    
    for ( AVCaptureDevice *deviceNow  in [AVCaptureDevice devices])
    {
        NSLog(@"---%@", deviceNow);//[Back Camera] [Front Camera] [iPhone 麦克风]
        if (deviceNow.position == AVCaptureDevicePositionFront)
        {
            device = deviceNow;
        }
    }
    //2.2设备输入对象
    AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];
    
    //2.3将输入添加到捕获会话
    if (input != nil)
    {
        if ([session canAddInput:input])
        {
            [session addInput:input];
        }
        
    }
    
    //3.视频输出:设置视频原数据格式:YUV,RGB YUV
    //苹果不支持YUA渲染,只支持RGB渲染 -> YUV => RGB
    //3.1创建输出轨道
    AVCaptureVideoDataOutput *videoOutput = [[AVCaptureVideoDataOutput alloc] init];
    //3.2设置视频源数据格式videoSettings 设置视频原数据格式 YUV FULL
    videoOutput.videoSettings = @{(NSString *)(kCVPixelBufferPixelFormatTypeKey):@(kCVPixelFormatType_420YpCbCr8BiPlanarFullRange)};
    
    
    //3.2设置输出代理,捕获每一帧的数据
    [videoOutput setSampleBufferDelegate:self queue:dispatch_queue_create("SERIAL", DISPATCH_QUEUE_SERIAL)];
    //3.2 捕获设备,与输出设备相连接
    AVCaptureConnection *connection = [videoOutput connectionWithMediaType:AVMediaTypeVideo];
//    NSLog(@"---1%@",connection);
    //3.3给回话添加输出轨道
    if ([session canAddOutput:videoOutput])
    {
        [session addOutput:videoOutput];
    }
    
    //4.开启会话
    // 在输入与输出对象中,建立一个连接,要在添加到会话之后才可以拿到连接
    [session startRunning];
    
    connection = [videoOutput connectionWithMediaType:AVMediaTypeVideo];
    
//    NSLog(@"---2%@",connection);
    
    //设置图层预览
    AVCaptureVideoPreviewLayer *previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:session];
    
    previewLayer.frame = self.view.bounds;
    [self.view.layer addSublayer:previewLayer] ;

//代理

#pragma mark - AVCaptureVideoDataOutputSampleBufferDelegate -
- (void)captureOutput:(AVCaptureOutput *)output didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
{
    NSLog(@"Image %@", sampleBuffer);
}

相关文章

  • iOS视频开发(一):视频采集

    前言 作为iOS音视频开发之视频开发的第一篇,本文介绍iOS视频采集的相关概念及视频采集的工作原理,后续将对采集后...

  • iOS视频开发(二):视频H264硬编码

    前言 上一篇《iOS视频开发(一):视频采集》我们已经介绍了如何采集iOS摄像头的视频数据,采集到的原始视频数据量...

  • iOS-音视屏采集

    概述 音视屏采集分音频采集和视频采集 在iOS中,可以同步采集音频和视频 采集的API在AVFoundation框...

  • iOS - 采集音视频及写入文件

    �音视频采集包括两部分:视频采集和音频采集。在iOS中可以同步采集视频与音频,通过系统框架AVFoundation...

  • iOS直播---音/视频编码(三)

    iOS视频直播---主要的概念(一)iOS直播---音/视频采集/压缩(二)iOS直播---音/视频编码(三)

  • iOS视频采集以及写入二

    概述 音视频采集包括两部分:视频采集音频采集 在iOS开发中,是可以同步采集视频&音频的,使用方式也非常简单 相关...

  • iOS下WebRTC视频编码

    前言 在 iOS下WebRTC视频采集 一文中,向大家介绍了 WebRTC 是如何在 iOS下进行视频采集的。本文...

  • iOS 摄像头,进行音视频的数据采集

    iOS 摄像头,进行音视频的数据采集,主要分为以下几个步骤: 1 音视频的采集,ios 中,利用 AVCaptur...

  • IOS视频采集

    一定要倒入 AVFoundtion #import AVFoundtion 框架 => 了解框架哪些类,每个类有什...

  • iOS 视频采集

    前言 AVFoundation框架是iOS中很重要的框架,所有与音视频相关的软硬件控制都在这个框架里。本文主要介绍...

网友评论

      本文标题:IOS视频采集

      本文链接:https://www.haomeiwen.com/subject/xpqsdktx.html