AudioSession/AudioCaptureSession的分析与使用
来源:互联网 发布:python足彩大数据分析 编辑:程序博客网 时间:2024/06/07 07:04
这个是AudioSession的结构图:
前一个部分已经介绍了AVFoundation对音频录制、播放的一种方法,下面再介绍另外一种:
AVCaptureSession
用这个类的优点在什么地方呢?
(1)可以方面的对输入源进行控制:方便录制音频视频,抓取图片。
(2)采集到数据源方便二次加工,比如音频变声、加背景音乐,视频添加滤镜特效。
(3)定制编解码方法,尽可能采用IOS支持的硬编硬解。比如7.0之前的AAC MPEG-4
当然8.0之后都支持H264的硬编解码。
所以如果想做一些复杂点的音视频APP,这个类是经常用到也是非常重要的。
先来看看AVCaptureSession的整体结构:
因为这里我们拿到的是数据流,所以要想进行本地存储还需要用到一个类AVAsset。
看看我们到底怎么用这个东东:
下面这个图描述了AVCaptureSession使用的基本流程
(1) 实例化AVCaptureSession(橙色部分)将输入输出源绑定到AVCaptureSession上。
输入源设置为mic:
AVCaptureDevice *mic = [AVCaptureDevicedefaultDeviceWithMediaType:AVMediaTypeAudio];
AVCaptureDeviceInput *audioinput = [AVCaptureDeviceInputdeviceInputWithDevice:mic error:nil];
输出源设置为AVCaptureAudioDataOutput:
(2) 实例化紫色部分
紫色部拿到录音数据如何写到本地呢?这个时候就需要实例化AVAsset:
_AudioWriteInput = [[AVAssetWriterInputalloc]initWithMediaType:AVMediaTypeAudiooutputSettings:setting];
参数设置:
NSDictionary *setting = [NSDictionarydictionaryWithObjectsAndKeys:
[ NSNumber numberWithInt: kAudioFormatMPEG4AAC], AVFormatIDKey,
[ NSNumber numberWithInt: _AudioChannels], AVNumberOfChannelsKey,
[ NSNumber numberWithFloat: _Audiosamplerate], AVSampleRateKey,
[ NSNumber numberWithInt: 64000 ], AVEncoderBitRateKey,
_AudioChannelLayoutData,AVChannelLayoutKey,
nil];
音频相关参数设置参考另一篇博客:
音频格式详解:WAV
(3) 启动整个音频管道,开始进行录音
(4) 音频回调方法会接收到录制的音频数据,将数据传递给AVAsset,写入到本地文件中。
写入音频数据:
[_AudioWriteInputappendSampleBuffer:sampleBuffer];
写入音频时间戳:
[_AudioWriterstartSessionAtSourceTime:startTime];
- AudioSession/AudioCaptureSession的分析与使用
- ios中录音功能的实现AudioSession的使用
- AudioSession
- 使用AudioSession实现音乐后台播放功能
- RabbitMQ的使用与分析
- ThreadPoolExecutor的分析与使用
- nanomsg的使用与分析
- WebView的分析与使用
- Socket的分析与使用
- Bitmap 的分析与使用
- ThreadLocal的分析与使用
- Bitmap的分析与使用
- ClassLoader的分析与使用
- AudioSession详解
- IOS AudioSession
- iOS AudioSession
- AudioSession详解
- OpenWrt使用的文件系统理解与分析
- Altium Designer格式原理图怎样转换成OrCAD格式
- 滚动view的嵌套。
- Bitmap与BitmapFactory.Options
- block----
- 项目实战之中小网站数据缓存的设计与实现
- AudioSession/AudioCaptureSession的分析与使用
- UITableView 以及 UITableViewCell 的重用机制
- 63 change事件监控raido选中效果
- HDU 2124 Repair the Wall
- 菜鸟的安卓实习之路---http 中的post 和get 方法
- 时间都去哪了
- JAVA 连接数据库
- 自定义相机预览界面
- sizeof,终极无惑『转』