1. 程式人生 > >IOS音訊1:之採用四種方式播放音訊檔案(一)AudioToolbox AVFoundation OpenAL AUDIO QUEUE

IOS音訊1:之採用四種方式播放音訊檔案(一)AudioToolbox AVFoundation OpenAL AUDIO QUEUE

在本卷你可以學到什麼?

採用四種方法設計應用於各種場合的音訊播放器:

基於AudioToolbox.framework框架。播放系統聲音檔案。

基於AVFoundation.framework框架。播放多種音訊格式檔案。具有高階音訊播放器功能。如實時顯示進度、功率,控制音量、播放時間等。

基於OPENAL框架。實現對本地音訊檔案播放,播放pcm音訊檔案,3D音訊特效。

基於AUDIOQUEUE音訊佇列。實現對音訊訊號流播放。可以分段提取音訊流資料。

利用FFMPEG完成對音訊訊號編解碼,如wav、mp3等音訊檔案型別。

結合Matlab模擬軟體實現特殊音效處理。如湯姆貓音訊。

利用SOUND TOUCH開源庫,實現各種高階音訊處理。如男聲變女聲。

IOS多媒體層結構概述

    IOS從體系結構上一般可以分為四個層次,如圖1所示。分別是Cocoa 觸控框架層(theCocoa Touch layer)、媒體層(the Media layer)、核心服務層(the Core Services layer)、核心作業系統(the Core OS layer)。

    手機帶給使用者的直接體驗無外乎音訊、影象、視訊。因而多媒體層在整個IOS的體系結構中扮演著非常重要的角色。利用IOS提供的音訊、影象、視訊框架可以幫助IOS開發人員快速的完成客戶提出的高階音視訊動畫體驗。同時這些框架也為開發人員訪問底層結構提供了一條便捷之路。下面分別就音訊、影象、視訊三個方面介紹多媒體層的構成情況。


音訊技術層:

音訊技術層設計到的框架主要有:AVFoundation.framework、CoreAudio.framework、AudioToolbox.framework、AudioUnit.framework、OpenAL.framework 等。每個技術層都包含了眾多的framework框架,而每一種框架中又有各種OC類的方法。在這裡我們選擇幾種較為重要的類向大家介紹一下。

AVFoundation.framework:

AVFoundation.framework是音訊技術層中非常重要的一個層,利用其包含的眾多OC方法可以很方便的定製各種音訊播放器,並實現一些高階功能。AVFoundation可以播放系統中聲音檔案以及原始音訊資料。當然利用此框架還可以實現聲音的混疊效果,同時控制多個音訊檔案的播放。

CoreAudio.framework:

主要用於定製各種音訊的資料型別。

AudioToolbox.framework:

可以播放或者錄製音訊檔案。同時還可以對原始音訊資料檔案進行操作。經過一定的設定還可以實現震動等效果。

OPEN AL.framework:

Open al( Open Audio Library)是一項跨平臺的音訊處理方案。通過此框架可以方便的實現各種音訊檔案的播放。同時還可以實現對pcm音訊檔案的播放。尤其是在3D音效技術中,具有非常重要的作用。通過此技術可以很方便的在遊戲以及一些特殊的場合實現3D音訊特效。

IOS音訊技術層可以播放各種音訊格式的音訊檔案,同時也可以播放已經定製安裝相應音訊編解碼器的音訊檔案。具體來說主要支援以下幾種音訊檔案:

WAV:WAV是微軟公司開發的一種音訊格式,它幾乎沒有對採集的數字音訊訊號進行失真處理,因此可以很好的還原聲音的原始資訊。

MP3:是今年來最流行的音訊處理演算法,它在不對音質造成太大影響的情況下最大限度的壓縮了資料的大小。

AAC:AAC音訊檔案的全稱是Advanced Audio Coding,採用和mp3完全不同的資料壓縮演算法,相較於mp3來說具有更高的價效比,音質較好。

Caf:ios裝置錄音時經常儲存的一種音訊檔案型別。

……

影象技術層:

影象處理是視訊處理的基礎,同時也是人們視覺體驗種非常重要的部分。影象技術層設計到的技術主要有:Core Graphics、Core Animation、Image I/O、OpenGL ES等。正是由於影象技術層提供了這些眾多的工具,才能使得我們方便的對影象進行處理。下面我們簡單介紹一下每種技術的作用。

Core Graphics:

Core Graphics(CoreGraphics.framework)主要利用Quartz2D實現對二維影象的處理,因此也經常將其稱之為Quartz 2D技術。

Core Animation:

與二維影象處理相對應,Core Animation主要應用於二維動畫的製作,以及一些高階高階視覺效果的渲染。

Image I/O:

Image I/O(ImageIO.framework)可以看出是影象的輸入輸出管理,可以利用此框架處理影象的基本畫素資訊。該框架的使用是建立在 Core Graphics資料型別和函式之上的。

OpenGL ES:

OpenGL ES(OpenGLfor Embedded Systems)是Open Gl專門針對嵌入式作業系統量身定製的。提供完備的2d、3d影象處理API,功能非常強大。是遊戲影象、高清影象的首先技術方案。

IOS相容多種影象格式,如常用的png、jpeg、bmp等都有很好的支援。

視訊技術層:

目前3G在國內已經基本普及,而由此帶來的高速率視訊下載、花哨的視訊分享已成為ios系統的一個重要特點。為了方便開發人員可以方便定製自己個性的播放器,ios提供了眾多視訊應用框架。Media play.framework

Media play.framework:

Media play.framework可以看作是一款高階視訊播放器的框架,利用此框架你可以快速的設計出一個視訊播放器。但缺點是不方便使用者在上面進行二次開發。

ios可以播放多種視訊型別檔案,如mp4、m4v、3gp、mov等。