iOS 關於音頻播放調研

因爲最近作音頻方面的工做,就調研了一下關於音頻播放的一些知識,中間也走過很多彎路,但願這篇小集能對關注咱們的同窗一點啓示,少走一些彎路。最後提供一份我看過的資料。這裏關於音頻播放簡單作一個總結。iOS 中音頻播放有如下 5 種方式(若是你有更多的方式告訴我,很是感激),它們的使用場景各不一樣。

[1] 播放小於 30s 的音頻:
AudioServicesPlaySystemSound 能夠播放小於等於30s的音頻,主要用於播放一些提示音,你能夠利用 AudioServicesPlaySystemSoundWithCompletion 的值播放完成的 callback。它有如下特色:

- 使用系統音量,不能修改播放音量;
- 馬上開始播放,不能暫停;
- 不支持快進播放,也不能夠循環播放;
- 同一時刻只能播放一個音頻;
- 只能經過手機播放音頻,不能經過其它設備輸出,好比不能經過車載播放。

查看更多的系統聲音ID:網頁連接

[2] AVAudioPlayer 播放本地的音頻,或者已加載到內存中的音頻流,主要用於播放本地的一些音頻文件。注意它不能播放網絡音頻。它有如下特色:

- 能夠從任意位置播放,可快進,快退;
- 能夠循環播放;
- 能夠同時播放多個音頻;
- 能夠控制播放速率;

[3] AVPlayer 能夠播放本地和網絡音頻,也能夠播放視頻,它支持流媒體播放,也就是說咱們能夠用它來作邊下別播的使用場景。

[4] AVQueuePlayer 是 AVPlayer 的子類,它含有一個隊列,主要用來播放一個音視頻隊列。

[5] Audio Queue 主要用來播放音頻,錄音,它比較底層,會有更多的控制權,若是 APP 主要功能是基於音頻播放,推薦使用這個。

總的來講,若是普通的本地音頻播放,能夠選擇 AVAudioPlayer ,這個不須要了解更多的音頻知識,就能夠達到一個基本的播放;若是想作流媒體播放,建議使用 AVPlayer + Local Server 的方式,相似於唱吧目前開源的方式。固然也能夠選擇 Audio Queue,不過這個難度比較高,須要對音頻播放有一個總體的瞭解,推薦使用三方庫 FreeStream,不過須要一些 C++ 的知識,由於使用過程當中有一些坑須要填,這樣不得不閱讀源碼。最後推薦一些不錯的文章。

官方 Audio Queue: 網頁連接
官方 AudioSession: 網頁連接
@pp鍋的碼農生活 博客: 網頁連接
@cy_zju 博客:網頁連接

更多知識小集的內容,請查看:http://t.cn/RYxpsqmphp

相關文章
相關標籤/搜索