国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

HarmonyOS 音頻開發(fā)指導(dǎo):使用 OpenSL ES 開發(fā)音頻播放功能

這篇具有很好參考價值的文章主要介紹了HarmonyOS 音頻開發(fā)指導(dǎo):使用 OpenSL ES 開發(fā)音頻播放功能。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

OpenSL?ES 全稱為 Open?Sound?Library?for?Embedded?Systems,是一個嵌入式、跨平臺、免費的音頻處理庫。為嵌入式移動多媒體設(shè)備上的應(yīng)用開發(fā)者提供標準化、高性能、低延遲的 API。HarmonyOS 的 Native?API 基于Khronos?Group開發(fā)的OpenSL?ES?1.0.1?API?規(guī)范實現(xiàn),開發(fā)者可以通過<OpenSLES.h>和<OpenSLES_OpenHarmony.h>在 HarmonyOS 上使用相關(guān) API。

HarmonyOS 上的 OpenSL?ES

OpenSL?ES 中提供了以下的接口,HarmonyOS 當前僅實現(xiàn)了部分OpenSL?ES接口,可以實現(xiàn)音頻播放的基礎(chǔ)功能。

調(diào)用未實現(xiàn)接口后會返回 SL_RESULT_FEATURE_UNSUPPORTED,當前沒有相關(guān)擴展可以使用。

以下列表列舉了 HarmonyOS 上已實現(xiàn)的 OpenSL?ES 的接口,具體說明請參考OpenSL?ES規(guī)范:

●?HarmonyOS 上支持的 Engine 接口:

SLresult?(*CreateAudioPlayer)?(SLEngineItf?self,?SLObjectItf?*?pPlayer,?SLDataSource?*pAudioSrc,?SLDataSink?*pAudioSnk,?SLuint32?numInterfaces,?const?SLInterfaceID?*?pInterfaceIds,?const?SLboolean?*?pInterfaceRequired)

○?SLresult?(*CreateAudioRecorder)?(SLEngineItf?self,?SLObjectItf?*?pRecorder,?SLDataSource?*pAudioSrc,?SLDataSink?*pAudioSnk,?SLuint32?numInterfaces,?const?SLInterfaceID?*?pInterfaceIds,?const?SLboolean?*?pInterfaceRequired)

○?SLresult?(*CreateOutputMix)?(SLEngineItf?self,?SLObjectItf?*?pMix,?SLuint32?numInterfaces,?const?SLInterfaceID?*?pInterfaceIds,?const?SLboolean?*?pInterfaceRequired)

●?HarmonyOS 上支持的 Object 接口:SLresult?(*Realize)?(SLObjectItf?self,?SLboolean?async)

○?SLresult?(*GetState)?(SLObjectItf?self,?SLuint32?*?pState)

○?SLresult?(*GetInterface)?(SLObjectItf?self,?const?SLInterfaceID?iid,?void?*?pInterface)

○?void?(*Destroy)?(SLObjectItf?self)

●?HarmonyOS 上支持的 Playback 接口:SLresult?(*SetPlayState)?(SLPlayItf?self,?SLuint32?state)

○?SLresult?(*GetPlayState)?(SLPlayItf?self,?SLuint32?*pState)

●?HarmonyOS 上支持的 Volume 控制接口:SLresult?(*SetVolumeLevel)?(SLVolumeItf?self,?SLmillibel?level)

○?SLresult?(*GetVolumeLevel)?(SLVolumeItf?self,?SLmillibel?*pLevel)

○?SLresult?(*GetMaxVolumeLevel)?(SLVolumeItf?self,?SLmillibel?*pMaxLevel)

HarmonyOS 上支持的 BufferQueue 接口:以下接口需引入<OpenSLES_OpenHarmony.h>使用。

sl_iid_oh_bufferqueue’未定義的引用,1024程序員節(jié),HarmonyOS

sl_iid_oh_bufferqueue’未定義的引用,1024程序員節(jié),HarmonyOS

sl_iid_oh_bufferqueue’未定義的引用,1024程序員節(jié),HarmonyOS

完整示例

參考以下示例代碼,播放一個音頻文件。

1.? 添加頭文件。

#include?<OpenSLES.h>#include?<OpenSLES_OpenHarmony.h>#include?<OpenSLES_Platform.h>

2.? 使用 slCreateEngine 接口和獲取 engine 實例。

SLObjectItf?engineObject?=?nullptr;slCreateEngine(&engineObject,?0,?nullptr,?0,?nullptr,?nullptr);(*engineObject)->Realize(engineObject,?SL_BOOLEAN_FALSE);

3.? 獲取接口 SL_IID_ENGINE 的 engineEngine 實例。

SLEngineItf?engineEngine?=?nullptr;(*engineObject)->GetInterface(engineObject,?SL_IID_ENGINE,?&engineEngine);

4.? 配置播放器信息,創(chuàng)建 AudioPlayer。

SLDataLocator_BufferQueue?slBufferQueue?=?{????SL_DATALOCATOR_BUFFERQUEUE,????0};
//?具體參數(shù)需要根據(jù)音頻文件格式進行適配SLDataFormat_PCM?pcmFormat?=?{????SL_DATAFORMAT_PCM,????2,                           //?通道數(shù)????SL_SAMPLINGRATE_48,          //?采樣率????SL_PCMSAMPLEFORMAT_FIXED_16, //?音頻采樣格式????0,????0,????0};SLDataSource?slSource?=?{&slBufferQueue,?&pcmFormat};SLObjectItf?pcmPlayerObject?=?nullptr;(*engineEngine)->CreateAudioPlayer(engineEngine,?&pcmPlayerObject,?&slSource, null,?0,?nullptr,?nullptr);(*pcmPlayerObject)->Realize(pcmPlayerObject,?SL_BOOLEAN_FALSE);

5.? 獲取接口 SL_IID_OH_BUFFERQUEUE 的 bufferQueueItf 實例。

SLOHBufferQueueItf?bufferQueueItf;(*pcmPlayerObject)->GetInterface(pcmPlayerObject,?SL_IID_OH_BUFFERQUEUE,?&bufferQueueItf);

6.? 打開音頻文件,注冊 BufferQueueCallback 回調(diào)。

static?void?BufferQueueCallback?(SLOHBufferQueueItf?bufferQueueItf,?void?*pContext,?SLuint32?size){????SLuint8?*buffer?=?nullptr;????SLuint32?pSize;    (*bufferQueueItf)->GetBuffer(bufferQueueItf,?&buffer,?&pSize);    //?將待播放音頻數(shù)據(jù)寫入buffer    (*bufferQueueItf)->Enqueue(bufferQueueItf,?buffer,?size);}void?*pContext; //?可傳入自定義的上下文信息,會在Callback內(nèi)收到(*bufferQueueItf)->RegisterCallback(bufferQueueItf,?BufferQueueCallback,?pContext);

7.? 獲取接口 SL_PLAYSTATE_PLAYING 的 playItf 實例,開始播放。

SLPlayItf?playItf?=?nullptr;(*pcmPlayerObject)->GetInterface(pcmPlayerObject,?SL_IID_PLAY,?&playItf);(*playItf)->SetPlayState(playItf,?SL_PLAYSTATE_PLAYING);

8.? 結(jié)束音頻播放。文章來源地址http://www.zghlxwxcb.cn/news/detail-774000.html

(*playItf)->SetPlayState(playItf,?SL_PLAYSTATE_STOPPED);(*pcmPlayerObject)->Destroy(pcmPlayerObject);(*engineObject)->Destroy(engineObject);

到了這里,關(guān)于HarmonyOS 音頻開發(fā)指導(dǎo):使用 OpenSL ES 開發(fā)音頻播放功能的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • HarmonyOS鴻蒙開發(fā)指南:基于ArkTS開發(fā) 音頻錄制開發(fā)指導(dǎo)

    目錄 場景介紹 開發(fā)步驟 全流程場景 正常錄制場景 音頻錄制的主要工作是捕獲音頻信號

    2024年01月19日
    瀏覽(28)
  • HarmonyOS鴻蒙開發(fā)指南:基于ArkTS開發(fā) 音頻渲染開發(fā)指導(dǎo)

    目錄 場景介紹 音頻中斷 狀態(tài)檢查 異步操作 開發(fā)步驟

    2024年01月16日
    瀏覽(25)
  • OpenHarmony/HarmonyOS播放音頻

    OpenHarmony/HarmonyOS播放音頻

    大家好,今天我們來看OpenHarmony 使用AVPlayer可以實現(xiàn)端到端播放原始媒體資源,本開發(fā)指導(dǎo)將以完整地播放一首音樂作為示例,向開發(fā)者講解AVPlayer音頻播放相關(guān)功能。 創(chuàng)建AVPlayer, 設(shè)置播放資源, 設(shè)置播放參數(shù)(音量/倍速/焦點模式), 播放控制(播放/暫停/跳轉(zhuǎn)/停止),

    2024年02月07日
    瀏覽(16)
  • HarmonyOS:NativeWindow 開發(fā)指導(dǎo)

    HarmonyOS:NativeWindow 開發(fā)指導(dǎo)

    NativeWindow 是 HarmonyOS 本地平臺化窗口 ,表示圖形隊列的生產(chǎn)者端。開發(fā)者可以通過 NativeWindow 接口進行申請和提交 Buffer,配置 Buffer 屬性信息。 針對 NativeWindow,常見的開發(fā)場景如下: ●?通過 NativeWindow 提供的 Native?API 接口申請圖形 Buffer,并將生產(chǎn)圖形內(nèi)容寫入圖形 Buffe

    2024年02月04日
    瀏覽(18)
  • 鴻蒙HarmonyOS兼容JS的類Web開發(fā)-開發(fā)指導(dǎo)

    鴻蒙HarmonyOS兼容JS的類Web開發(fā)-開發(fā)指導(dǎo)

    list開發(fā)指導(dǎo) list是用來顯示列表的組件,包含一系列相同寬度的列表項,適合連續(xù)、多行地呈現(xiàn)同類數(shù)據(jù)。具體用法請參考list API。 創(chuàng)建list組件 在pages/index目錄下的hml文件中創(chuàng)建一個list組件。 說明 是的子組件,實現(xiàn)列表分組功能,不能再嵌套,可以嵌套。 是的子組件,展

    2024年02月02日
    瀏覽(18)
  • 音頻采集開發(fā)指導(dǎo)

    目錄 場景介紹 狀態(tài)檢查 開發(fā)步驟 AudioCapturer提供了用于獲取原始音頻文件的方法。開發(fā)者可以通過本指導(dǎo)了解應(yīng)用如何通過AudioCapturer采集音頻。 狀態(tài)檢查

    2024年01月23日
    瀏覽(12)
  • 開發(fā)指導(dǎo)—利用組件&插值器動畫實現(xiàn) HarmonyOS 動效

    開發(fā)指導(dǎo)—利用組件&插值器動畫實現(xiàn) HarmonyOS 動效

    在組件上創(chuàng)建和運行動畫的快捷方式。具體用法請參考通用方法。 通過調(diào)用 animate 方法獲得 animation 對象,animation 對象支持動畫屬性、動畫方法和動畫事件。 說明 ●?使用 animate 方法時必須傳入 Keyframes 和 Options 參數(shù)。 ●?多次調(diào)用 animate 方法時,采用 replace 策略,即最后一

    2024年02月09日
    瀏覽(22)
  • 開發(fā)指導(dǎo)—利用CSS動畫實現(xiàn)HarmonyOS動效(一)

    開發(fā)指導(dǎo)—利用CSS動畫實現(xiàn)HarmonyOS動效(一)

    注:本文內(nèi)容分享轉(zhuǎn)載自 HarmonyOS?Developer 官網(wǎng)文檔 CSS 是描述 HML 頁面結(jié)構(gòu)的樣式語言。所有組件均存在系統(tǒng)默認樣式,也可在頁面 CSS 樣式文件中對組件、頁面自定義不同的樣式。請參考通用樣式了解兼容 JS 的類 Web 開發(fā)范式支持的組件樣式。 ●?邏輯像素 px(文檔中以le

    2024年02月10日
    瀏覽(23)
  • HarmonyOS鴻蒙基于Java開發(fā): Java UI 動畫開發(fā)指導(dǎo)

    目錄 幀動畫 數(shù)值動畫 屬性動畫 動畫集合 多個動畫同時開始 多個動畫按順序逐個執(zhí)行 多個動畫順序執(zhí)行和同時執(zhí)行并存 動畫是組件的基礎(chǔ)特性之一,精心設(shè)計的動畫使UI變化更直觀,有助于改進應(yīng)用程序的外觀并改善用戶體驗。

    2024年02月21日
    瀏覽(36)
  • HarmonyOS:Neural Network Runtime 對接 AI 推理框架開發(fā)指導(dǎo)

    HarmonyOS:Neural Network Runtime 對接 AI 推理框架開發(fā)指導(dǎo)

    Neural?Network?Runtime 作為 AI 推理引擎和加速芯片的橋梁,為 AI 推理引擎提供精簡的 Native 接口,滿足推理引擎通過加速芯片執(zhí)行端到端推理的需求。 本文以圖 1 展示的 Add 單算子模型為例,介紹 Neural?Network?Runtime 的開發(fā)流程。Add 算子包含兩個輸入、一個參數(shù)和一個輸出,其

    2024年02月03日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包