[iOS]使用Audio Queue Services 播放和錄製音頻

來源:互聯網
上載者:User

要在iOS裝置上播放和錄製音頻,蘋果推薦我們使用AVFoundation架構中的AVAudioPlayer和AVAudioRecorder類。雖然用法比較簡單,但是不支援流式;這就意味著:在播放音頻前,必須等到整個音頻載入完成後,才能開始播放音頻;錄音時,也必須等到錄音結束後,才能擷取到錄音資料。這給應用造成了很大的局限性。為瞭解決這個問題,我們就需要使用Audio Queue Services來播放和錄製音頻為了簡化音頻檔案的處理,這裡還需要用到Audio
File Services
(以前以為C語言沒有音頻檔案處理的函數庫,現在找到了)。

 

         在使用之前,我們需要瞭解AudioQueue Service的基本工作原理。

 

圖1一個錄音音頻隊列(Recording Audio Queue)

         

 

         由可以得知,一個Recording Audio Queue,包括Buffer(緩衝器)組成的Buffer Queue(緩衝隊列),以及一個Callback(回調)。他們之間是如何工作的呢?

 

圖2 錄音流程

         1. 將音頻填入第一個緩衝器中

         2. 當隊列中的第一個緩衝器填滿時,會自動填滿下一個緩衝器。此時,會觸發回調。

         3. 在回呼函數中需要將音頻資料流寫入磁碟

         4. 然後,需要在回呼函數中將該緩衝器重新放入緩衝隊列,以便重複使用該緩衝器。重複步驟2。

         在瞭解錄音的流程之後,讓我們來看看播放基本體繫結構。

圖3 一個播放音頻隊列(A playback audio queue)

         由可以得知,其結構和錄音音頻隊列基本一致,只是回調觸發的時機不同,工作流程略有差異。

圖4 播放流程

 

         1. 將音頻讀入到緩衝器中。一旦填充滿一個緩衝器,就會進入緩衝隊列,此時處於待命狀態。

         2. 應用程式命令發出指令,要求音頻隊列開始播放。

         3. 音頻會從第一個緩衝器中取資料,並開始播放。

         4. 一旦播放完成,就會觸發回調,並開始播放下一個緩衝器中的內容。

         5. 回調中需要給該緩衝器取後面的音頻資料,然後重新放入緩衝隊列中。重複步驟3。

 

         至此,Audio QueueServices的基本原理就算介紹完了。在實際的應用中,還需要處理好各種狀態,以及異常情況,例如播放中斷、沒有錄音裝置等。關於Audio File Services 的使用,我這裡就不做介紹了,詳細參考源碼。

 與本文配套的原始碼樣本:http://download.csdn.net/detail/midfar/4044390

 

參考資料:

Audio Queue Services Programming Guide

https://developer.apple.com/library/ios/#documentation/MusicAudio/Conceptual/AudioQueueProgrammingGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40005343

Audio Queue Services Reference

https://developer.apple.com/library/ios/#documentation/MusicAudio/Reference/AudioQueueReference/Reference/reference.html#//apple_ref/doc/uid/TP40005117

Audio File Services Reference

https://developer.apple.com/library/ios/#documentation/MusicAudio/Reference/AudioFileConvertRef/Reference/reference.html#//apple_ref/doc/uid/TP40006072

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.