日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【技術視界】學習指南:如何快速上手媒體生態(tài)一致體驗開發(fā)

HarmonyOS開發(fā)者 ? 來源:未知 ? 2023-11-16 21:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

# 技術視界# 【技術視界】欄目為開發(fā)者提供華為研發(fā)專家對于HarmonyOS關鍵技術的專業(yè)解讀,從不同角度、不同方面幫助開發(fā)者更好更快地掌握HarmonyOS相關開發(fā)知識。本期文章為大家?guī)淼氖侨A為媒體技術工程師的分享,希望為您的開發(fā)之路帶來啟發(fā)~

作者:chengcheng,華為媒體技術工程師

過去開發(fā)者們在使用多媒體能力時,往往會遇到這樣的問題,比如:為什么我開發(fā)的相機不如系統(tǒng)相機的效果好?為什么我的應用和其他的音樂一起發(fā)聲了,我要怎么處理?以及我應該怎么做才能在系統(tǒng)的播控中心里可以看到呢?對于開發(fā)者的這些疑問,HarmonyOS通過提供簡單易用體驗一致的生態(tài)接口,使得開發(fā)者可以輕松解決上述問題。下面會按照不同模塊逐個進行介紹。

相機

1.1問題背景

相機應用在早期的版本開發(fā)時,會發(fā)現(xiàn)三方相機和系統(tǒng)相機拍照的效果會有較明顯的不一致。如下圖對比,可以看到,在色彩/飽和度/紋理細節(jié)等方面有一些明顯的差異。

三方相機:

wKgaomVhpIaAY1wQAANLaF0w8u0434.png

系統(tǒng)相機:

wKgZomVhpKOAZjLfAAI4-Was4Fk585.png

1.2問題原因

那么這一問題是怎么產(chǎn)生的呢?主要有兩個原因:

1、系統(tǒng)相機采用了私有通路,從而獲取了更好的效果

wKgaomVWFwKAY8ZLAAC5SdN7a_M734.png

2、預覽流拍照效果差

wKgaomVWFwKALiDYAACYO7MdFQc478.png

1.3問題解決

針對以上問題,系統(tǒng)提出了如下的解決思路:

1、統(tǒng)一接口,統(tǒng)一流程,統(tǒng)一效果:通過統(tǒng)一開發(fā)接口和流程,從而使得三方相機和系統(tǒng)相機獲取一致的體驗

wKgaomVWFwOAB75lAAEI_0QE8SM360.png

2、分離預覽、拍照、錄像,明確流定義,讓正確的流做正確的事

wKgaomVWFwOAe975AAFU7-WV1vI111.png

3、相機管道流水線模型

wKgaomVWFwOAAqT7AAD6H9VGGPc052.png

1.4代碼示例

1、相機基本控制流程如下:

wKgaomVWFwOAGdnpAACw7mwQejs802.png

2、示例參考:

使用PreviewOutput實現(xiàn)相機預覽:

//1.創(chuàng)建預覽視圖XComponent,獲取SurfaceId
surfaceId=xComponent.getXComponentSurfaceId();
//2.創(chuàng)建預覽數(shù)據(jù)流輸出PreviewOutput
previewOutput=createPreviewOutput(profile,surfaceId);
//3.添加預覽數(shù)據(jù)流輸出到相機會話
session.addOutput(previewOutput);

(左右滑動查看更多)

使用PhotoOutput實現(xiàn)相機拍照:

//1.創(chuàng)建圖片接收器ImageReceiver,獲取SurfaceId
surfaceId=imageReceiver.getReceivingSurfaceId();
//2.創(chuàng)建拍照數(shù)據(jù)流輸出PhotoOutput
photoOutput=createPhotoOutput(profile,surfaceId);
//3.添加拍照數(shù)據(jù)流輸出到相機會話
session.addOutput(photoOutput);

(左右滑動查看更多)

使用VideoOutput實現(xiàn)相機錄像:

//1.創(chuàng)建視頻編碼器AVRecorder,獲取SurfaceId
surfaceId=avRecorder.getInputSurface();
//2.創(chuàng)建錄像數(shù)據(jù)流輸出VideoOutput
videoOutput=createVideoOutput(profile,surfaceId);
//3.添加錄像數(shù)據(jù)流輸出到相機會話
session.addOutput(videoOutput);

(左右滑動查看更多)

更多詳細的代碼參考:

https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/media/camera-overview.md

音視頻焦點

2.1問題背景

音視頻應用開發(fā)中遇到的很常見的一個場景,就是并發(fā)播放,而并發(fā)播放的一般解決思路是各個應用對焦點的申請和處理。

傳統(tǒng)的焦點管理方法,依賴應用遵守約定好的策略,如果有的應用不遵守,比如不響應或者濫用焦點,就可能會出現(xiàn)不發(fā)聲或者亂發(fā)聲的現(xiàn)象,影響了用戶的體驗。

2.2 解決思路

針對以上的問題,鴻蒙系統(tǒng)改進了焦點管理的設計,提供了統(tǒng)一的焦點處理策略,來規(guī)范應用對于焦點的使用,以達成統(tǒng)一的發(fā)聲體驗。

系統(tǒng)中的焦點管理模塊會存儲一個焦點策略表,定義了不同的場景下,哪些應用可以獲取焦點進行播放,哪些應用會失去焦點而停止播放,等等其他策略。

wKgaomVWFwOAWpGiAADRPWs0QLc305.png

2.3代碼示例

可以通過接口的使用來看一下實際處理策略。

首先,在A應用創(chuàng)建并使用AudioRenderer播放的時候,系統(tǒng)會自動為其申請焦點,這個是系統(tǒng)的行為。

A應用播放后,系統(tǒng)的焦點策略會進行判斷,如果A應用可以搶到焦點,那就會使得失去焦點的應用暫停播放;同時被暫停的應用也會在INTERRUPT_FORCE的回調事件中,得到暫停的狀態(tài),應用在收到這個事件后,就需要存儲并更新應用內的狀態(tài)。

當A應用停止播放,之前被暫停的應用也會收到一個恢復播放的事件,這個事件會在INTERRUPT_SHARE中,應用可以進行恢復播放的操作,或者忽略,這個非強制行為。

// 1.AudioRenderer進行播放時,系統(tǒng)會申請焦點
audioRenderer.start((err) => {});
// 2.注冊音頻打斷事件的回調
audioRenderer.on('audioInterrupt', (event) => {
  if (event.forceType === audio.InterruptForceType.INTERRUPT_FORCE) {
      // 3.強制打斷類型:音頻相關處理已由系統(tǒng)執(zhí)行,應用需更新自身狀態(tài)
  } else if (event.forceType === audio.InterruptForceType.INTERRUPT_SHARE) {
      // 4.共享打斷類型:應用可自主選擇執(zhí)行相關操作或忽略打斷事件
}});

(左右滑動查看更多)

更多詳細的代碼參考:

https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/media/audio-playback-concurrency.md

低時延播放

3.1問題背景

游戲、K歌、樂器等應用,對于音頻的輸出時延要求很高,常規(guī)的播放通路一般只能達到60ms左右甚至更高的時延,無法滿足這些應用的使用訴求。

3.2解決思路

鴻蒙系統(tǒng)提供了低時延通路的設計。如下圖所示,在系統(tǒng)中的普通通路之外,新增了一條垂直打通硬件的低時延通路,通過bypass 框架層直接在DSP進行混音,可以達成最低20ms的音頻輸出時延。

同時,為了簡化應用的接入,通過在接口中提供不同的參數(shù)配置,使開發(fā)者可以用一套接口同時支持低時延和普通通路兩種播放模式。

wKgaomVWFwOALUhOAAEOGBo7olg541.png

3.3代碼示例

可以通過OH_AudioStreamXXX接口來進行低時延通路的創(chuàng)建,通過傳入不同參數(shù)可以設置低時延模式,亦可以設置普通模式,從而使用一套接口來適配不同場景。

同時,低時延模式一般采用來pull模式來獲取數(shù)據(jù),這里提供了一個callback,需要應用創(chuàng)建并填入。

// 1.創(chuàng)建音頻流構造器,設置參數(shù)
OH_AudioStreamBuilder_Create(&builder, AUDIOSTREAM_TYPE_RENDERER);
OH_AudioStreamBuilder_SetSamplingRate(builder, rate); // 其他參數(shù)設置…
// 2.設置低延時模式和數(shù)據(jù)回調
OH_AudioStreamBuilder_SetLatencyMode(builder, AUDIOSTREAM_LATENCY_MODE_FAST) ;
OH_AudioStreamBuilder_SetRendererCallback(builder, callback, nullptr);
// 3.構造播放的音頻流并使用
OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
OH_AudioRenderer_Start(audioRenderer);?OH_AudioRenderer_Release(audioRenderer);

(左右滑動查看更多)

更多詳細的代碼參考:

https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/media/using-ohaudio-for-playback.md

播控能力

4.1系統(tǒng)能力

通過前面所說的焦點管理策略,系統(tǒng)解決了音視頻應用并發(fā)播放的問題;對于播放中的應用的控制,系統(tǒng)也提供了規(guī)范支持。

系統(tǒng)提供了C/S模式的播控管理的框架,應用作為客戶端,接入AVSession的會話端,設置必要的信息;系統(tǒng)的播控中心獲取與之對應的會話控制器,獲取信息進行展示,以及對應用發(fā)送控制命令。

通過標準接口的接入,規(guī)范了應用的播放行為;同時通過統(tǒng)一的播控中心的入口,使得用戶對于播放的控制做到一鍵直達。

wKgaomVWFwSAZpjcAAEL-L5GYnM102.png

4.2 代碼示例

import AVSessionManager from '@ohos.multimedia.avsession';
// 開始創(chuàng)建并激活媒體會話
// 創(chuàng)建session
let context: Context = getContext(this);
async function createSession() {
  let type: AVSessionManager.AVSessionType = 'audio';
  let session = await AVSessionManager.createAVSession(context, 'SESSION_NAME', type);
  await session.activate();
}
async function setSessionInfo() {
  // 播放器邏輯··· 引發(fā)媒體信息與播放狀態(tài)的變更
  // 設置必要的媒體信息
  let metadata: AVSessionManager.AVMetadata = {
    assetId: '0',
    title: 'TITLE',
    artist: 'ARTIST'
  };
  session.setAVMetadata(metadata).then(() => {
  }).catch((err: BusinessError) => {
  });
  // 簡單設置一個播放狀態(tài) - 暫停 未收藏
  let playbackState: AVSessionManager.AVPlaybackState = {
    state:AVSessionManager.PlaybackState.PLAYBACK_STATE_PAUSE,
    isFavorite:false
  };
  session.setAVPlaybackState(playbackState, (err) => {
  });
}
async function setListenerForMesFromController() {
  // 一般在監(jiān)聽器中會對播放器做相應邏輯處理
  // 不要忘記處理完后需要通過set接口同步播放相關信息,參考上面的用例
  session.on('play', () => {
    // do some tasks ···
  });
  session.on('pause', () => {
    // do some tasks ···
  });
}

(左右滑動查看更多)

更多詳細的代碼參考:

https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/media/avsession-overview.md

更多推薦


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • HarmonyOS
    +關注

    關注

    80

    文章

    2157

    瀏覽量

    36325

原文標題:【技術視界】學習指南:如何快速上手媒體生態(tài)一致體驗開發(fā)

文章出處:【微信號:HarmonyOS_Dev,微信公眾號:HarmonyOS開發(fā)者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Renesas RL78/G14 入門指南快速上手開發(fā)

    Renesas RL78/G14 入門指南快速上手開發(fā) 在電子開發(fā)領域,Renesas Starter Kit for RL78/G14
    的頭像 發(fā)表于 04-30 17:00 ?2619次閱讀

    CubeSuite+ 快速上手指南

    CubeSuite+ 快速上手指南 在電子開發(fā)領域,CubeSuite+ 是款強大且實用的工具。本文將詳細介紹 CubeSuite+ 的安裝、連接、項目創(chuàng)建、編程調試等內容,幫助電子
    的頭像 發(fā)表于 03-19 16:50 ?416次閱讀

    為什么國產(chǎn)MCU的工程生態(tài)很難統(tǒng)?

    背景 國產(chǎn) MCU 種類多、廠商眾多,生態(tài)碎片化明顯。 主要原因 廠商 SDK 不統(tǒng) :API、驅動結構差異大 開發(fā)工具閉源 :無法統(tǒng)配置流程 工程模板缺失 :初始化步驟、外設配置
    發(fā)表于 01-28 09:25

    Renesas Starter Kit for RX113快速上手指南

    Renesas Starter Kit for RX113快速上手指南 在電子開發(fā)領域,Renesas Starter Kit for RX113是款備受關注的
    的頭像 發(fā)表于 12-29 17:00 ?840次閱讀

    Renesas EK - RA8D2評估套件快速上手與定制開發(fā)指南

    Renesas EK - RA8D2評估套件快速上手與定制開發(fā)指南 在嵌入式開發(fā)領域,款好的評估套件能極大地加速
    的頭像 發(fā)表于 12-26 15:50 ?662次閱讀

    RAA2P4200評估套件快速上手:硬件與軟件設置指南

    RAA2P4200評估套件快速上手:硬件與軟件設置指南 在電子設計的世界里,能夠快速評估和驗證新設備的性能是加速產(chǎn)品開發(fā)的關鍵。瑞薩電子(R
    的頭像 發(fā)表于 12-26 14:55 ?710次閱讀

    快速上手FRDM-KE17Z512開發(fā)板:開啟高效MCU開發(fā)之旅

    快速上手FRDM-KE17Z512開發(fā)板:開啟高效MCU開發(fā)之旅 作為電子工程師,在MCU開發(fā)的道路上,擁有
    的頭像 發(fā)表于 12-24 16:50 ?507次閱讀

    探索NXP LPC5536-EVK評估板:快速上手指南

    探索NXP LPC5536-EVK評估板:快速上手指南 作為電子工程師,在日常的設計和開發(fā)工作中,我們經(jīng)常需要借助各種評估板來驗證和實現(xiàn)新的想法。今天就來和大家分享下NXP的LPC5
    的頭像 發(fā)表于 12-24 15:55 ?657次閱讀

    探索NXP FRDM - MCXN947開發(fā)板:快速上手指南

    探索NXP FRDM - MCXN947開發(fā)板:快速上手指南 在當今電子技術飛速發(fā)展的時代,款性能優(yōu)越、易于
    的頭像 發(fā)表于 12-24 15:00 ?1699次閱讀

    NTAG X DNA 快速上手:安全認證 IC 的開發(fā)指南

    NTAG X DNA 快速上手:安全認證 IC 的開發(fā)指南 在物聯(lián)網(wǎng)時代,設備的安全認證至關重要。NTAG X DNA 作為款安全認證 IC,為設備認證提供了可靠的解決方案。今天,我
    的頭像 發(fā)表于 12-24 11:05 ?785次閱讀

    想體驗鴻蒙生態(tài),該怎么獲取鴻蒙開發(fā)板?有哪些途徑?

    如何快速上手體驗鴻蒙生態(tài)? 想體驗鴻蒙生態(tài),該怎么獲取鴻蒙開發(fā)板?有哪些途徑?
    發(fā)表于 11-29 08:40

    自動駕駛感知不一致是怎么發(fā)生的?

    ,可能會造成感知不一致。所謂感知不一致,就是車上不同“眼睛”對同件事看法不一致。打個比方,攝像頭說前面有個人,激光雷達回來的點云卻很稀疏,毫米波雷達也測到
    的頭像 發(fā)表于 09-17 12:45 ?974次閱讀
    自動駕駛感知不<b class='flag-5'>一致</b>是怎么發(fā)生的?

    鏡頭不一致的問題原因分析

    在機器視覺系統(tǒng)的視界,鏡頭一致性猶如維系整個生態(tài)的隱形生命線,貫穿于光學成像、圖像處理到智能決策的全鏈路,其細微波動足以顛覆整個檢測系統(tǒng)的可靠性。當工業(yè)界熱衷于討論算法精度與算力突破時,鏡頭這
    的頭像 發(fā)表于 09-11 09:45 ?1493次閱讀

    零基礎學習LuatOS編程:快速上手開發(fā)實戰(zhàn)教程!

    無論你是剛接觸物聯(lián)網(wǎng)編程的新手,還是希望拓展技能的技術愛好者,本教程將為零基礎的讀者提供條清晰的LuatOS學習路徑。從安裝開發(fā)工具到編寫第
    的頭像 發(fā)表于 06-13 17:27 ?768次閱讀
    零基礎<b class='flag-5'>學習</b>LuatOS編程:<b class='flag-5'>快速</b><b class='flag-5'>上手</b><b class='flag-5'>開發(fā)</b>實戰(zhàn)教程!

    CAN總線采樣點不一致的危害

    、遵循行業(yè)標準 CiA推薦采樣點為87.5%,并提供詳細的位定時指南(如CiA 601-3文檔)。工程師應參考這些標準,確保所有節(jié)點配置一致。 為確保網(wǎng)絡可靠性,工程師必須為所有節(jié)點配置一致的位定時
    發(fā)表于 06-07 08:55
    万源市| 辽宁省| 乌什县| 如东县| 凤山县| 鞍山市| 江口县| 田阳县| 东至县| 巩义市| 论坛| 阿巴嘎旗| 惠来县| 类乌齐县| 玉溪市| 盖州市| 同德县| 陇西县| 穆棱市| 日照市| 德安县| 阿拉尔市| 高邮市| 沧州市| 满洲里市| 榆林市| 剑河县| 通辽市| 凤凰县| 富宁县| 镇原县| 富裕县| 柳河县| 石景山区| 巴楚县| 革吉县| 论坛| 班戈县| 大方县| 安丘市| 定兴县|