二十五、爬取毛豆新車的數據
682
2025-03-31
介紹
要在?iOS?設備上播放和錄制音頻,蘋果推薦我們使用?AVFoundation?框架中的?AVAudioPlayer和?AVAudioRecorder?類。雖然用法比較簡單,但是不支持流式;這就意味著:在播放音頻前,必須等到整個音頻加載完成后,才能開始播放音頻;錄音時,也必須等到錄音結束后,才能獲取到錄音數據。這給應用造成了很大的局限性。為了解決這個問題,我們就需要使用?Audio Queue Services來播放和錄制音頻;為了簡化音頻文件的處理,這里還需要用到?Audio File Services?。
將音頻填入第一個緩沖器中;
當隊列中的第一個緩沖器填滿時,會自動填充下一個緩沖器。此時,會觸發回調;
在回調函數中需要將音頻數據流寫入磁盤;
然后,需要在回調函數中將該緩沖器重新放入緩沖隊列,以便重復使用該緩沖器。重復步驟2。
將音頻讀入到緩存器中。一旦填充滿一個緩存器,就會進入緩存隊列,此時處于待命狀態;
應用程序命令發出指令,要求音頻隊列開始播放;
音頻會從第一個緩存器中取數據,并開始播放;
一旦播放完成,就會觸發回調,并開始播放下一個緩存器中的內容;
回調中需要給該緩存器取后面的音頻數據,然后重新放入緩存隊列中。重復步驟3。
當然,要明白音頻隊列服務的原理并不難,問題是如何實現這個自定義的回調函數,這其中我們有大量的工作要做,控制播放狀態、處理異常中斷、進行音頻編碼等等。(由于自己實現做的東西還真不少,所以推薦第三方框架:?AudioStreamer、FreeStreamer。)
參考
Audio Queue Services Programming Guide
Audio Queue Services Reference
緩存 iOS
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。