我工作的這是使用工具箱中的音頻記錄和PCM數據的回放一個項目,我遇到麻煩播放輸出緩衝器的一部分。在模擬器中,我可以錄製和播放音頻,使用自定義類來根據需要處理記錄和回放緩衝區的PCM字節的存儲和採集。在設備上(iPhone(3.0.1)和iPod 2G(3.1.2))錄製工作正常,產生的音頻文件是正確的,但是應用內播放口吃,比如只播放每個回放緩衝區的一部分。我的緩衝區長達一秒,我有3個緩衝區,它們在播放開始之前預加載;在最初的3秒鐘內也出現口吃,我認爲這排除了延遲問題。音頻播放工具箱只播放
我寫音頻工具箱代碼之前工作過,只不過我用我自己的類來源的PCM數據,而不是AudioFileReadBytes()
我知道數據我沒有做任何事情怪在這裏散發出來我的來源是好的,因爲它起到正確的SIM卡,並將其寫入到磁盤
我和採樣率有點繞起了正確的音頻文件;我通常使用11025Hz採樣來減少文件大小(這是所有的聲音,所以它聽起來很好)。在44100赫茲,但與相同大小的緩衝區,我得到相同的口吃問題,但音頻段來得快很多,約快4倍。這就是爲什麼我認爲它只能播放每個緩衝區的一部分。
我能想象,這將只能發揮每個緩衝區的一部分的唯一原因是延遲問題......像音頻工具箱代碼運行了完整的緩衝區,而我仍然填充空單。但是,這將導致它正確地播放預加載的緩衝區,並然後開始口吃,這不會發生,它斷斷續續通過
我試過堆積如山的緩衝區,如10MB緩存的整個方式,我只是在播放結束時獲得沉默和一聲音頻。我也嘗試了比普通預加載更多的緩衝區,比如10秒的音頻,它的行爲相同。 音頻會話被設定AVAudioSession,沒了音訊工具箱調用,並且它被設置爲播放類別的播放
我不知道如何去嘗試攻擊這個問題,它沒有任何意義,我認爲這在模擬器上工作正常,但不是設備。
代碼播放回調和設立音頻隊列服務:http://pastebin.com/mfaa546c
如果使用AudioServicesPlaySystemSound播放音頻文件,它是否正確播放? – 2010-02-05 03:02:50