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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于實(shí)時(shí)音視頻SDK對(duì)智能硬件的視頻適配

科技觀察者 ? 來(lái)源:財(cái)訊網(wǎng) ? 作者:科技觀察者 ? 2020-07-14 17:56 ? 次閱讀

融云實(shí)時(shí)音視頻 SDK 會(huì)對(duì)市面上的各類(lèi)智能硬件設(shè)備,特別是各種類(lèi)型、各種版本的手機(jī)進(jìn)行適配,以確保 SDK 的穩(wěn)定性。但不同于手機(jī)的適配,智能硬件的適配有很多不同之處:

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

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

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

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

在遇見(jiàn)智能硬件攝像頭安裝方向、個(gè)數(shù)、類(lèi)型導(dǎo)致的視頻采集問(wèn)題時(shí),可以通過(guò)融云實(shí)時(shí)音視頻SDK中 RongRTCConfig.Builder 類(lèi)的設(shè)置方法 setCameraDisplayOrientation 和 setCustomizedCameraParameter,修改攝像機(jī)采集的角度和直接設(shè)置給 android.hardware.Camera#setParameters(Parameters params) 配置信息。

融云實(shí)時(shí)音視頻 SDK 會(huì)通過(guò) android.hardware.Camera.getNumberOfCameras() 方法獲取到可用的攝像頭 ID,默認(rèn)會(huì)打開(kāi)前置攝像頭,對(duì)于需要打開(kāi)魚(yú)眼鏡頭或者搭載多個(gè)攝像頭硬件設(shè)備場(chǎng)景中,可以使用

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

二、視頻編解碼適配

融云音視頻 SDK 支持 H.264 編解碼器,以高壓縮、高質(zhì)量和支持多種網(wǎng)絡(luò)的流媒體傳輸著稱,同時(shí)也是 MPEG-4 第十部分,是由ITU-T視頻編碼專(zhuān)家組(VCEG)和ISO/IEC動(dòng)態(tài)圖像專(zhuān)家組(MPEG)聯(lián)合組成的聯(lián)合視頻組(JVT,Joint Video Team)提出的高度壓縮數(shù)字視頻編解碼器標(biāo)準(zhǔn),這個(gè)標(biāo)準(zhǔn)通常被稱之為H.264/AVC。

使用融云音視頻 SDK 時(shí),可以設(shè)置編碼器顏色空間、編碼等級(jí)、編碼幀率、編碼關(guān)鍵幀間隔時(shí)間、編碼器碼率控制模式等配置信息,以解決設(shè)備編解碼導(dǎo)致的問(wèn)題。

融云 RTCLib SDK 中攝像頭采集數(shù)據(jù)采用的顏色格式為 NV21,它屬于 YUV420 格式,如果智能硬件廠商定制了顏色空間,會(huì)導(dǎo)致融云 SDK 內(nèi)部處理顏色空間邏輯和設(shè)備所支持顏色空間不符合,出現(xiàn)編碼報(bào)錯(cuò)、對(duì)端解碼失敗、對(duì)端觀看花屏等現(xiàn)象。遇見(jiàn)此問(wèn)題,開(kāi)發(fā)者可以使用 RongRTCConfig.Builder#setHardWareEncodeColor 方法修改編碼顏色空間來(lái)解決。

由于視頻編碼后顯示的數(shù)據(jù)質(zhì)量偏低,為了調(diào)整質(zhì)量,就需要設(shè)置編碼等級(jí) level、profile。融云 SDK 默認(rèn)使用 android.media.MediaCodecInfo.CodecProfileLevel.AVCProfileBaseline ,開(kāi)發(fā)者也可以通過(guò) RongRTCConfig.Builder#enableHardWareEncodeHighProfile 方法將其設(shè)置為 android.media.MediaCodecInfo.CodecProfileLevel.AVCProfileHigh,AVCProfileHigh 所對(duì)應(yīng)的編碼等級(jí)為 android.media.MediaCodecInfo.CodecProfileLevel.AVCLevel3,AVCProfileHigh 相對(duì) AVCProfileBaseline 采用了更高級(jí)的壓縮特性,這意味著對(duì)端在解碼時(shí)也需要硬件更高的性能,采用 AVCProfileBaseline 是因?yàn)槠浼嫒菪愿摺0沧吭创a中 7.0 版本之前默認(rèn)使用 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)代碼片段如下:

編碼碼率控制模式

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

編碼關(guān)鍵幀間隔時(shí)間

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

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

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

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

因?yàn)?H.264 采用了多幀預(yù)測(cè),所以 I 幀之后的 P幀可能會(huì)參考 I 幀之前的幀,這使得在隨機(jī)訪問(wèn)的時(shí)候不能以找到 I 幀作為參考條件,因?yàn)榧词拐业搅?I 幀,I 幀之后的數(shù)據(jù)也有可能解不出數(shù)據(jù),而IDR 幀就是一種特殊的 I 幀(這一幀之后的所有參考幀只會(huì)參考IDR,而不會(huì)參考其他前面的幀)。在解碼器中,一旦收到 IDR 幀,就會(huì)立即清理參考幀緩沖區(qū),并將 IDR 幀作為被參考幀。

融云 SDK 中關(guān)鍵幀間隔時(shí)間默認(rèn)為 100 秒,開(kāi)發(fā)者可以通過(guò) RongRTCConfig.Builder#setHardWareEncodeKeyFrameInterval 方法修改間隔時(shí)間,如果該值設(shè)置過(guò)小,會(huì)加大網(wǎng)絡(luò)流量和編解碼壓力;如果過(guò)大,在網(wǎng)絡(luò)有波動(dòng)情況下,圖像質(zhì)量會(huì)下降。以上就是融云在實(shí)時(shí)音視頻 SDK 對(duì)智能硬件視頻適配方面的一些經(jīng)驗(yàn),希望能對(duì)開(kāi)發(fā)者朋友們理解智能硬件的適配有所幫助。

fqj

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

    關(guān)注

    6

    文章

    1947

    瀏覽量

    72929
  • 智能硬件
    +關(guān)注

    關(guān)注

    205

    文章

    2347

    瀏覽量

    107609
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AMS-HE200:HDMI音視頻網(wǎng)絡(luò)延長(zhǎng)器,開(kāi)啟傳輸新時(shí)代

    在數(shù)字化時(shí)代,高清音視頻傳輸已經(jīng)成為各行各業(yè)不可或缺的重要技術(shù)。無(wú)論是安防監(jiān)控、視頻會(huì)議,還是戶外廣告、家庭影院,高清音視頻信號(hào)的無(wú)縫傳輸都扮演著至關(guān)重要的角色。深圳市程達(dá)科技有限公司,作為高清
    的頭像 發(fā)表于 11-27 10:04 ?153次閱讀
    AMS-HE200:HDMI<b class='flag-5'>音視頻</b>網(wǎng)絡(luò)延長(zhǎng)器,開(kāi)啟傳輸新時(shí)代

    盤(pán)點(diǎn)那些常見(jiàn)音視頻接口

    我們熟知的一些常見(jiàn)音視頻接口,發(fā)展至今在日常使用中已經(jīng)漸漸少了。但是在工業(yè)領(lǐng)域的音視頻連接,依然能看到其身影。這些看似消失的接口,它們現(xiàn)在發(fā)展成什么樣子了?本期我們將做一個(gè)大盤(pán)點(diǎn)。
    的頭像 發(fā)表于 09-09 14:34 ?545次閱讀

    常見(jiàn)音視頻接口的靜電浪涌防護(hù)和濾波方案

    音視頻接口在現(xiàn)代多媒體設(shè)備中扮演著至關(guān)重要的角色,它們確保了音視頻信號(hào)在不同設(shè)備間的順暢傳輸,各種類(lèi)型的音視頻接口滿足了多樣化的應(yīng)用場(chǎng)景需求。 在音視頻接口的設(shè)計(jì)領(lǐng)域,靜電浪涌防護(hù)與濾
    的頭像 發(fā)表于 06-25 11:28 ?676次閱讀

    BK7256 WIFI+BLE音視頻低功耗芯片 ,支持小家電驅(qū)屏,ipc、可視門(mén)鎖,智能貓眼

    BK7256是一顆采用22nm工藝制程,高度集成wifi+ble的低功耗音視頻芯片,可用于實(shí)時(shí)遠(yuǎn)程音視頻傳輸和iot智能中控驅(qū)屏應(yīng)用。 1、雙核RISC-V@320Mhz,內(nèi)置784K
    發(fā)表于 06-15 13:53

    音視頻產(chǎn)品EMC整改案例解析

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

    高清HDMI轉(zhuǎn)USB 3.0音視頻多功能音采集卡-測(cè)評(píng)

    LCC380的設(shè)計(jì)理念在于全面考慮到各種用戶場(chǎng)景下的需求。為了實(shí)現(xiàn)高品質(zhì)的音視頻采集效果,卡體搭載了業(yè)界領(lǐng)先的音頻處理器解決方案。無(wú)論您是熱衷于游戲直播、視頻會(huì)議還是其他音視頻應(yīng)用,都能通過(guò)LCC380獲得出色的音頻輸入輸出體驗(yàn)
    的頭像 發(fā)表于 05-14 17:45 ?897次閱讀
    高清HDMI轉(zhuǎn)USB 3.0<b class='flag-5'>音視頻</b>多功能音采集卡-測(cè)評(píng)

    【RTC程序設(shè)計(jì):實(shí)時(shí)音視頻權(quán)威指南】音視頻的編解碼壓縮技術(shù)

    音視頻所載有的信息在通過(guò)傳輸?shù)臅r(shí)候就需要壓縮編碼。 其中,文本壓縮是指通過(guò)使用各種算法和技術(shù),將文本數(shù)據(jù)表示為更緊湊的形式,以減少存儲(chǔ)空間。 霍夫曼編碼是一種無(wú)損壓縮算法,它可以根據(jù)字符出現(xiàn)
    發(fā)表于 04-28 21:04

    音視頻SoC與AI技術(shù)融合,帶來(lái)更智能音視頻處理解決方案

    ,如WiFi路由器和物聯(lián)網(wǎng)設(shè)備。在安防、智能音頻等領(lǐng)域,對(duì)SoC芯片的算力要求相比智能手機(jī)、服務(wù)器等略低。 ? 人工智能技術(shù)與音視頻SoC 的融合???????????????????
    的頭像 發(fā)表于 04-26 01:20 ?4428次閱讀

    【RTC程序設(shè)計(jì):實(shí)時(shí)音視頻權(quán)威指南】音頻采集與預(yù)處理

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

    【RTC程序設(shè)計(jì):實(shí)時(shí)音視頻權(quán)威指南】新書(shū)一瞥

    本人從事音視頻領(lǐng)域的開(kāi)發(fā),經(jīng)常接觸實(shí)時(shí)音視頻處理相關(guān)的技術(shù),看到這本書(shū)非常有興趣閱讀,這本書(shū)全面介紹實(shí)時(shí)音視頻(RTC)技術(shù)的權(quán)威著作,該書(shū)
    發(fā)表于 04-22 09:09

    【RTC程序設(shè)計(jì):實(shí)時(shí)音視頻權(quán)威指南】本書(shū)概覽

    ,這都是按照音視頻流的開(kāi)發(fā)的一般流程介紹的。然后介紹了編解碼以上所技術(shù),信令與媒體協(xié)商(個(gè)人覺(jué)得協(xié)商這里用協(xié)議更合適,因?yàn)槔锩嬷v解的是各種音視頻傳輸?shù)膮f(xié)議)。然后是控制傳輸優(yōu)化,可擴(kuò)展架構(gòu),評(píng)價(jià)指標(biāo)等
    發(fā)表于 04-21 17:09

    音視頻解碼生成:打造極致觀影體驗(yàn)的關(guān)鍵技術(shù)

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

    音視頻解碼器優(yōu)化技巧:提升播放體驗(yàn)的關(guān)鍵步驟

    隨著數(shù)字多媒體內(nèi)容的爆炸式增長(zhǎng),音視頻解碼器在現(xiàn)代技術(shù)生活中扮演著至關(guān)重要的角色。從流暢的在線視頻流播放到高質(zhì)量的本地文件解碼,解碼器的性能直接影響了我們的觀看體驗(yàn)。那么,如何優(yōu)化音視頻解碼器以提升
    的頭像 發(fā)表于 02-21 14:45 ?828次閱讀

    音視頻解碼生成在多媒體制作中的應(yīng)用

    音視頻解碼生成是多媒體制作中不可或缺的一部分,它扮演著將編碼的音視頻數(shù)據(jù)轉(zhuǎn)化為可播放、可編輯的內(nèi)容的關(guān)鍵角色。在多媒體制作的全過(guò)程中,音視頻解碼生成技術(shù)都有廣泛的應(yīng)用。 1. 視頻編輯
    的頭像 發(fā)表于 02-21 14:39 ?382次閱讀

    音視頻解碼生成與流媒體傳輸?shù)慕Y(jié)合

    音視頻解碼生成與流媒體傳輸是現(xiàn)代數(shù)字媒體技術(shù)中兩個(gè)不可或缺的部分,它們的結(jié)合為用戶提供了高質(zhì)量、實(shí)時(shí)性的多媒體體驗(yàn)。 1. 解碼生成與流媒體傳輸?shù)年P(guān)系 解碼生成是流媒體傳輸?shù)那疤?。在流媒體服務(wù)中
    的頭像 發(fā)表于 02-21 14:36 ?403次閱讀