首页 文章

iOS上的AUGraph设置

提问于
浏览
0

我正在为iOS应用程序设计AUGraph,并希望获得以下帮助 .

如果我想一次播放多个音频文件,每个文件是否需要一个音频单元?

来自Core-Audio文档

线性PCM和IMA / ADPCM(IMA4)音频您可以在iOS中同时播放多个线性PCM或IMA4格式声音,而不会产生CPU资源问题 . 适用于AAC,MP3和Apple Lossless(ALAC)声音的AAC,MP3和Apple Lossless(ALAC)音频播放在iPhone和iPod touch上使用高效的基于硬件的解码 . 您一次只能播放一首此类声音 .

因此,无法同时播放多个AAC或MP3文件 . 一次播放多个声音的最佳LPCM格式是什么?

这是否也适用于音频单元,如同在AudioQueue文档中一样 .

AUGraph中的音频单元可以不活动吗?如果AUGraph看起来像这样

扬声器/输出<录音机单元<混音器单元<音频文件播放单元的数量

如果录音机不活动会发生什么,它仍会拉动,但只是不将缓冲区写入文件?

2 回答

  • 1

    没有;你需要使用调音台音频单元 . 检查一下:http://developer.apple.com/library/ios/DOCUMENTATION/MusicAudio/Conceptual/AudioUnitHostingGuide_iOS/ConstructingAudioUnitApps/ConstructingAudioUnitApps.html#//apple_ref/doc/uid/TP40009492-CH16-SW1

    大多数情况下阅读上面的文档,将示例代码包装在一个类中并创建一对实用程序结构,我从头开始编写“简单声音引擎”:

    ttp://nicolasmiari.com/blog/a-simple-sound-engine-for-ios-using-the-audio-unit-framework/(链接到我博客中包含源代码的文章) . 对不起,将博客移至Jekyll / Github并且这篇文章没有成功 .

    ......我打算在github上开始一个回购,但这太麻烦了 . 我是一个视觉上的人,仍然非常恐慌 . 好的,那是很久以前的......现在我从命令行使用git :-)

    您可以按原样使用它,也可以提取与音频单元相关的代码并使其适应您的项目 . 我相信Cocos Denshion的“简单音频引擎”几乎完全相同,但没有检查源代码 .

    Known issues 如果为C异常设置了异常断点,则在调试时,代码将在 AUGraphInitialize() 上停止2或3次 . 这是'non-crashing'异常,因此您可以单击“继续”,代码可以正常工作 .

    要将wav文件转换为未压缩的.caf格式,请在终端上使用此命令:

    %afconvert -f caff -d LEI16 mysoundFile.wav mySoundFile.caf
    

    EDIT: 所以我毕竟创建了一个GitHub仓库:https://github.com/nicolas-miari/Sound-Engine

  • 2

    普通的常见.wav和.caf文件都包含原始PCM音频样本,如果已经达到目标采样率,则无需硬件辅助或DSP处理即可播放 .

    当没有音频文件或其他合成数据馈送到拉动缓冲器的音频单元时,通常的做法是将静音缓冲器(或者如果前一个缓冲器以非零振幅结束,则可能为零) .

相关问题