2012-05-28 73 views
1

我正在研究一個現有的應用程序,我沒有開發,它使用FMOD播放其音頻。iOS - 使用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 - 「此命令失敗,因爲系統:: init或系統:: setDriver不叫。」

第二個似乎是因爲init失敗。

回答

3

這是通過Twitter回答的,因此,如果斯圖爾特想在這裏自己回答,我將自己的答案放在這裏,那麼我會將其作爲答案投票。

答案是禁用:FMOD_INIT_ENABLE_PROFILE,因爲這可以在一個應用程序中一次只能運行:

因此,這樣的:
result = fmodSystem->init(4, FMOD_INIT_NORMAL | FMOD_INIT_ENABLE_PROFILE, NULL);

應該成爲這樣的:
result = fmodSystem->init(4, FMOD_INIT_NORMAL, NULL);

相關問題