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

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

3天內不再提示

關于實時音視頻SDK對智能硬件的視頻適配

科技觀察者 ? 來源:財訊網 ? 作者:科技觀察者 ? 2020-07-14 17:56 ? 次閱讀

融云實時音視頻 SDK 會對市面上的各類智能硬件設備,特別是各種類型、各種版本的手機進行適配,以確保 SDK 的穩定性。但不同于手機的適配,智能硬件的適配有很多不同之處:

1.很多智能硬件的運行內存、CPU 性能等硬件配置普遍比手機性能低;2.部分廠商在智能硬件的攝像頭安裝方向、個數、類型和手機有較大差異。所以在適配問題上,智能硬件需要單獨進行驗證討論,下面就為大家進行詳細解析。

融云實時音視頻 SDK 攝像頭采集數據提供 Texture 和 YUV(NV21) 兩種方式,通過設置不同采集方式可以獲取到 Texture ID 或 byte 原始視頻流數據。Texture ID 用來表示圖像照片或者一系列的數據,使用紋理可以使物體展現更多的細節,YUV 則是攝像頭采集出的 NV21 格式數據。

YUV 是一種彩色編碼格式,可以將其理解為原始視頻流數據,主要用在視頻、圖形處理流水線中(pipeline)。相對于 RGB 顏色空間,設計 YUV 的目的就是為了編碼、傳輸更方便,減少帶寬占用和信息出錯。

融云實時音視頻 SDK 中默認采用 Texture 方式采集,當本端使用該方式采集時,編碼器默認將使用 android.media.MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface(0x7F000789) 顏色空間進行編碼,如果對端不支持該顏色空間的情況下,可能會導致解碼花屏或者解碼失敗問題,開發者可以在加入房間之前調用 RongRTCConfig.Builder#enableVideoTexture 方法設置是否采用 texture 方式采集。

在遇見智能硬件攝像頭安裝方向、個數、類型導致的視頻采集問題時,可以通過融云實時音視頻SDK中 RongRTCConfig.Builder 類的設置方法 setCameraDisplayOrientation 和 setCustomizedCameraParameter,修改攝像機采集的角度和直接設置給 android.hardware.Camera#setParameters(Parameters params) 配置信息。

融云實時音視頻 SDK 會通過 android.hardware.Camera.getNumberOfCameras() 方法獲取到可用的攝像頭 ID,默認會打開前置攝像頭,對于需要打開魚眼鏡頭或者搭載多個攝像頭硬件設備場景中,可以使用

RongRTCCapture.getInstance().startCameraCapture 打開、切換;RongRTCCapture.getInstance().switchCamera 指定 ID 的攝像頭。當智能硬件帶有 USB 攝像頭或 USB 麥克風,并且安卓系統無法識別其外置設備時,調用上文方法將無法打開硬件設備(對端將無法觀看本端視頻),這種情況,推薦使用融云實時音視頻 SDK 發布自定義視頻流功能。

二、視頻編解碼適配

融云音視頻 SDK 支持 H.264 編解碼器,以高壓縮、高質量和支持多種網絡的流媒體傳輸著稱,同時也是 MPEG-4 第十部分,是由ITU-T視頻編碼專家組(VCEG)和ISO/IEC動態圖像專家組(MPEG)聯合組成的聯合視頻組(JVT,Joint Video Team)提出的高度壓縮數字視頻編解碼器標準,這個標準通常被稱之為H.264/AVC。

使用融云音視頻 SDK 時,可以設置編碼器顏色空間、編碼等級、編碼幀率、編碼關鍵幀間隔時間、編碼器碼率控制模式等配置信息,以解決設備編解碼導致的問題。

融云 RTCLib SDK 中攝像頭采集數據采用的顏色格式為 NV21,它屬于 YUV420 格式,如果智能硬件廠商定制了顏色空間,會導致融云 SDK 內部處理顏色空間邏輯和設備所支持顏色空間不符合,出現編碼報錯、對端解碼失敗、對端觀看花屏等現象。遇見此問題,開發者可以使用 RongRTCConfig.Builder#setHardWareEncodeColor 方法修改編碼顏色空間來解決。

由于視頻編碼后顯示的數據質量偏低,為了調整質量,就需要設置編碼等級 level、profile。融云 SDK 默認使用 android.media.MediaCodecInfo.CodecProfileLevel.AVCProfileBaseline ,開發者也可以通過 RongRTCConfig.Builder#enableHardWareEncodeHighProfile 方法將其設置為 android.media.MediaCodecInfo.CodecProfileLevel.AVCProfileHigh,AVCProfileHigh 所對應的編碼等級為 android.media.MediaCodecInfo.CodecProfileLevel.AVCLevel3,AVCProfileHigh 相對 AVCProfileBaseline 采用了更高級的壓縮特性,這意味著對端在解碼時也需要硬件更高的性能,采用 AVCProfileBaseline 是因為其兼容性更高。安卓源碼中 7.0 版本之前默認使用 AVCProfileBaseline ,7.0 才修改了該邏輯。

安卓 6.0 源碼(android/6.0.1_r16/xref/frameworks/av/media/libstagefright/ACodec.cpp)片段如下:

安卓 7.0 源碼(android/7.0.0_r31/xref/frameworks/av/media/libstagefright/ACodec.cpp)代碼片段如下:

編碼碼率控制模式

對于需要傳輸高質量視頻流的場景,除了設置分辨率、幀率、碼率提高視頻質量外,還可以控制編碼碼率,融云 SDK 默認使用 CBR ,開發者可以使用音視頻 SDK 的 RongRTCConfig.Builder#setHardWareEncodeBitrateMode 方法修改模式設置。該屬性安卓 5.0 才開始支持參數設置,以下是對三種模式的介紹:

編碼關鍵幀間隔時間

H.264 標準中有 Instantaneous Decoding Refresh(IDR,即時解碼刷新,以下稱 I 幀)。H.264 圖像以序列為單位進行組織,一個序列是一段圖像編碼后的數據流,該序列以 I 幀開始,到下一個 I 幀結束。兩個 I 幀之間為多個 P 幀(Predictive-frame)或 B 幀(Bi-directional predicted frames),設置的編碼關鍵幀間隔時間就是 IDR 間隔時間。

I 幀:通常是每個 GOP(Group Of Picture) (MPEG 所使用的一種視頻壓縮技術) 的第一個幀,I 幀圖像采用幀內編碼方式,即只利用了單幀圖像內的空間相關性,而沒有利用時間相關性。I 幀使用幀內壓縮,不使用運動補償,由于 I 幀不依賴其它幀,所以是隨機存取的入點,同時是解碼的基準幀。I 幀主要用于解碼器的初始化,以及節目的切換和插入,I 幀圖像的壓縮倍數相對較低,I 幀圖像是周期性出現在圖像序列中的,出現頻率可由編碼器選擇,I 幀壓縮可去掉視頻的空間冗余,而 B、P 則是為了去掉時間冗余。

P 幀:向前參考幀(第一幀之后的幀,只存在和前一幀的差異,可以提高壓縮效率和圖像質量),壓縮時只參考前一個幀,屬于幀間編碼方式(即同時利用了空間和時間上的相關性),P 幀圖像中可以包含幀內編碼的部分,即 P 幀中的每一個宏塊可以是前向預測,也可以是幀內編碼;它參考前一個 B 幀或 I 幀來解碼出一張完整的圖像。

B 幀:雙向參考幀,壓縮參考前一幀和后一幀,屬于幀間壓縮技術。壓縮比高,如果網絡不好,對實時要求高的話會一直等待,實時互動直播一般不使用,值得注意的是,由于 B 幀圖像采用了未來幀作為參考,因此 MPEG-2 編碼碼流中圖像幀的傳輸順序和顯示順序是不同的。

因為 H.264 采用了多幀預測,所以 I 幀之后的 P幀可能會參考 I 幀之前的幀,這使得在隨機訪問的時候不能以找到 I 幀作為參考條件,因為即使找到了 I 幀,I 幀之后的數據也有可能解不出數據,而IDR 幀就是一種特殊的 I 幀(這一幀之后的所有參考幀只會參考IDR,而不會參考其他前面的幀)。在解碼器中,一旦收到 IDR 幀,就會立即清理參考幀緩沖區,并將 IDR 幀作為被參考幀。

融云 SDK 中關鍵幀間隔時間默認為 100 秒,開發者可以通過 RongRTCConfig.Builder#setHardWareEncodeKeyFrameInterval 方法修改間隔時間,如果該值設置過小,會加大網絡流量和編解碼壓力;如果過大,在網絡有波動情況下,圖像質量會下降。以上就是融云在實時音視頻 SDK 對智能硬件視頻適配方面的一些經驗,希望能對開發者朋友們理解智能硬件的適配有所幫助。

fqj

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

    關注

    6

    文章

    1896

    瀏覽量

    72029
  • 智能硬件
    +關注

    關注

    203

    文章

    2312

    瀏覽量

    106720
收藏 人收藏

    評論

    相關推薦

    音視頻產品EMC整改案例解析

    音視頻產品EMCRE整改案例解析
    的頭像 發表于 05-20 16:49 ?111次閱讀
    <b class='flag-5'>音視頻</b>產品EMC整改案例解析

    【RTC程序設計:實時音視頻權威指南】音視頻的編解碼壓縮技術

    音視頻所載有的信息在通過傳輸的時候就需要壓縮編碼。 其中,文本壓縮是指通過使用各種算法和技術,將文本數據表示為更緊湊的形式,以減少存儲空間。 霍夫曼編碼是一種無損壓縮算法,它可以根據字符出現
    發表于 04-28 21:04

    音視頻SoC與AI技術融合,帶來更智能音視頻處理解決方案

    ,如WiFi路由器和物聯網設備。在安防、智能音頻等領域,對SoC芯片的算力要求相比智能手機、服務器等略低。 ? 人工智能技術與音視頻SoC 的融合???????????????????
    的頭像 發表于 04-26 01:20 ?2948次閱讀

    【RTC程序設計:實時音視頻權威指南】音頻采集與預處理

    音視頻通信對音頻采集的實時性和性能要求很高。為了降低延遲并提高吞吐量,可能需要采用一些優化技術,如硬件加速、多線程處理等。 最后,音頻采集還需要考慮與后續處理步驟的銜接問題。例如,采集到的音頻
    發表于 04-25 10:41

    【RTC程序設計:實時音視頻權威指南】新書一瞥

    本人從事音視頻領域的開發,經常接觸實時音視頻處理相關的技術,看到這本書非常有興趣閱讀,這本書全面介紹實時音視頻(RTC)技術的權威著作,該書
    發表于 04-22 09:09

    音視頻解碼生成:打造極致觀影體驗的關鍵技術

    在現代多媒體時代,音視頻解碼生成技術已成為提供極致觀影體驗的核心要素。它不僅能夠確保音視頻數據的高效傳輸,還能保證播放的流暢性和畫質清晰度,為用戶帶來身臨其境的觀影享受。 1. 解碼生成的重要性
    的頭像 發表于 02-25 14:43 ?197次閱讀

    音視頻解碼生成在多媒體制作中的應用

    音視頻解碼生成是多媒體制作中不可或缺的一部分,它扮演著將編碼的音視頻數據轉化為可播放、可編輯的內容的關鍵角色。在多媒體制作的全過程中,音視頻解碼生成技術都有廣泛的應用。 1. 視頻編輯
    的頭像 發表于 02-21 14:39 ?147次閱讀

    音視頻

    音視頻技術都喜歡深究內部最核心的原理和機制,尤其是ffmpeg這個編解碼庫,可以說是音視頻領域事實上的標準。語音智能算法,語言語義分析和理解,流媒體服務器等高端技術也都基于它而構建。希望有幸獲得本書,深度學習ffmpeg核心技
    發表于 11-23 08:51

    ESP RTC音視頻傳輸延遲測試

    音視頻
    Kevincoooool
    發布于 :2023年11月11日 10:54:02

    HarmonyOS音視頻開發概述

    音視頻開發指導中,將介紹各種涉及音頻、視頻播放或錄制功能場景的開發方式,指導開發者如何使用系統提供的音視頻API實現對應功能。比如使用TonePlayer實現簡單的提示音,當設備接收到新消息
    發表于 10-17 16:39

    打造沉浸式專業音視頻體驗

    AMD?ProAV技術與方案分享專題研討會 我們的生活被專業的音視頻設備所包圍。從零售廣告中的數字標牌,到現場活動中的麥克風和大屏幕顯示;從體育賽事的現場直播到行業的實時監控....。需要在不犧牲
    的頭像 發表于 09-06 09:10 ?488次閱讀
    打造沉浸式專業<b class='flag-5'>音視頻</b>體驗

    CV-CUDA 助力騰訊云音視頻 PaaS 平臺實現視頻增強 AI 全流程 GPU 加速

    全流程置于 GPU 上進行加速, 前后處理部分效率提升 16% - 38%。 客戶簡介 騰訊云音視頻 PaaS 平臺(以下簡稱騰訊視頻云)專注技術產品,構建了行業中極速高清智能轉碼、超低時延快直播
    的頭像 發表于 07-28 17:05 ?497次閱讀
    CV-CUDA 助力騰訊云<b class='flag-5'>音視頻</b> PaaS 平臺實現<b class='flag-5'>視頻</b>增強 AI 全流程 GPU 加速

    音視頻矩陣是什么意思 音視頻矩陣的主要作用

    音視頻矩陣(Audio-Video Matrix)是一種設備或系統,用于管理和控制音頻和視頻信號的傳輸和分配。它允許用戶根據需求選擇和路由不同的音頻和視頻源,并將它們傳輸到所需的輸出設備,如揚聲器、顯示器、投影儀等。
    發表于 07-20 15:16 ?2506次閱讀

    音視頻開發:實時傳輸與處理音視頻流的技術與應用

    音視頻
    YS YYDS
    發布于 :2023年06月27日 18:20:58

    音視頻集成是什么 音視頻視頻有什么區別

    音視頻集成是將音頻和視頻設備、系統和技術進行整合,以實現全面的音視頻功能和體驗的過程。
    發表于 06-19 17:14 ?1963次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>