在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ iOS/ 音頻 API 一覽
與四軸無人機(jī)的通訊
在沙盒中編寫腳本
結(jié)構(gòu)體和值類型
深入理解 CocoaPods
UICollectionView + UIKit 力學(xué)
NSString 與 Unicode
代碼簽名探析
測試
架構(gòu)
第二期-并發(fā)編程
Metal
自定義控件
iOS 中的行為
行為驅(qū)動(dòng)開發(fā)
Collection View 動(dòng)畫
截圖測試
MVVM 介紹
使 Mac 應(yīng)用數(shù)據(jù)腳本化
一個(gè)完整的 Core Data 應(yīng)用
插件
字符串
為 iOS 建立 Travis CI
先進(jìn)的自動(dòng)布局工具箱
動(dòng)畫
為 iOS 7 重新設(shè)計(jì) App
XPC
從 NSURLConnection 到 NSURLSession
Core Data 網(wǎng)絡(luò)應(yīng)用實(shí)例
GPU 加速下的圖像處理
自定義 Core Data 遷移
子類
與調(diào)試器共舞 - LLDB 的華爾茲
圖片格式
并發(fā)編程:API 及挑戰(zhàn)
IP,TCP 和 HTTP
動(dòng)畫解釋
響應(yīng)式 Android 應(yīng)用
初識(shí) TextKit
客戶端
View-Layer 協(xié)作
回到 Mac
Android
Core Image 介紹
自定義 Formatters
Scene Kit
調(diào)試
項(xiàng)目介紹
Swift 的強(qiáng)大之處
測試并發(fā)程序
Android 通知中心
調(diào)試:案例學(xué)習(xí)
從 UIKit 到 AppKit
iOS 7 : 隱藏技巧和變通之道
安全
底層并發(fā) API
消息傳遞機(jī)制
更輕量的 View Controllers
用 SQLite 和 FMDB 替代 Core Data
字符串解析
終身學(xué)習(xí)的一代人
視頻
Playground 快速原型制作
Omni 內(nèi)部
同步數(shù)據(jù)
設(shè)計(jì)優(yōu)雅的移動(dòng)游戲
繪制像素到屏幕上
相機(jī)與照片
音頻 API 一覽
交互式動(dòng)畫
常見的后臺(tái)實(shí)踐
糟糕的測試
避免濫用單例
數(shù)據(jù)模型和模型對象
Core Data
字符串本地化
View Controller 轉(zhuǎn)場
照片框架
響應(yīng)式視圖
Square Register 中的擴(kuò)張
DTrace
基礎(chǔ)集合類
視頻工具箱和硬件加速
字符串渲染
讓東西變得不那么糟
游戲中的多點(diǎn)互聯(lián)
iCloud 和 Core Data
Views
虛擬音域 - 聲音設(shè)計(jì)的藝術(shù)
導(dǎo)航應(yīng)用
線程安全類的設(shè)計(jì)
置換測試: Mock, Stub 和其他
Build 工具
KVC 和 KVO
Core Image 和視頻
Android Intents
在 iOS 上捕獲視頻
四軸無人機(jī)項(xiàng)目
Mach-O 可執(zhí)行文件
UI 測試
值對象
活動(dòng)追蹤
依賴注入
Swift
項(xiàng)目管理
整潔的 Table View 代碼
Swift 方法的多面性
為什么今天安全仍然重要
Core Data 概述
Foundation
Swift 的函數(shù)式 API
iOS 7 的多任務(wù)
自定義 Collection View 布局
測試 View Controllers
訪談
收據(jù)驗(yàn)證
數(shù)據(jù)同步
自定義 ViewController 容器轉(zhuǎn)場
游戲
調(diào)試核對清單
View Controller 容器
學(xué)無止境
XCTest 測試實(shí)戰(zhàn)
iOS 7
Layer 中自定義屬性的動(dòng)畫
第一期-更輕量的 View Controllers
精通 iCloud 文檔存儲(chǔ)
代碼審查的藝術(shù):Dropbox 的故事
GPU 加速下的圖像視覺
Artsy
照片擴(kuò)展
理解 Scroll Views
使用 VIPER 構(gòu)建 iOS 應(yīng)用
Android 中的 SQLite 數(shù)據(jù)庫支持
Fetch 請求
導(dǎo)入大數(shù)據(jù)集
iOS 開發(fā)者的 Android 第一課
iOS 上的相機(jī)捕捉
語言標(biāo)簽
同步案例學(xué)習(xí)
依賴注入和注解,為什么 Java 比你想象的要好
編譯器
基于 OpenCV 的人臉識(shí)別
玩轉(zhuǎn)字符串
相機(jī)工作原理
Build 過程

音頻 API 一覽

iOS 和 OS X 平臺(tái)都有一系列操作音頻的 API,其中涵蓋了從低到高的全部層級。隨著時(shí)間的推移、平臺(tái)的增長以及改變,不同 API 的數(shù)量可以說有著非常巨大的變化。本文對當(dāng)前可以使用的 API 以及它們使用的不同目的進(jìn)行簡要的概括。

Media Player 框架

Media Player 框架是 iOS 平臺(tái)上一個(gè)用于音頻和視頻播放的高層級接口,它包含了一個(gè)你可以在應(yīng)用中直接使用的默認(rèn)的用戶界面。你可以使用它來播放用戶在 iPod 庫中的項(xiàng)目,或者播放本地文件以及網(wǎng)絡(luò)流。

另外,這個(gè)框架也包括了查找用戶媒體庫中內(nèi)容的 API,同時(shí)還可以配置像是在鎖屏界面或者控制中心里的音頻控件。

AVFoundation

AVFoundation 是蘋果的現(xiàn)代媒體框架,它包含了一些不同的用途的 API 和不同層級的抽象。其中有一些是現(xiàn)代 Objective-C 對于底層 C 語言接口的封裝。除了少數(shù)的例外情況,AVFoundation 可以同時(shí)在 iOS 和 OS X 中使用。

AVAudioSession

AVAudioSession 是用于 iOS 系統(tǒng)中協(xié)調(diào)應(yīng)用程序之間的音頻播放的 API 的。例如,當(dāng)有電話打進(jìn)來時(shí),音頻的播放就會(huì)被暫停;在用戶啟動(dòng)電影時(shí),音樂的播放就會(huì)停止。我們需要使用這些 API 來確保一個(gè)應(yīng)用程序能夠正確響應(yīng)并處理這類事件。

AVAudioPlayer

這個(gè)高層級的 API 為你提供一個(gè)簡單的接口,用來播放本地或者內(nèi)存中的音頻。這是一個(gè)無界面的音頻播放器 (也就是說沒有提供 UI 元素),使用起來也很直接簡單。它不適用于網(wǎng)絡(luò)音頻流或者低延遲的實(shí)時(shí)音頻播放。如果這些問題都不需要擔(dān)心,那么 AVAudioPlayer 可能就是正確的選擇。音頻播放器的 API 也為我們帶來了一些額外的功能,比如循環(huán)播放、獲取音頻的音量強(qiáng)度等等。

AVAudioRecorder

作為與 AVAudioPlayer 相對應(yīng)的 API,AVAudioRecorder 是將音頻錄制為文件的最簡單的方法。除了用一個(gè)音量計(jì)接受音量的峰值和平均值以外,這個(gè) API 簡單粗暴,但要是你的使用場景很簡單的話,這可能恰恰就是你想要的方法。

AVPlayer

AVPlayer 與上面提到的 API 相比,提供了更多的靈活性和可控性。它基于 AVPlayerItemAVAsset,為你提供了顆粒度更細(xì)的權(quán)限來獲取資源,比如選擇指定的音軌。它還通過 AVQueuePlayer 子類支持播放列表,而且你可以控制這些資源是否能夠通過 AirPlay 發(fā)送。

AVAudioPlayer 最主要的區(qū)別是,AVPlayer 對來自網(wǎng)絡(luò)的流媒體資源的 “開箱即用” 支持。這增加了處理播放狀態(tài)的復(fù)雜性,但是你可以使用 KVO 來觀測所有的狀態(tài)參數(shù)來解決這個(gè)問題。

AVAudioEngine

AVAudioEngine 是播放和錄制的 Objective-C 接口。它提供了以前需要深入到 Audio Toolbox 框架的 C API 才能做的控制 (例如一些實(shí)時(shí)音頻任務(wù))。該音頻引擎 API 對底層的 API 建立了優(yōu)秀的接口。如果你不得不處理底層的問題,你仍然可以使用 Audio Toolbox 框架。

這個(gè) API 的基本概念是建立一個(gè)音頻的節(jié)點(diǎn)圖,從源節(jié)點(diǎn) (播放器和麥克風(fēng)) 以及過處理 (overprocessing) 節(jié)點(diǎn) (混音器和效果器) 到目標(biāo)節(jié)點(diǎn) (硬件輸出)。每一個(gè)節(jié)點(diǎn)都具有一定數(shù)量的輸入和輸出總線,同時(shí)這些總線也有良好定義的數(shù)據(jù)格式。這種結(jié)構(gòu)使得它非常的靈活和強(qiáng)大。而且它集成了音頻單元 (audio unit)。

Audio Unit 框架

Audio Unit 框架是一個(gè)底層的 API;所有 iOS 中的音頻技術(shù)都構(gòu)建在 Audio Unit 這個(gè)框架之上。音頻單元是用來加工音頻數(shù)據(jù)的插件。一個(gè)音頻單元鏈叫做音頻處理圖。

如果你需要非常低的延遲 (如 VoIP 或合成樂器)、回聲消除、混音或者音調(diào)均衡的話,你可能需要直接使用音頻單元,或者自己寫一個(gè)音頻單元。但是其中的大部分工作可以使用 AVAudioEngine 的 API 來完成。如果你不得不寫自己的音頻單元的話,你可以將它們與 AVAudioUnit 節(jié)點(diǎn)一起集成在 AVAudioEngine 處理圖中。

跨應(yīng)用程序音頻

Audio Unit 的 API 可以在 iOS 中進(jìn)行跨應(yīng)用音頻。音頻流 (和 MIDI 命令) 可以在應(yīng)用程序之間發(fā)送。比如說:一個(gè)應(yīng)用程序可以提供音頻的效果器或者濾波器。另一個(gè)應(yīng)用程序可以將它的音頻發(fā)送到第一個(gè)應(yīng)用程序中,并使用其中的音頻效果器處理音頻。被過濾的音頻又會(huì)被實(shí)時(shí)地發(fā)送回原來的應(yīng)用程序中。 CoreAudioKit 提供了一個(gè)簡單的跨應(yīng)用程序的音頻界面。

其他 APIs

OpenAL

OpenAL 是一個(gè)跨平臺(tái)的 API。它提供了位置 (3D) 和低延遲的音頻服務(wù)。它主要用于跨平臺(tái)游戲的開發(fā)。它有意地模仿了 OpenGL 中 API 的風(fēng)格。

MIDI

在 iOS 上,Core MIDI 和 CoreAudioKit 可以被用來使應(yīng)用程序表現(xiàn)為 MIDI 設(shè)備。在 OS X 上,Music Sequencing 服務(wù)提供了基于 MIDI 的控制和對音樂數(shù)據(jù)訪問的權(quán)限。Core MIDI 服務(wù)為服務(wù)器和驅(qū)動(dòng)程序提供了支持。

更多

  • 在 OS X 中,最基本的音頻接口就是 NSBeep(),它能夠簡單地播放系統(tǒng)中的聲音。
  • NSSound 類為 OS X 提供了用于播放聲音的簡單接口,與 iOS 中的 AVAudioPlayer 在概念上基本類似。
  • 所有的通知 API,包括 iOS 中的本地通知或者推送通知、OS X 中的 NSUserNotification 以及 CloudKit 通知,都可以播放聲音。
  • Audio Toolbox 框架是強(qiáng)大的,但是它的層級卻非常的低。在過去,它基于 C++ 所編寫,但是其大多數(shù)的功能現(xiàn)在都可以通過 AVFoundation 實(shí)現(xiàn)。
  • QTKit 和 QuickTime 框架現(xiàn)在已經(jīng)過時(shí)了,它們不應(yīng)該被用在以后的開發(fā)中。我們應(yīng)該使用 AVFoundation (和 AVKit) 來代替它們。