色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

【技術視界】學習指南:如何快速上手媒體生態一致體驗開發

HarmonyOS開發者 ? 來源:未知 ? 2023-11-16 21:15 ? 次閱讀
# 技術視界# 【技術視界】欄目為開發者提供華為研發專家對于HarmonyOS關鍵技術的專業解讀,從不同角度、不同方面幫助開發者更好更快地掌握HarmonyOS相關開發知識。本期文章為大家帶來的是華為媒體技術工程師的分享,希望為您的開發之路帶來啟發~

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

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

相機

1.1問題背景

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

三方相機:

wKgaomVhpIaAY1wQAANLaF0w8u0434.png

系統相機:

wKgZomVhpKOAZjLfAAI4-Was4Fk585.png

1.2問題原因

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

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

wKgaomVWFwKAY8ZLAAC5SdN7a_M734.png

2、預覽流拍照效果差

wKgaomVWFwKALiDYAACYO7MdFQc478.png

1.3問題解決

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

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

wKgaomVWFwOAB75lAAEI_0QE8SM360.png

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

wKgaomVWFwOAe975AAFU7-WV1vI111.png

3、相機管道流水線模型

wKgaomVWFwOAAqT7AAD6H9VGGPc052.png

1.4代碼示例

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

wKgaomVWFwOAGdnpAACw7mwQejs802.png

2、示例參考:

使用PreviewOutput實現相機預覽:

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

(左右滑動查看更多)

使用PhotoOutput實現相機拍照:

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

(左右滑動查看更多)

使用VideoOutput實現相機錄像:

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

(左右滑動查看更多)

更多詳細的代碼參考:

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

音視頻焦點

2.1問題背景

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

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

2.2 解決思路

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

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

wKgaomVWFwOAWpGiAADRPWs0QLc305.png

2.3代碼示例

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

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

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

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

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

(左右滑動查看更多)

更多詳細的代碼參考:

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

低時延播放

3.1問題背景

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

3.2解決思路

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

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

wKgaomVWFwOALUhOAAEOGBo7olg541.png

3.3代碼示例

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

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

// 1.創建音頻流構造器,設置參數
OH_AudioStreamBuilder_Create(&builder, AUDIOSTREAM_TYPE_RENDERER);
OH_AudioStreamBuilder_SetSamplingRate(builder, rate); // 其他參數設置…
// 2.設置低延時模式和數據回調
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系統能力

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

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

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

wKgaomVWFwSAZpjcAAEL-L5GYnM102.png

4.2 代碼示例

import AVSessionManager from '@ohos.multimedia.avsession';
// 開始創建并激活媒體會話
// 創建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() {
  // 播放器邏輯··· 引發媒體信息與播放狀態的變更
  // 設置必要的媒體信息
  let metadata: AVSessionManager.AVMetadata = {
    assetId: '0',
    title: 'TITLE',
    artist: 'ARTIST'
  };
  session.setAVMetadata(metadata).then(() => {
  }).catch((err: BusinessError) => {
  });
  // 簡單設置一個播放狀態 - 暫停 未收藏
  let playbackState: AVSessionManager.AVPlaybackState = {
    state:AVSessionManager.PlaybackState.PLAYBACK_STATE_PAUSE,
    isFavorite:false
  };
  session.setAVPlaybackState(playbackState, (err) => {
  });
}
async function setListenerForMesFromController() {
  // 一般在監聽器中會對播放器做相應邏輯處理
  // 不要忘記處理完后需要通過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

更多推薦


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

    關注

    79

    文章

    1977

    瀏覽量

    30255

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

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

收藏 人收藏

    評論

    相關推薦

    《HarmonyOS第課》煥新升級,賦能開發快速掌握鴻蒙應用開發

    《HarmonyOS第課》煥新升級,賦能開發快速掌握鴻蒙應用開發 隨著HarmonyOS NEXT發布,鴻蒙生態日益壯大,廣大
    發表于 01-02 14:24

    一致性測試系統的技術原理和也應用場景

    一致性測試系統是用來檢測零部件或系統實現是否符合相關標準或規范的測試流程,其技術原理和應用場景具體如下:技術原理 基本框架:協議一致性測試的理論已經相對成熟,主要代表是ISO制定的國際
    發表于 11-01 15:35

    異構計算下緩存一致性的重要性

    在眾多回復中,李博杰同學的回答被認為質量最高。他首先將緩存一致性分為兩個主要場景:是主機內CPU與設備間的一致性;二是跨主機的一致性。
    的頭像 發表于 10-24 17:00 ?568次閱讀
    異構計算下緩存<b class='flag-5'>一致</b>性的重要性

    級聯一致性和移相器校準應用手冊

    電子發燒友網站提供《級聯一致性和移相器校準應用手冊.pdf》資料免費下載
    發表于 08-29 10:48 ?0次下載
    級聯<b class='flag-5'>一致</b>性和移相器校準應用手冊

    LIN一致性測試規范2.1

    電子發燒友網站提供《LIN一致性測試規范2.1.pdf》資料免費下載
    發表于 08-15 17:14 ?3次下載

    鴻蒙OpenHarmony南向/北向快速開發教程-迅為RK3568開發

    運行鴻蒙4.1系統,意味著你將擁有更加流暢、高效的開發體驗。從硬件到軟件,從底層到應用,切都變得觸手可及! 那么,如何快速上手呢?別擔心,我們已經為你準備好了詳盡的
    發表于 07-23 10:44

    銅線鍵合焊接一致性:如何突破技術瓶頸?

    在微電子封裝領域,銅線鍵合技術以其低成本、高效率和良好的電氣性能等優勢,逐漸成為芯片與基板連接的主流方式。然而,銅線鍵合過程中的焊接一致性問題是制約其進步發展和應用的關鍵難題。焊接一致
    的頭像 發表于 07-04 10:12 ?1785次閱讀
    銅線鍵合焊接<b class='flag-5'>一致</b>性:如何突破<b class='flag-5'>技術</b>瓶頸?

    芯片封裝工程師必備知識和學習指南

    芯片封裝工程師是現代電子行業中不可或缺的專業人才,他們的工作涉及將設計好的芯片封裝到細小的封裝體中,以確保芯片能夠在各種環境下穩定、可靠地工作。本文將詳細介紹芯片封裝工程師必備的專業知識,以及成為優秀芯片封裝工程師的學習指南
    的頭像 發表于 04-26 10:50 ?2199次閱讀
    芯片封裝工程師必備知識和<b class='flag-5'>學習指南</b>

    Ubuntu系統快速上手

    Ubuntu系統快速上手概述和操作說明
    的頭像 發表于 04-12 16:25 ?557次閱讀
    Ubuntu系統<b class='flag-5'>快速</b><b class='flag-5'>上手</b>

    深入理解數據備份的關鍵原則:應用一致性與崩潰一致性的區別

    深入理解數據備份的關鍵原則:應用一致性與崩潰一致性的區別 在數字化時代,數據備份成為了企業信息安全的核心環節。但在備份過程中,兩個關鍵概念——應用一致性和崩潰一致性,常常被誤解或混淆。
    的頭像 發表于 03-11 11:29 ?939次閱讀
    深入理解數據備份的關鍵原則:應用<b class='flag-5'>一致</b>性與崩潰<b class='flag-5'>一致</b>性的區別

    openai sora如何使用?Sora 使用指南快速上手

    OpenAI Sora 使用指南快速上手 歡迎使用OpenAI Sora,款強大的人工智能視頻生成工具。無論您是視頻制作新手還是專業人士,本指南
    的頭像 發表于 02-20 11:19 ?4303次閱讀

    使用 Taro 開發鴻蒙原生應用 —— 快速上手,鴻蒙應用開發指南

    為鴻蒙原生應用。 在 《使用 Taro 開發鴻蒙原生應用》 系列文章中,我們已經介紹了 鴻蒙的基本概念 和 Taro 適配鴻蒙的原理。本文作為該系列的第三篇,將正式為開發者提供份完整的鴻蒙應用
    的頭像 發表于 02-02 16:09 ?889次閱讀
    使用 Taro <b class='flag-5'>開發</b>鴻蒙原生應用 —— <b class='flag-5'>快速</b><b class='flag-5'>上手</b>,鴻蒙應用<b class='flag-5'>開發指南</b>

    DDR一致性測試的操作步驟

    DDR一致性測試的操作步驟? DDR(雙數據率)一致性測試是對DDR內存模塊進行測試以確保其性能和可靠性。在進行DDR一致性測試時,需要遵循系列的操作步驟,以保證測試的準確性和完整性
    的頭像 發表于 02-01 16:24 ?1557次閱讀

    鎖相環的輸入輸出相位一致嗎?

    鎖相環是保證相位一致,還是相位差一致?鎖相環的輸入輸出相位一致嗎? 鎖相環(PLL)是種回路控制系統,用于保持輸出信號的相位與參考信號的相位之間的恒定關系。簡單來說,鎖相環的目的是保
    的頭像 發表于 01-31 15:45 ?1188次閱讀

    HC6800-ES V2.0單片機開發學習指南

    電子發燒友網站提供《HC6800-ES V2.0單片機開發學習指南.doc》資料免費下載
    發表于 01-07 09:48 ?13次下載
    主站蜘蛛池模板: 国产精品伦理一二三区伦理| 欧美国产精品久久久乱码| 日韩高清在线亚洲专区| 全部免费特黄特色大片看片| 亚洲中文字幕一二三四区苍井空| 护士日本xx厕所| 午夜性伦鲁啊鲁免费视频| 国产在线高清亚洲精品一区| 伊人久久影院大香线蕉| 免费看午夜高清性色生活片| 成人精品综合免费视频| 亚洲qingse中文字幕久久| 老师真棒无遮瑕版漫画免费| 朝鲜美女bbwbbw撒尿| 亚洲精品偷拍影视在线观看 | 日韩亚洲欧美中文高清在线| 国产又湿又黄又硬又刺激视频| 中文在线观看| 色噜噜2017最新综合| 九色PORNY真实丨国产免费| couo福利姬图库| 亚洲精品乱码8久久久久久日本| 欧美videqsdesex0| 好看AV中文字幕在线观看| 9久久免费国产精品特黄| 亚州笫一色惰网站| 农村脱精光一级| 极品少妇高潮啪啪AV无码| 超碰 无码 中文字幕| 伊人久久大香线蕉电影院| 色鲁97精品国产亚洲AV高| 美女被j进去动态| 果冻传媒免费观看| 第一次玩老妇真实经历| 中文无码在线观| 亚洲国产精品久久又爽黄A片| 欧美深夜0000XXXX疯狂| 精品国产乱码久久久久久免费流畅| 超碰高清熟女一区二区| 中文字幕视频在线免费观看| 亚洲AV噜噜88|