我正在开发一个我没有开发的现有应用程序,它使用 FMOD 播放其音频。
从外观上看,该应用程序的早期版本被编写为使用 AVAudioPlayer,并且有构建选项可以使用。
不过,最新版本使用 FMOD,因为许多功能仅在使用 FMOD 版本构建时才包含在内。
当我首先使用现有应用程序之一,然后尝试运行我正在开发的这个新应用程序时,问题就出现了。
如果我运行一个应用程序,然后将其留在后台并运行第二个应用程序,则第二个应用程序中的声音根本不会播放。我可以回到第一个应用程序并毫无问题地播放声音。如果我杀死这两个应用程序,然后先启动另一个应用程序,那么它会完美运行。
如果我使用 AVAudioPlayer 选项构建应用程序,那么我不会遇到这个问题,而且为 FMOD 版本编写的所有功能都不存在。因此,我可以证明它与 FMOD 有关,但无法弄清楚是什么。
编辑:做了更多的挖掘,我得到了两个 FMOD 错误:
首先,当我运行时:
result = fmodSystem->init(4, FMOD_INIT_NORMAL | FMOD_INIT_ENABLE_PROFILE, NULL);
我收到错误 51 - “发生套接字错误。这是其他地方未列出的与套接字相关的错误的全部内容。”
其次,当我运行时:
result = fmodSystem->createSound((const char *)[audioData bytes], FMOD_SOFTWARE | FMOD_OPENMEMORY, &exinfo, &fmodSound);
我收到错误 79 - “此命令失败,因为未调用 System::init 或 System::setDriver。”
第二个似乎是因为 init 失败了。