美文网首页
视频开发基础概念知识二

视频开发基础概念知识二

作者: woniu | 来源:发表于2019-06-10 14:58 被阅读0次

一、基本概念

AVCaptureSession

苹果为了管理从摄像头、麦克风等设备捕获到的信息,写了一个AVCaptureSession的类来对输入和输出数据进行管理。AVFoundation官方文档

二、详细对象的介绍

1、AVCaptureSession

AVCaptureSession对象是用来管理采集和输出数据的,它负责协调从哪里采集数据,之后再输出到哪里。

2、 AVCaptureDevice

一个AVCaptureDevice对象代表一个物理采集设备,我们可以通过该对象来设置物理设备的属性。

3、AVCaptureInput

AVCaptureInput是AVCaptureSession的一个抽象类,AVCaptureSession的输入端必须是AVCaptureInput的实现类。这里我们用到的AVCaptureDeviceInput,作为采集设备输入端。

4、AVCaptureOutput

AVCaptureOutput是AVCaptureSession的一个抽象类,AVCaptureSession的输出端必须是AVCaptureOutput的实现类。这里我们用到的AVCaptureVideoDataOutput,作为视频数据的输出端。

5、AVCaptureConnection

AVCaptureConnection是AVCaptureSession用来建立和维护AVCaptureInput和AVCaptureOutput之间的连接的。

6、 AVCaptureVideoPreviewLayer

AVCaptureVideoPreviewLayer是AVCaptureSession的一个属性,集成自CALayer,通过类名我们可以知道这个layer是用来预览采集到的视频图像的,直接把这个layer加到UIView上面就可以实现采集道德视频实时预览了哦。_

三、视频采集の步骤

1、建立并初始化输入AVCaptureInput和AVCaptureOutput。
2、创建并初始化AVCaptureSession,然后把AVCaptureInput、AVCaptureOutput添加到AVCaptureSession中。
3、调用AVCaptureSession的startRunning开始采集。

四、初始化输入(摄像头camera)

通过AVCaptureDevice的devicesWithMediaType:方法获取摄像头,iPhone有前后摄像头,此处获取的是一个设备的数组,然后从数组里面拿到我们想要的前后摄像头,然后再将AVCaptureDevice转化为AVCaptureDeviceInput,用于添加到AVCaptureSession中。

// 获取所有摄像头
NSArray *cameras= [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
// 获取前置摄像头
NSArray *captureDeviceArray = [cameras filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"position == %d", AVCaptureDevicePositionFront]];
if (!captureDeviceArray.count)
{
    NSLog(@"获取前置摄像头失败");
    return;
}
// 转化为输入设备 
AVCaptureDevice *camera = captureDeviceArray.firstObject;
NSError *errorMessage = nil;
self.captureDeviceInput = [AVCaptureDeviceInput deviceInputWithDevice:camera error:&errorMessage];
if (errorMessage)
{
    NSLog(@"AVCaptureDevice转AVCaptureDeviceInput失败");
    return;
}

注释:
1、captureDeviceArray.firstObject第一个数据就是前置摄像头,如果是lastObject那么就是后置摄像头。
2、errorMessage用于获取异常。

五、初始化输出

1、初始化视频输出,设置视频数据格式,设置采集数据的回调线程。
2、下面视频输出格式选的是kCVPixelFormatType_420YpCbCr8BiPlanarFullRange,YUV数据格式。

重要单词:
Capture 英['kæptʃə] 美 ['kæptʃɚ] n.捕获、俘虏 vt.俘获、获得

相关文章

  • 视频开发基础概念知识二

    一、基本概念 AVCaptureSession 苹果为了管理从摄像头、麦克风等设备捕获到的信息,写了一个AVCap...

  • 视频开发基础概念知识一

    一、视频编码 为什么进行视频编码呢?因为原始视频数据非常大,会造成存储和传输的困难,所以视频文件都需要在录制完成后...

  • 视频开发基础概念知识三

    一、流媒体(直播需要用到流媒体) 流媒体开发:网络层负责传输(socket),协议层负责网络打包(RTMP/HLS...

  • Android音视频开发-前言

    Android音视频开发,我想很多开发者都知道这个概念,音视频开发不仅需要掌握图像、音频、视频的基础知识,并且还需...

  • Android 音视频开发核心知识点笔记整合

    很多开发者都知道Android音视频开发这个概念,音视频开发不仅需要掌握图像、音频、视频的基础知识,并且还需要掌握...

  • Android视频开发基础

    Android视频开发基础(一) Android视频开发基础(二)

  • 小程序云开发学习笔记--目录

    目录 基础课程 1.小程序 · 云开发 — 概念基础-->视频教程链接 2.小程序 · 云开发 — 操作基础-->...

  • 视频开发基础知识

    本文主要介绍在用FFmpeg进行视频相关开发时涉及到的一些视频基本概念。 一、视频帧 在H264协议里,图像以组(...

  • Android Binder机制,共享内存实现原理

    导读 移动开发知识体系总章(Java基础、Android、Flutter) IPC机制简介 IPC基础概念介绍 B...

  • 音视频开发基础概念

    对一个初学者来说,刚刚接触音视频的学习难免会遇到各种个样的术语,一开始我也是云里雾里的,到现在一点一点接触积累,形...

网友评论

      本文标题:视频开发基础概念知识二

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