音频-Multichannel Mixer Unit 播放
2016-06-03 14:42
218 查看
多通道混频播放
1、了解 AUGraphAUGraph 是一个 Audio Unit 的容器,它主要用来管理 Audio Unit,用于将多个Audio Unit 连接处理等。
AUNode 是在 AUGraph 里面的最小单位,用来关联 Audio Unit。
AUGraph 初始化流程:
开启 AUGraph:
停止 AUGraph:
2、理解 Remote I/O Unit
Remote I/O Unit 属于 Audio Unit 其中之一。它分为输出端与输入端,输入端为麦克风,输出端为喇叭、耳机等。如果使用输入、输出,那必须设置它与硬件连接起来。
如上图所示,Remote I/O Unit 分为Element 0、Element 1。其中Element 0 控制着输出端,Element 1 控制着输入端,且每个Element又分为 Input scope与 Output scope。我们必须将Element 0 的 Output scope 与喇叭接上,Element 1的 Input scope 与麦克风接上,代码里面实现:
上面代码里面是将喇叭与Element 0 连接(outBus = 0),麦克风与Element 1 连接(inputBut = 1)。
3、Multichannel Mixer Unit 播放
了解 Multichannel Mixer Unit
多通道混频单元可以将任意的数量的单声道或立体声合成一个单一的立体声输出。
我们这个示例给 Multichannel Mixer Unit 设置了两个输入端,然后将输出端连接到Remote I/O Unit 上面。
两个单元的连接如下:
理解如何设置音频格式
每个 Audio Unit 在互相串接后,就会把前一个 Audio Unit 的输出送到下一个 Audio Unit 的输入端,因此我们要设置每个 Audio Unit 的输入与输出格式,让音频流可以正确通过每一个 Audio Unit。
Multichannel Mixer Unit 单元音频格式设置:
如果它的输入端是连接的一个音频单元的输出,那它的格式就跟随这个音频单元的输出格式;我们这里是直接从音频文件获取的格式,那么就要根据这个格式自己来设置它的输入格式。
输出格式只要设置采样率格式。
单声道和立体声是通过音频文件的通道得出来的,单声道通道为 1 ,立体声通道为 2。
获取音频格式代码如下:
通过通道数设置是单声道格式还是立体声格式:
最后我们设置 Multichannel Mixer Unit 的输入格式和输出格式:
Remote I/O 单元音频格式设置:
还需要设置一个应用在输出硬件上面的音频格式,它的格式和Multichannel Mixer Unit 单元的输入格式是一致的,通过如下代码设置:
理解渲染回调函数数据填充
我们根据每次要填充的帧数 inNumberFrames 以及 总的帧数 frameTotalForSound,把存储在内存中的 dataInLeft 和 dataInRight 填充到 ioData 里面,如下代码所示:
相关文章推荐
- STM32 ADC结合DMA数据采样与软件滤波处理
- 微软的私有云存储协议SMB 3.0的多通道应用
- 多通道(Multichannel)单通道(singlechannel)图像概念(图像基础)
- STM32F10x_ADC三通道DMA连续转换(3通道、软件单次触发)
- STM32F10x_ADC三通道逐次转换(单次、单通道软件触发)
- ios AudioUnit bluetooth 录音 播放 实现
- ios AudioUnit 录制播放 pcm
- ios AudioUnit 播放 pcm 数据
- iOS音频编程之实时语音通信
- NRF24L01多对一、多通道通讯关键代码
- Altium Designer 使用笔记 总结
- ios开发AudioUnit的录制与播放功能,双工模式下的回音抑制以及降噪
- AstroNova堆叠式数据采集系统DAXUS
- AstroNova智能数据记录仪DDX100
- AstroNova多通道便携式数据采集系统TMX-18
- 内存多通道对fluent运算速度的影响
- 编译speex / speexdsp for iOS audiounit边录边播,audioqueue边录边播
- 大规模DDoS攻击来了宝宝一开始也慌了
- Java Web开发——Filter过滤器