美文网首页
iOS设备音视频采集

iOS设备音视频采集

作者: cjy027 | 来源:发表于2018-01-04 22:35 被阅读0次

一、采集设备

1.iphone/ipad  摄像头

2.屏幕采集

二、视频采集方案

1.使用苹果提供AVFoundation框架进行采集

采集步骤:

1.创建捕获会话,必须要强引用,否则会被释放 (采集数据需要新建一个采集会话,且该会话必须强引用,否则会被释放)

    AVCaptureSession *captureSession = [[AVCaptureSession alloc] init];
    _captureSession = captureSession;

2.寻找相关所需设备

    AVCaptureDevice *videoDevice = [self getVideoDevice:AVCaptureDevicePositionFront]

   AVCaptureDevice *audioDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio];

3.基于输入设备生成输入对象,并添加到会话

    AVCaptureDeviceInput *videoDeviceInput = [AVCaptureDeviceInput deviceInputWithDevice:videoDevice error:nil];

    AVCaptureDeviceInput *audioDeviceInput = [AVCaptureDeviceInput deviceInputWithDevice:audioDevice error:nil];    

    if ([captureSession canAddInput:videoDeviceInput]){

        [captureSession addInput:videoDeviceInput];

    }

    if ([captureSession canAddInput:audioDeviceInput]) {

        [captureSession addInput:audioDeviceInput];

    }

4.创建输出对象并添加到会话

    AVCaptureVideoDataOutput *videoOutput = [[AVCaptureVideoDataOutput alloc] init];

    // 注意:队列必须是串行队列,才能获取到数据,而且不能为空,原因参考接口说明

    dispatch_queue_t videoQueue = dispatch_queue_create("Video Capture Queue", DISPATCH_QUEUE_SERIAL);

  // 设置代理,捕获视频样品数据

    [videoOutput setSampleBufferDelegate:self queue:videoQueue];

    if ([captureSession canAddOutput:videoOutput]) {

        [captureSession addOutput:videoOutput];

    }

dispatch_queue_t audioQueue = dispatch_queue_create("Audio Capture Queue", DISPATCH_QUEUE_SERIAL);

// 设置代理,捕获音频样品数据

    [audioOutput setSampleBufferDelegate:self queue:audioQueue];

    if ([captureSession canAddOutput:audioOutput]) {

        [captureSession addOutput:audioOutput];

    }

    AVCaptureAudioDataOutput *audioOutput = [[AVCaptureAudioDataOutput alloc] init];

    dispatch_queue_t audioQueue = dispatch_queue_create("Audio Capture Queue", DISPATCH_QUEUE_SERIAL);

    [audioOutput setSampleBufferDelegate:self queue:audioQueue];

    if ([captureSession canAddOutput:audioOutput]) {

        [captureSession addOutput:audioOutput];

    }

5.启动会话
    [captureSession startRunning];

6.获取输入设备数据,有可能是音频有可能是视频

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection{

//数据保存于sampleBuffer中

    if (_videoConnection == connection) {

        NSLog(@"采集到视频数据");

    } else {

        NSLog(@"采集到音频数据");

    }

}

demo链接 参考文章https://www.jianshu.com/p/c71bfda055fa

2.使用第三方GPUImage 进行视频采集。(直播中会使用,采集的图像可以添加滤镜,后续附上)


相关文章

  • iOS 直播专题2-音视频采集

    从设备(手机)的摄像头、MIC中采集音频、视频的原始数据 ios的音视频采集可以从AVFoundation框架里采...

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

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

  • iOS设备音视频采集

    一、采集设备 1.iphone/ipad 摄像头 2.屏幕采集 二、视频采集方案 1.使用苹果提供AVFounda...

  • 直播APP流程

    音视频采集 *iOS采集音视频数据,导入AVFoundation框架,从CaptureSession会话的回调中获...

  • 2018年第二次面试题

    1、AFNetworking实现原理 2、iOS音频采集有几种方式 在iOS中有很多方法可以进行音视频采集。如 A...

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

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

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

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

  • iOS视频采集以及写入二

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

  • AVFoundation 简介

    AVFoundation能做什么 AVFoundation 提供了 iOS 基本的音视频处理,包括播放,采集,编辑...

  • iOS 实时音频采集与播放Audio Unit使用

    前言 在iOS中有很多方法可以进行音视频采集。如 AVCaptureDevice, AudioQueue以及Aud...

网友评论

      本文标题:iOS设备音视频采集

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