使用 Apple 的 MixerHostAudio 类播放音频文件时出现问题

Posted

技术标签:

【中文标题】使用 Apple 的 MixerHostAudio 类播放音频文件时出现问题【英文标题】:Problem using Apple's MixerHostAudio class to play audio files 【发布时间】:2010-11-19 06:52:03 【问题描述】:

我正在尝试使用 Apple 的 MixerHostAudio 类来混合和播放用户指定的音频文件。

类文件可以在这里找到:http://developer.apple.com/library/ios/#samplecode/MixerHost/Listings/Classes_MixerHostAudio_h.html

为了让 MixerHostAudio 类播放用户指定的文件,我用文件的 NSURL 实例化了该类。这对于第一次实例化非常有用,但是当我想通过释放旧的 MixerHostAudio 类并分配一个新的类来更改播放的音频文件时,应用程序在声音开始播放几秒钟后崩溃并出现“EXC_BAD_ACCESS”。

在做了一些调试之后,我注意到错误发生在 inputRenderCallback 中,其中 soundStructPointerArray 的 AudioUnitSampleType (audioDataLeft, and audioDataRight) 为 nil。

这是发生错误的部分代码:

for (UInt32 frameNumber = 0; frameNumber < inNumberFrames; ++frameNumber) 
    outSamplesChannelLeft[frameNumber]                 = dataInLeft[sampleNumber];
    if (isStereo) outSamplesChannelRight[frameNumber]  = dataInRight[sampleNumber];

我是否可以在不出错的情况下实例化多个 MixerHostAudio 实例??

非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

听起来代码并未重置回调中的所有数据。我不熟悉该源代码,但您应该仔细检查并确保所有内存分配都得到正确处理并且没有过时的指针。尤其是寻找那些不应该挂在周围的全局变量或静态变量,因为你说你在它崩溃之前实例化了第二个变量。

【讨论】:

以上是关于使用 Apple 的 MixerHostAudio 类播放音频文件时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

MixerHostAudio 蓝牙

带混音器的 NewTimePitch

如何在 Apple JS 中使用“使用 Apple 登录”

使用 Apple 登录按钮标题始终显示“SIGN_IN_WITH_APPLE”

Apple 会拒绝使用 Apple 应用程序中使用的图像的应用程序吗?

Apple 开发者推送通知 APN 证书因过度使用而被吊销(被 Apple 禁止)?