bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

Android音頻開發(6):使用OpenSLESAPI(上)-創新互聯

前面幾篇文章介紹了如何在 Java 層,利用 Android 提供的 AudioRecord 采集音頻,利用 AudioTrack 播放音頻,利用 MediaCodec 來編解碼,這些 API 均是 Android 提供的 Java 層 API,無論是采集、播放還是編解碼,這些 API 接口都需要將音頻數據從 Java 拷貝到 native 層,或者從 native 層拷貝到 Java,如果希望減少拷貝,開發更加高效的 Android 音頻應用,則建議使用 Android NDK 提供的 OpenSL ES API 接口,它支持在 native 層直接處理音頻數據。

10年積累的成都做網站、網站設計、外貿營銷網站建設經驗,可以快速應對客戶對網站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網絡服務。我雖然不認識你,你也不認識我。但先建設網站后付款的網站建設流程,更有馬邊彝族免費網站建設讓你可以放心的選擇與我們合作。

OpenSL ES 從 Android 2.3 開始就提供了,但是 Android 官方關于 OpenSL ES 的文檔非常少,網上資料也相對貧乏,再加上它的接口采用的是面向對象的 C 接口,不是特別簡單易懂,因此學習起來不是那么容易,我計劃通過兩篇文章來介紹一下這套框架,希望能對初學者有所幫助。

本文不準備介紹 OpenSL ES 的工作原理和函數使用(這些將會在下一篇文章中介紹),而是從宏觀的角度簡單介紹一下 OpenSL ES 概況,讓初學者了解這套 API 是干什么的,可以做哪些事,不能做哪些事,最后給出一些參考示例代碼和資源鏈接。

1. OpenSL ES 是什么?

OpenSL ES 全稱是:Open Sound Library for Embedded Systems,是一套無授權費、跨平臺、針對嵌入式系統精心優化的硬件音頻加速API。它為嵌入式移動多媒體設備上的本地應用程序開發者提供標準化, 高性能, 低響應時間的音頻功能實現方法,并實現軟硬件音頻性能的直接跨平臺部署,降低執行難度,促進高級音頻市場的發展。(來自 百度百科)

一句話概述:OpenSL ES 是一套針對嵌入式平臺的音頻標準。

2. Android 與 OpenSL ES 是什么關系?

Android 2.3 (API 9) 即開始支持 OpenSL ES 標準了,通過 NDK 提供相應的 API 開發接口,下圖是 Android 官方給出的關系圖(出處:這里):

Android音頻開發(6):使用 OpenSL ES API(上)

由該圖可以看出,Android 實現的 OpenSL ES 只是 OpenSL 1.0.1 的子集,并且進行了擴展,因此,對于 OpenSL ES API 的使用,我們還需要特別留意哪些是 Android 支持的,哪些是不支持的,具體相關文檔的地址位于 NDK docs 目錄下:

NDKroot/docs/Additional_library_docs/opensles/index.html
NDKroot/docs/Additional_library_docs/opensles/OpenSL_ES_Specification_1.0.1.pdf

3. 可以做什么?不能做什么?

下面總結一下 Android OpenSL ES 的特點以及不支持的功能。

特性:

(1)C 語言接口,兼容 C++,需要在 NDK 下開發,能更好地集成在 native 應用中

(2)運行于 native 層,需要自己管理資源的申請與釋放,沒有 Dalvik 虛擬機的垃圾回收機制

(3)支持 PCM 數據的采集,支持的配置:16bit 位寬,16000 Hz采樣率,單通道。(其他的配置不能保證兼容所有平臺)

(4)支持 PCM 數據的播放,支持的配置:8bit/16bit 位寬,單通道/雙通道,小端模式,采樣率(8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 Hz)

(5)支持播放的音頻數據來源:res 文件夾下的音頻、assets 文件夾下的音頻、sdcard 目錄下的音頻、在線網絡音頻、代碼中定義的音頻二進制數據等等

不支持:

(1)不支持版本低于 Android 2.3 (API 9) 的設備

(2)沒有全部實現 OpenSL ES 定義的特性和功能

(3)不支持 MIDI

(4)不支持直接播放 DRM 或者 加密的內容

(5)不支持音頻數據的編解碼,如需編解碼,需要使用 MediaCodec API 或者第三方庫

(6)在音頻延時方面,相比于上層 API,并沒有特別明顯地改進

4. 用 OpenSL ES 開發音頻應用有什么好處 ?

(1)避免音頻數據頻繁在 native 層和 Java 層拷貝,提高效率

(2)相比于 Java API,可以更靈活地控制參數

(3)由于是 C 代碼,因此可以做深度優化,比如采用 NEON 優化

(4)代碼細節更難被反編譯

(5)其他,待添加

5. 示例代碼

有個老外(Victor Lazzarini)為 Android OpenSL ES API 寫了一篇不錯的介紹,并給出了一些示例代碼,鏈接如下:

https://audioprograming.wordpress.com/2012/03/03/android-audio-streaming-with-opensl-es-and-the-ndk/

我提取了其中的兩個文件,修改了一下,整理到我的 AudioDemo 示例中了,個人覺得有更好地演示效果,地址如下:

https://github.com/Jhuster/AudioDemo

6. 有哪些不錯的資源 ?

《OpenSL ES Basics》

《Native Audio: OpenSL ES for Android》

《Android Audio Architecture》

《OpenSL ES for Android》

《Tutorials for OpenSL ES for Android》

《Android.NDK.Beginner's.Guide.pdf》

《Getting Started with OpenSL on Android》

《Android audio streaming with OpenSL ES and the NDK》

7. 小結

關于如何 Android OpenSL ES API 就介紹到這兒了,文章中有不清楚的地方歡迎留言或者來信 lujun.hust@gmail.com 交流,或者關注我的新浪微博 @盧_俊 或者 微信公眾號 @Jhuster 獲取最新的文章和資訊。

Android音頻開發(6):使用 OpenSL ES API(上)

另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

新聞標題:Android音頻開發(6):使用OpenSLESAPI(上)-創新互聯
URL標題:http://vcdvsql.cn/article38/dgdssp.html

成都網站建設公司_創新互聯,為您提供品牌網站設計外貿網站建設虛擬主機關鍵詞優化服務器托管網站導航

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

微信小程序開發