2011-08-10 35 views
0

我在播放幾個聲音,他們必須按順序播放(隨機),這樣當一個完成時,下一個需要開始。iOS AudioServicesAddSystemSoundCompletion回調產生1秒的延遲

我正在使用AudioServicesAddSystemSoundCompletion回調過程來確定由SystemSoundID指定的聲音文件何時完成播放。此時,靜態C回調方法被擊中,然後回到實例中播放另一個聲音。

但是,我在音頻結束和回調函數間得到了1秒的延遲。

音頻在最後沒有多餘的空間被修剪。我已經把NSLog放在了幾個關鍵位置來確認,並且播放了第一個聲音 - 其餘的代碼什麼也沒做 - 只是等待「輸入」,然後在音頻結束後的一秒鐘內,回調就會被常規打擊。

我查看過官方文檔,找不到任何理由--10分鐘的Google搜索都沒有提供任何解決方案。

任何人有任何想法嗎?

謝謝

回答

0

我不知道延遲,我從來沒有經歷過。但也許你可以嘗試this。它是SystemSoundID及其一些輔助函數的Objective-C包裝,包括完成回調。使用它代替C函數應該更容易。

0

對不起那些讀這篇文章,但我用蘋果支持請求去這個原因的時間限制下,你不會相信答案...

沒有延遲。 (Spoon/whatever;))

這個問題是由我們用來剪切和剪切和導出音頻文件的應用程序的UI'功能'引起的... GarageBand。

看起來,如果您在GarageBand中修剪音軌,直到只有您想要的聲音可見並可以播放 - 即使循環播放 - 然後將該曲目導出爲.aif文件...也不會顯示或警告您 - 軌道上的所有修剪和切割部分BACK !!!

因此,即使您在GB天后重新打開曲目,您所看到並聽到的所有曲目都是裁剪後的裁剪版本。然而,修剪只是文件的元數據 - 就像iTunes修剪......完全沒有意義。

因此,所有的聲音都必須重新編輯和更精確的音頻應用程序輸出 - 大膽...

蘋果也提到,這些聲音播放回調線程是一個低優先級的線程,但我們仍然不應該有這樣的停頓。

感謝那些試圖想出一個理由的人,特別是上面的海報花時間去嘗試和幫助。