AudioSession/AudioCaptureSession的分析与使用

这个是AudioSession的结构图:


前一个部分已经介绍了AVFoundation对音频录制、播放的一种方法,下面再介绍另外一种:

AVCaptureSession

用这个类的优点在什么地方呢?

(1)可以方面的对输入源进行控制:方便录制音频视频,抓取图片。

(2)采集到数据源方便二次加工,比如音频变声、加背景音乐,视频添加滤镜特效。

(3)定制编解码方法,尽可能采用IOS支持的硬编硬解。比如7.0之前的AAC MPEG-4

当然8.0之后都支持H264的硬编解码。

所以如果想做一些复杂点的音视频APP,这个类是经常用到也是非常重要的。

先来看看AVCaptureSession的整体结构:

我们用这个结构可以做哪些事情呢?
(1)录制音频、视频、音频+视频
(2)录制过程中录制界面展示
(3)静态图片抓取
(4)中间层截获音视频数据流,实现音频特效,视频特效。

因为这里我们拿到的是数据流,所以要想进行本地存储还需要用到一个类AVAsset。

看看我们到底怎么用这个东东:

下面这个图描述了AVCaptureSession使用的基本流程

(1) 实例化AVCaptureSession(橙色部分)将输入输出源绑定到AVCaptureSession上。

输入源设置为mic:

        AVCaptureDevice *mic = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio];

        AVCaptureDeviceInput *audioinput = [AVCaptureDeviceInput deviceInputWithDevice:mic error:nil];

输出源设置为AVCaptureAudioDataOutput

(2) 实例化紫色部分

紫色部拿到录音数据如何写到本地呢?这个时候就需要实例化AVAsset:

_AudioWriteInput = [[AVAssetWriterInput alloc]initWithMediaType:AVMediaTypeAudio outputSettings:setting];

    参数设置:

    NSDictionary *setting = [NSDictionary dictionaryWithObjectsAndKeys:

                            [ NSNumber numberWithInt: kAudioFormatMPEG4AAC], AVFormatIDKey,

                            [ NSNumber numberWithInt: _AudioChannels], AVNumberOfChannelsKey,

                            [ NSNumber numberWithFloat: _Audiosamplerate], AVSampleRateKey,

                            [ NSNumber numberWithInt: 64000 ], AVEncoderBitRateKey,

                             _AudioChannelLayoutData, AVChannelLayoutKey,

    nil];

音频相关参数设置参考另一篇博客:

音频格式详解:WAV

(3)  启动整个音频管道,开始进行录音

(4)  音频回调方法会接收到录制的音频数据,将数据传递给AVAsset,写入到本地文件中。

写入音频数据:

[_AudioWriteInput appendSampleBuffer:sampleBuffer];

写入音频时间戳:

[_AudioWriter startSessionAtSourceTime:startTime];

 










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值