首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

深入理解 AudioUnit(二) ~ Mixing Unit & Effect Unit & Converter Unit

本系列的 第一篇 中介绍到了 AudioUnit 中和系统硬件交互的 IO Unit, 以及如何使用它进行音频的采集和播放....本文是该系列的第二篇, 将会介绍 AudioUnit 中另外 四类 非常重要的 AudioUnit: Mixing 、 Effect Unit 、 Converter Unit 以及 Generator...当 AudioUnit 的输入和输出的格式不一致时, AudioUnit 内部也会使用该 unit 进行自动转换. 所以大部分情况下我们都不需要手动去转换....总结 本文属于《深入理解 AudioUnit》系列的第二篇, 主要介绍了 Mixing AudioUnit 的三种类型和结构, 详细介绍了他们自己的特点....同时了解了 Effect、Converter、Generator 这几类 AudioUnit. 下一篇我们将会了解到 如何把我们了解到的这些 AudioUnit 串联起来, 实现一个具体的场景.

96321
您找到你想要的搜索结果了吗?
是的
没有找到

深入理解 AudioUnit(一) ~ IO Unit 结构和运行机制

Apple 平台上如果涉及到音频采集, 很难避开 AudioUnit 这个工具库, AudioUnit 是 Audio Toolbox 下的一套有年头的 C API, 功能相对也比较强大, 虽然苹果最近几年推出并逐渐在其基础之后完善了一套...接下来将带大家剖析 AudioUnit 的内部原理和丰富多样的使用方式, 如果你在做涉及到声音采集和处理的工作, 希望能带大家深入浅出地摸透 AudioUnit....AudioUnit 介绍 如下图, 可见 iOS 上所有的音频基础都是基于 AudioUnit 的, 比如 AudioToolbox、Media Player, AV Foundation 等都是在 AudioUnit...AudioUnit 提供了一个通用的方法, 我们问一个 AudioUnit 要数据, 可以通过 AudioUnitRender 函数来实现....了解了 RemoteIO 和 VPIO 各自的特点 Ref: AudioUnit Hosting Guide AudioUnit Samples @ GitHub

2K33

Audio Unit播放PCM文件

属性; AudioUnitGetPropertyInfo 用于在设置或者读取属性之前,获取属性可以修改的大小和是否可写,避免error的产生; AudioUnitInitialize 是初始化AudioUnit...; 3、初始化AudioBufferList,mNumberBuffers和mNumberChannels设置为1,需要注意的是mData,初始化mData的时候需要手动分配内存; 4、设置AudioUnit...的回调函数,注意是OUTPUT_BUS的输入域的回调;调用AudioUnitInitialize初始化AudioUnit; 6、调用AudioOutputUnitStart开始,AudioUnit会调用之前设置的...本文主要介绍AudioUnit如何播放声音,后续的两篇文章介绍AudioUnit的录音场景还有配合AudioConvert播放各种格式的文件。...Demo的代码逻辑已经经过精简,以较为简练的代码介绍使用AudioUnit的必需步骤。看似简单的功能,也是看了很多篇苹果官方的文档才明白。

2.9K60

Audio Unit录音(播放伴奏+耳返)

具体细节 1、初始化AudioUnit,类似Audio Unit播放PCM文件,不过这次要设置AVAudioSession的Category为AVAudioSessionCategoryPlayAndRecord...,同时要开启AudioUnit的Record功能,同时要设置RecordCallback函数; 2、加载并打开伴奏文件,在PlayCallback的回调中,读取伴奏数据并塞给AudioUnit; 3...、在RecordCallback函数中调用AudioUnitRender加载录音数据到bufferList,并在PlayCallback的回调中,把bufferList的数据copy给AudioUnit...总结 Demo地址 在学习一段时间后,发现AudioUnit的API非常清晰,在出现问题后都能较快定位,值得学习这种API设计。...在写demo过程中,对AudioUnit有了更好的认知,下一篇介绍AudioConvert和AudioUnit的配合使用,播放aac、mp3、m4a等音频文件。

2.9K60

Audio Unit播放aacm4amp3等文件

AudioUnit不支持vbr的数据,也不支持从一个有损压缩格式转换为pcm或者pcm转换为有损格式,对于有损格式的音频数据转换,需要用CoreAudio的Audio Converter API。...,设置AVAudioSession的Category为AVAudioSessionCategoryPlayback;初始化AudioBufferList,设置AudioUnit的playback回调;...3、在AudioUnit的playback回调中,调用AudioConvert的AudioConverterFillComplexBuffer函数并设置好回调方法lyInInputDataProc;在回调的...AudioFileReadPacketData读取音频数据并把读取的AudioStreamPacketDescription回传; 4、AudioConvert转换后的音频数据会填入参数buffList,将对应的数据复制给AudioUnit...AudioStreamPacketDescriptions参数来辅助转换音频数据; 解决方案就是新建AudioStreamPacketDescriptions数组,并且在读取后赋值给outDataPacketDescription(见demo); 总结 AudioUnit

2.9K100

iOS近距离实时合唱

7、AuidoUnit录制回调(手机A) 手机A的AudioUnit回调,会把人声数据缓存到mOutputCircleBuffer里,等待发送。...3、卡顿定位 合唱有主线程、Multipeer相关线程和AudioUnit线程,其中AudioUnit线程是一个实时的线程,需要注意: 1、不能分配大量内存; 2、不能调用阻塞的方法; 3、runtime...unsafe; 为监控AudioUnit的卡顿,可添加每次AudioUnit线程回调的耗时统计。...5、环形缓冲 在整个合唱过程中,AudioUnit不断录制人声用于Multipeer发送,同时不断播放消费Multipeer收到的人声。...6、同步启动 为了实现AudioUnit的同步启动,当server/client在进行建立流通道握手时,先满足启动的条件的一端要延迟启动timeDelay,尽量保证AudioUnit启动时间相差更小。

1.1K70

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券