2011-04-07 17 views
0


我想做類似於節拍切片的事情。AudioQueueBuffer中的哪個位置發生AudioQueueLevelMeterState?

我可以設置一個定時器來定期獲取AudioQueueLevelMeterState。

但是,似乎沒有辦法將AudioQueueLevelMeterState查詢的時間與AudioQueueBuffer的內容關聯起來?

例如,假設我的緩衝區長度爲1秒。我運行一個計時器,每秒查詢儀表狀態60次。在0.5秒時,我獲得了我想要的水平。因此,我想從獲得水平的那一刻起取一大塊音頻緩衝區,即剩餘的0.5秒。

任何想法?可以這麼說的任何方式在緩衝區中這麼做?

任何意見非常讚賞。

非常感謝,xj

回答

1

最終得到這個排序。我放棄了AudioQueue作爲錄製音頻的方式,而是選擇了AudioUnit。 AudioQueue非常困難,最終我不得不認真地質疑,如果這是我想要做的正確API。在一些論壇上,人們曾經說過AudioUnits很難合作,但說實話,在AudioQueue完成之後,AudioUnit非常簡單。

無論如何,回答我自己的問題。最後,我不得不解決測量和記錄的同步問題,所以我放棄了定時器機制來對這些關卡進行採樣。我仍然使用AudioQueue,但只是爲了測量。在錄音回調中,我從AudioQueue中獲取kAudioQueueProperty_CurrentLevelMeter。記錄回調接收幀數,這樣我就可以完美地將幀位置與電錶採樣同步。

0

檢查出蘋果在這裏說出示例項目。他們有類似的設置,你可能會破解。

相關問題