修改 Auriotouch 示例代码以从音频文件中读取数据
Posted
技术标签:
【中文标题】修改 Auriotouch 示例代码以从音频文件中读取数据【英文标题】:Modify Auriotouch sample code to read data from an audio file 【发布时间】:2011-07-28 09:11:23 【问题描述】:我想修改苹果的 auriotouch 示例代码,以从音频文件生成波形,而不是从麦克风输入渲染波形。我试图这样做,但我无法理解要在哪里以及要进行哪些更改。谁能指导我如何实现它。
谢谢,
【问题讨论】:
嗨..你能解决它吗。如果是这样,你能帮帮我吗? 【参考方案1】:在渲染回调中查看名为 AudioUnitRender 的函数
每当演讲者需要数据时,就会发生渲染回调。
IIRC A.T.使用此功能只需从麦克风中抓取许多样本
当然,第一轮它会失败,因为没有任何东西在等待
不管怎样,只需注释掉这个函数,而是自己用文件中的样本填充缓冲区(我认为您可能希望提前将其加载到内存中,可能不希望 fileIO 阻塞高优先级线程)
这意味着您可能需要创建某种 AudioFile 类,并在设置渲染回调时传递对此类实例的引用。这样你就可以从这个渲染回调中访问数据(这是一个普通的 C 函数,即不是一个类的成员,所以它没有其他方法来访问类数据——除非你想做一些可怕的事情带有文件级变量)。
确保您创建此 AudioFile* 音频文件 NONATOMIC 如果它是一个属性,您不希望您的渲染回调一直等待,因为其他一些线程在对象内部并因此锁定它。
【讨论】:
以上是关于修改 Auriotouch 示例代码以从音频文件中读取数据的主要内容,如果未能解决你的问题,请参考以下文章
Apple 的 AurioTouch2 示例代码中的“静音”按钮有啥作用?
AudioBufferList 的 AurioTouch 用途
使用 aurioTouch 录制音频单元文件 - AudioStreamBasicDescription 配置问题?