iOS 9音訊應用播放音訊之ios9音訊基本功能
iOS 9音訊應用播放音訊之ios9音訊基本功能
在iOS 9音訊應用開發中最為簡單和常用的就是AVFoundation框架中的AVAudioPlayer類。雖然AVAudioPlayer類不能播放網路上的音訊檔案,但是它可以播放本地音訊檔案,以及緩衝區的檔案。本章將講解最為基礎的音訊播放——本地音訊檔案的播放。
iOS 9音訊應用開發基本功能
實現音訊的播放需要使用到AVAudioPlayer類。AVAudioPlayer是AVFoundation.framework框架裡面最基本的一個音訊播放器的類。使用此類可以實現單個音訊的播放、暫停以及停止等功能。本節將使用AVAudioPlayer類實現一個音訊檔案的播放。
iOS 9中的AVAudioPlayer類簡介
AVAudioPlayer是iOS 2.2之後引入的AVFoundation.framework框架中的一個類,使用此類可以實現音訊的播放。表2-1中總結了AVAudioPlayer類中使用到的方法。
表2-1 AVAudioPlayer類的方法
表2-2總結了了AVAudioPlayer類中使用到的屬性。
表2-2 AVAudioPlayer類的屬性
注意:在Xcode 6.0之後,在建立的專案中,AVFoundation.framework框架預設是被新增到專案中的。如果AVFoundation.framework框架沒有被新增到專案中,就需要開發者手動進行新增。手動新增框架的具體操作步驟如下:
(1)選擇導航視窗中的專案名稱,開啟目標視窗,如圖2.1所示。
圖2.1 目標視窗
(2)選擇目標視窗中的Build Phases選項,開啟Build Phases皮膚,如圖2.2所示。
圖2.2 Build Phases皮膚
(3)將Link Binary With Libraries(0 items)開啟,會看到一個加號按鈕,如圖2.3所示。
圖2.3 Link Binary With Libraries(0 items)
(4)選擇加號按鈕後,會彈出一個Choose frameworks and libraries to add對話方塊,如圖2.4所示。
(5)在對話方塊中找到AVFoundation.framework框架,單擊Add按鈕。此時,就會在Link Binary With Libraries中出現新增的框架,如圖2.5所示。這表明此框架已經新增到了專案中。
圖2.4 Choose frameworks and libraries to add對話方塊
圖2.5 新增框架
ios9音訊應用開發準備素材檔案
在iOS9的遊戲應用中(如例如超級瑪麗)或者是酷狗音樂開啟時,經常會有音訊的播放。這些音訊都是應用程式預置的,也就是素材檔案。在實現播放本地音訊檔案之前,首先需要將預置的音訊檔案新增到建立的專案中。新增音訊檔案的具體操作步驟如下。
(1)在建立專案的導航視窗中右擊,彈出快捷選單。
(2)在彈出的快捷選單中選擇Add Files to "***"…命令。彈出選擇檔案對話方塊,如圖2.6所示。
(3)選擇音訊檔案後,單擊Add按鈕,此時被選擇的音訊檔案就新增到了建立的專案中。
圖2.6 新增音訊檔案
注意:新增音訊檔案到建立的專案中除了以上講解的方式外,還有一種方式,具體的操作步驟如下。
(1)找到需要新增到專案中的音訊檔案,將其拖動到建立的專案中,彈出Choose options for adding these files:對話方塊架,如圖2.7所示。
圖2.7 新增音訊檔案
(2)單擊Finish按鈕後,音訊檔案就新增到了建立的專案中。
注意:在新增音訊檔案中提到的兩種方式,除了可以新增音訊檔案外,還可以新增其他檔案,如影像檔案、字型檔案等。
ios9音訊應用開發載入音訊檔案
載入音訊檔案是為了對AVAudioPlayer類進行例項化,例項化時需要使用到init()方法,根據init()方法引數需求的不同,可以分為4種形式,分別為init(contentsOfURL:)、init(data:)、init(contentsOfURL:fileTypeHint:)和init(data:fileTypeHint:)。以下就是對這四種形式的講解。
1.init(contentsOfURL:)
init(contentsOfURL:)是使用本地音訊檔案的地址對AVAudioPlayer類進行例項化。其語法形式如下:
- init(contentsOfURL url: NSURL) throws
其中,引數url是NSURL物件。NSURL是一個資料型別,實際上就是一個地址,很多開發人員會有疑惑,地址就是一個字串,為什麼還有NSURL型別,那是因為地址分為絕地路徑(描述目標資料夾的位置)和相對路徑(顯示檔案的完整路徑)。對於絕對路徑來說,地址的字串都會比較複雜,包括很多請求引數。這樣,在請求過程中需要解析出來每個部分,所以封裝一個NSURL。所以需要將字串轉換為NSURL,對於NSURL的轉換其實可以使用它的例項化方法init來實現,這個方法中會有一個字串引數,也就是使用字串去例項化NSURL方法,其語法形式如下:
- init(fileURLWithPath path: String)
其中,引數path是一個字串。此字串是一個地址(一般來說不同部分之間以斜線(/)分隔),這個地址可以是相對路徑,也可以是絕對路徑。
注意:引數path是隻可以是本地檔案的地址,不可以是網路地址。
2.init(data:)
在前面的內容中提到AVAudioPlayer類不可以播放從網路上獲取音訊檔案,但是可以播放從網路上下載到記憶體緩衝區的音訊。要實現記憶體緩衝區音訊的播放,需要使用init()方法的init(data:)方式,其語法形式如下:
- init(data data: NSData) throws
其中,引數data是一個NSData物件,表示一個音訊資料。由於是要播放記憶體緩衝區的音訊,所以NSData物件在建立時需要指定音訊檔案的地址,此時需要使用到init()方法的init(contentsOfFile:)形式。
- init?(contentsOfFile path: String)
其中,引數path是一個字串,程式碼表示檔案的絕對路徑。
注意:引數data必須是一個完整的檔案。
3.init(contentsOfURL:fileTypeHint:)
方法init(contentsOfURL:)和init(data:)都是在具有字尾名的情況下使用的形式,但是在網路上下載的音訊檔案可能由於某些原因沒有字尾名。這時就需要使用到init()方法的init(contentsOfURL:fileTypeHint:)形式以及init(data:fileTypeHint:)。init(contentsOfURL:fileTypeHint:)的語法形式如下:
- init(contentsOfURL url: NSURL,
- fileTypeHint utiString: String?) throws
其中,引數url是NSURL物件,此物件的例項化在前面講解過。引數utiString用來指定檔案型別的提示,用於提示系統該檔案屬於什麼型別。其中,檔案型別的提示如表2-3所示。
表2-3 檔案型別的提示
4.init(data:fileTypeHint:)
init(data:fileTypeHint:)形式的語法形式如下:
- init(data data: NSData,
- fileTypeHint utiString: String?) throws
其中,引數url是NSURL物件,此物件的例項化在前面講解過。引數utiString用來指定檔案型別的提示,這些提示可以參考表2-3。
ios9音訊應用開發新增音訊檔案到緩衝區
對於音訊檔案來說,讀取的次數會過於頻繁,這樣不僅可能導致儲存卡損耗,還會增加CPU的負擔。為了解決這一問題,我們可以將載入的音訊檔案存入到緩衝區中(緩衝區為暫時放置輸出或輸入資料的地方)。而這一過程需要使用到AVAudioPlayer的prepareToPlay()方法,其語法形式如下
- func prepareToPlay() -> Bool
其中,該方法的返回值型別為Bool,即布林型別。當值為真時,表示將檔案放入快取;反之,則不放入快取。
ios9音訊應用開發播放音訊
最後一步就是播放音訊,此功能的實現需要使用到AVAudioPlayer的play()方法,其語法形式如下:
- func play() -> Bool
其中,該方法的返回值型別為Bool即布林型別。當值為真時,表示音訊檔案播放成功;反之,則失敗。
本文選自:iOS 9音訊應用開發基礎教程大學霸內部資料,轉載請註明出處,尊重技術尊重IT人!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29597077/viewspace-1836148/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- iOS 9音訊應用播放音訊之第一個ios9音訊例項iOS音訊
- iOS 9音訊應用播放音訊之第一個ios9音訊例項2iOS音訊
- iOS 9音訊應用播放音訊之iOS 9音訊播放進度iOS音訊
- iOS 9音訊應用播放音訊之控制播放速度iOS音訊
- iOS 9音訊應用播放音訊之音量設定與聲道設定iOS音訊
- iOS 9音訊應用播放音訊之播放控制暫停停止前進後退的設定iOS音訊
- 音視訊系列之iOS: 音訊採集 AudioUnitiOS音訊
- iOS 收款推送訊息語音播報iOS
- 火爆的音訊聊天應用Clubhouse音訊恐洩露音訊
- 第 9 章 音訊和視訊音訊
- 電腦播放音訊聽不到聲音音訊
- Android 音視訊開發 - 使用AudioTrack播放音訊Android音訊
- iOS音訊-AVAudioSessioniOS音訊Session
- Android音視訊之MediaPlayer音視訊播放Android
- iOS開發:音訊播放、錄音、視訊播放、拍照、視訊錄製iOS音訊
- Android 音訊應用框架Android音訊框架
- 音視訊--音訊入門音訊
- 音視訊–音訊入門音訊
- iOS音訊程式設計之實時語音通訊(對講機功能)iOS音訊程式設計
- IOS音視訊(二)AVFoundation視訊捕捉iOS
- Android音視訊之MediaRecorder音視訊錄製Android
- iOS-音訊-AVAudioSessioniOS音訊Session
- 短視訊“音訊化”,音樂“視訊化”音訊
- 音訊_錄音音訊
- iOS AVAudioPlayer(音訊播放)iOS音訊
- iOS開發系列--音訊播放、錄音、視訊播放、拍照、視訊錄製(轉)iOS音訊
- Loopback for Mac(虛擬音訊應用)OOPMac音訊
- 虛擬音訊應用:Loopback Mac音訊OOPMac
- 音訊訊號表徵音訊
- 音訊 (一) : 音訊基礎知識音訊
- iOS 音訊-audioUnit 總結iOS音訊
- Mac 使用音訊工具分析音訊資料Mac音訊
- 播客接棒線上音訊的盈利夢音訊
- 我的派派播客(視、音訊)*音訊
- HTML 音訊HTML音訊
- AAC 音訊音訊
- iOS 視訊剪下、旋轉,視訊新增音訊、新增水印,視訊匯出iOS音訊
- iZotope RX 9 音訊修復工具音訊