成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

分布式軟總線讓阿里巴巴商家玩轉多設備直播

系統 分布式
本文將從技術角度出發,分享 1688直播供給側是如何基于HarmonyOS的分布式軟總線技術,實現多設備協同開播,助力1688商家降低開播成本、提高開播能力。

[[428752]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

一、引言

距離HarmonyOS 2正式發布已經過去三個多月了,最新數據顯示已有超過1.2億臺設備升級到了HarmonyOS 2操作系統。然而,對于HarmonyOS最核心的技術亮點—— 分布式軟總線 ,許多應用開發者還不清楚該如何實現,更不清楚該如何與自己的業務相結合。1688也一直在探索這個問題。

1688是國內領先的B2B電商平臺,服務的客戶主要包括工廠老板、淘寶賣家、實體店主、檔口商家等。由于疫情導致線下實體生意的萎縮,越來越多的工廠、檔口老板尋求線上直播帶貨轉型。隨著業務的發展,今年1688也孵化了專門面向商家側的App——1688商家版,提供給商家更加專業的服務,包括直播、洽談、 工作臺等。

分布式軟總線讓阿里巴巴商家玩轉多設備直播-鴻蒙HarmonyOS技術社區

圖1 1688商家版直播域場景

1688商家版一直不斷探索在直播域供給側中如何提高商家開播能力、降低商家開播成本,當了解到分布式軟總線的特性后,發現HarmonyOS的這些能力非常切合1688商家多設備開播訴求,于是他們研發了這個結合分布式軟總線的多設備開播方案。

本文將從技術角度出發,分享 1688直播供給側是如何基于HarmonyOS的分布式軟總線技術,實現多設備協同開播,助力1688商家降低開播成本、提高開播能力。

與通常的手機開播不同,1688直播供給側的多設備開播方案涉及到多設備多屏幕,實現除了錄制主播以外,還可以連接額外的攝像頭專門錄制商品,大屏展示直播的數據和預覽,協播與主播大屏互動等功能。先通過一段視頻了解下該技術產品方案的實現效果:

視頻鏈接:https://harmonyos.51cto.com/show/8728

二、業務背景

1. 痛點

1688直播的主播大多數是商家自己,他們對自己的貨品如數家珍,但卻對電商直播缺乏專業的開播能力和開播設備。如何在1688商家投入有限資源的前提下,幫助商家降低開播門檻、提高開播質量呢?通過線下走訪商家,1688發現直播商家在開播設備方面主要存在以下三大痛點:

(1)直播缺乏特定功能設備

  • 缺乏商品攝像頭,當前攝像頭距離商品遠,主播需要頻繁走近開播設備才能展示商品細節,影響直播觀感;
  • 缺乏互動大屏,手機直播互動屏幕小,主播需要走近開播設備才能看清觀眾留言與觀眾互動,影響直播體驗;

(2)直播設備之間難以協同

  • 開播工具協同難,主播用到的錄制設備、互動設備和協播使用的中控設備之間不互通操作困難;
  • 主播協播互動難,通常主播講解商品、協播上品發券,由于雙方的設備間缺乏互動只能口播溝通缺乏私密性;

(3)直播設備能力差異大、便攜性差

  • 開播設備投入低,1688的很多主播本身是中小商家,直播投入追求性價比,開播設備參差不齊;
  • 開播設備便攜差,在工廠車間等復雜場景需要駐播和走播協同開播,設備難以便攜,缺乏多機位開播能力;

2. 商家需求

現有的設備是否滿足商家 大屏多攝像頭、設備間協同互動、便攜低門檻 的開播訴求呢?先來對比下它們的特性:

分布式軟總線讓阿里巴巴商家玩轉多設備直播-鴻蒙HarmonyOS技術社區

圖2 開播設備選型對比

手機開播,手機分別負責推流、互動,有一定的協同便攜能力,但是存在屏幕小和攝像頭不可配等問題。

PC開播,具備可配置的攝像頭和大屏,硬件成本不高,但設備大便攜性差而且功能集中在一臺設備缺乏互動性。

直播一體機開播,專門為直播開播定制的設備有大屏功能強,但是硬件門檻較高而且硬件都是燒錄無法定制。

綜上,1688期望提供給商家直播的開播工具需要具備 多設備協同、大屏互動、連接線路少、硬件可配、高性價比 ,那么,有沒有同時滿足這些優點的開播方案呢?

三、方案設計

據統計當前1688商家版App已經有超過30%的主播是HarmonyOS用戶,針對已經具備HarmonyOS設備的中小商家,1688提出了基于分布式軟總線的多設備協同開播方案。

1. 方案概述

主播使用手機開播時,當遇到大屏設備,可以一鍵將直播能力流轉到大屏設備上,這時候主播的手機呈現遙控器狀態,大屏顯示屏上分別展示實時數據看板、實時互動信息和主播講解的采集畫面。如果場景中有商品攝像頭,主播手機也可以喚起商品攝像頭,商品攝像頭會將采集的音視頻數據傳輸給大屏設備顯示,最終由大屏設備完成合流推流。協播可以通過連接大屏設備,從而獲取實時音視頻流播放,實現與主播觀眾的協同互動。該方案主要有兩大核心技術能力,分別是 直播互動在跨設備上的遷移流轉、音視頻流在多設備上的協同傳輸。

分布式軟總線讓阿里巴巴商家玩轉多設備直播-鴻蒙HarmonyOS技術社區

圖3 基于分布式軟總線的多設備協同開播方案

2. 方案特點

該方案同時具備上述開播工具的優點:

(1)多設備間高效協同

專門錄制主播講解的攝像頭,專門采集商品畫面的攝像頭,大屏設備展示主播講解畫面合并分發視頻流,主播手機操控所有開播設備,協播手機播放視頻流觀看。

(2)大屏互動

大屏設備展示直播數據和互動信息,主播手機可以操控大屏互動,協播手機可以與主播、觀眾大屏互動。

(3)便攜線路少

多設備間在同一局域網內完成無線連接。

(4)設備可配

錄制主播和錄制商品的攝像頭可選配置,大屏互動設備可選配置。

(5)高性價比設備

主播、協播普通HarmonyOS手機,普通顯示器外接HarmonyOS設備,攝像頭根據清晰度需求可配。

四、技術實現

實現上述產品方案的核心技術能力是 直播互動的遷移流轉 和 音視頻流的協同 傳輸 ,這兩個技術能力的底層都是基于HarmonyOS的分布式軟總線在我們項目上的拓展封裝。接下來,我先簡單介紹下分布式軟總線。

分布式總線是華為HarmonyOS提出的概念,它的靈感應該來自于計算機系統,在計算機系統里把CPU、輸入、輸出設備等之間傳送信息的公共通路叫總線。而軟總線是通過建立多設備間的虛擬通信連接,完成多設備間無物理線路連接的互聯互通,從而低時延高帶寬的設備間信息傳輸功能,使得各個設備之間可以通過無線的方式實現高效的數據傳輸。

分布式軟總線讓阿里巴巴商家玩轉多設備直播-鴻蒙HarmonyOS技術社區

圖4 HarmonyOS分布式軟總線示意圖

從上面的架構圖中,可以看到分布式軟總線封裝了多種通訊協議,并且將設備的發現、連接、傳輸統一封裝成對外透明的接口,開發者只需要通過簡單的調用就可以實現多設備間的互聯互通,無需關心聯通的細節。

方案中的直播互動正是基于分布式軟總線實現多設備遷移流轉,音視頻流也是通過軟總線通道實現跨設備的傳輸,下面給大家詳細介紹下這兩個技術產品能力的實現。

1. 直播互動的遷移流程

(1)產品功能

分布式軟總線讓阿里巴巴商家玩轉多設備直播-鴻蒙HarmonyOS技術社區

圖5 直播互動遷移流轉功能介紹

直播互動在多設備上遷移流轉主要三個功能:

  1. 直播實時數據遷移大屏;
  2. 主播、協播互動遷移大屏;
  3. 主播中臺控制操作大屏

(2)技術方案

分布式軟總線讓阿里巴巴商家玩轉多設備直播-鴻蒙HarmonyOS技術社區

圖6 直播互動遷移流轉技術方案

  1. 主播端App改造原有Android項目,增加HarmonyOS Ability依賴,新增開播控制的FA;
  2. 大屏端App是原有App上新增了大屏的HAP,包括直播數據FA 、實時互動FA;
  3. 協播端APP是原有Android項目新增與主播和買家互動的FA;

主播App首先發現并連接附近大屏,然后將直播數據FA和實時互動FA,無縫流轉遷移到大屏設備,主播App跳轉至開播控制FA,主播App通過中臺控制可以操作大屏和協播App,設備間的互動通過IDL通信實現。需要注意的是,上述三個設備的App都是基于原有項目改造新增的能力,三者為同一個App。

(3)代碼實現

以主播端App喚起大屏端App同時自身跳轉中臺控制為例。

分布式軟總線讓阿里巴巴商家玩轉多設備直播-鴻蒙HarmonyOS技術社區

圖7 直播互動遷移流轉代碼實現

1.在LiveControlAbility的中進行流轉設備注冊:

  1. ContinuationRegisterManager continuationRegisterManager = getContinuationRegisterManager(); 
  2. continuationRegisterManager.register(getBundleName(), null, callback, requestCallback); 

2.在ContinuationDeviceCallback連接設備回調成功后調用connectAbility喚起大屏PA ScreenServiceAbility并傳遞相關參數:

  1. private IContinuationDeviceCallback callback = new IContinuationDeviceCallback() { 
  2.         @Override 
  3.         public void onDeviceConnectDone(String deviceId, String deviceType) { 
  4.             selectDeviceId = deviceId; 
  5.             if (selectDeviceId != null) { 
  6.                 connectAa(selectDeviceId); 
  7.                 continuationRegisterManager.updateConnectStatus(abilityToken,selectDeviceId, DeviceConnectState.CONNECTED.getState(), null); 
  8.             } 
  9.         } 
  10.     } 

3.在大屏ScreenServiceAbility的onConnect接收數據并拉起大屏FA ScreenPageAbility:

  1.     public IRemoteObject onConnect(Intent intent) { 
  2.         clientRole = intent.getStringParam("client_role"); 
  3.              if ("controller".equals(clientRole)) { 
  4.             jumpScreen(); 
  5.             return new ScreenRemoteForController(); 
  6.         } 

4.ScreenRemoteForController繼承自HarmonyControllerInterfaceSkeletonScreen在OnConnect回調以后初始化,并且接收從主播App發送的指令如喚起其他設備,再通過EventHandler進行事件分發:

  1. class ScreenRemoteForController extends HarmonyControllerInterfaceSkeleton { 
  2.         ScreenRemoteForController() { 
  3.             super("IScreenRemoteInterface"); 
  4.         } 
  5.  
  6.         @Override 
  7.         public void sendCommand(String command) throws RemoteException { 
  8.             switch (command) { 
  9.                 case "close"
  10.                     MyApplication.getHandler().sendEvent(1); 
  11.                 default
  12.                     break; 
  13.             } 
  14.         } 

(4)難點和限制

① 跨設備通信

HarmonyOS的設備當前通信方式只支持以IDL的方式,并且IDL是單向通信的,為了實現設備之間雙向通信,我們采取在IDL中的增加回調的方法,或者采用創建兩個雙向IDL的方式實現設備間的雙通。

② Android與HarmonyOS兼容開發

當前1688的直播互動功能都是在原有Android項目上進行的HarmonyOS增量開發。未來,隨著更多基礎庫完成HarmonyOS的遷移適配、HarmonyOS和Android間的更好兼容與通信,1688的直播互動功能將會有更佳的表現。

2. 音視頻流的協同傳輸

(1) 產品功能

分布式軟總線讓阿里巴巴商家玩轉多設備直播-鴻蒙HarmonyOS技術社區

圖8 音視頻流協同傳輸功能

音視頻流在跨設備上的協同傳輸主要四個功能:

主播音視頻采集流轉到大屏攝像頭;

喚起商品攝像頭采集商品畫面并流轉大屏設備;

大屏設備合并商品和主播畫面播放并推流;

音視頻流傳輸到協播手機播放觀看;

(2)技術方案

分布式軟總線讓阿里巴巴商家玩轉多設備直播-鴻蒙HarmonyOS技術社區

圖9 音視頻流協同傳輸技術方案

主播App在連接大屏設備后將關閉音視頻采集、預覽功能;

大屏App上新增錄制預覽能力和合流推流能力,同時需要增加編碼將采集到的音視頻流傳輸到協播App上;

商品攝像頭上增加采集音視頻和傳輸到大屏設備的能力;

協播App去掉之前從云端拉取流的方式,改為本地解碼后播放音視頻流;

主播App 在連接大屏設備后,會喚起大屏設備的攝像頭錄制音視頻并顯示預覽,大屏設備啟動后拉起商品攝像頭,同時對采集的音視頻流編碼,將流傳輸到大屏設備上合流并推流,協播手機可以獲取大屏音視頻流播放。

(3)代碼實現

我們以商品攝像頭被喚起后采集音視頻傳輸到大屏端為例:

分布式軟總線讓阿里巴巴商家玩轉多設備直播-鴻蒙HarmonyOS技術社區

圖10 音視頻流協同傳輸代碼實現

1.當商品攝像頭被喚起后,首先初始化SurfaceProvider,并在其surfaceCallback回調中連接后臺ScreenServiceAbility服務,同時打開攝像頭:

  1.  protected SurfaceOps.Callback surfaceCallback = new SurfaceOps.Callback() { 
  2.         @Override 
  3.         public void surfaceCreated(SurfaceOps surfaceOps) { 
  4.             previewSurface = surfaceOps.getSurface(); 
  5.             if (CameraUtil.checkPermission(getApplicationContext())) { 
  6.                 openCamera(); 
  7.             } 
  8.         } 

2.啟動的后臺服務ScreenServiceAbility在onConnect時將音視頻數據進行傳輸:

  1. public IRemoteObject onConnect(Intent intent) { 
  2.             return new ScreenRemoteFoSlave() { 
  3.                 @Override 
  4.                 public void onPcmReady(byte[] pcmData) throws RemoteException { 
  5.                         mControllerCallback.onPcmReady(pcmData); 
  6.                 } 
  7.  
  8.                 @Override 
  9.                 public void onYuvData(int type, int length, int seq, byte[] cameraData) throws RemoteException { 
  10.                         mControllerCallback.onReturnData(type, length, seq, cameraData); 
  11.                 } 
  12.             }; 
  13.      return null

3.以商品攝像頭采集的視頻數據為例,將YUV數據格式編碼后發送:

  1. public void YuvCode() { 
  2. fmt.setObjectFormat(Format.MIME, Format.VIDEO_AVC);         
  3. mCodec.registerCodecListener(new Codec.ICodecListener() { 
  4.                 @Override 
  5.                 public void onReadBuffer(ByteBuffer byteBuffer, BufferInfo bufferInfo, int trackId) { 
  6.                     byte[] msg = new byte[bufferInfo.size]; 
  7.                     byteBuffer.clear(); 
  8.                     byteBuffer.get(msg); 
  9.                     sendEncodedDataToRemote(msg, bufferInfo); 
  10.                 } 
  11.         ); 
  12.        mCodec.setCodecFormat(fmt); 
  13.        mCodec.start(); 

4.將轉化后的YUV視頻幀數據先做切片然后通過ScreenService后臺服務進行發送:

  1. private void sendEncodedDataToRemote(byte[] data, BufferInfo bufferInfo) { 
  2.                   byte[] msgTemp = new byte[bufferInfo.size - position]; 
  3.                   System.arraycopy(data, position, msgTemp, 0, msgTemp.length); 
  4.                   mScreenServiceProxy.onYuvData(CameraUtil.IRemoteMsg.MSG_TYPE_SLICE_END, bufferInfo.size, 0, data); 
  5.   } 

5.大屏設備收到商品攝像頭發送的音視頻數據進行解碼后播放:

  1. private ControllerCallbackStub mControllerCallback = new ControllerCallbackStub("com.alibaba.cameraohos.IControlFaCallback") { 
  2.         @Override 
  3.         public void onPcmReady(byte[] pcmData) throws RemoteException { 
  4.             mPlayRecord.playTransData(pcmData); 
  5.         } 
  6.  
  7.         @Override 
  8.         public void onReturnData(int type, int length, int seq, byte[] cameraData) throws RemoteException { 
  9.                     createMyDecoder(); 
  10.                     initMuxer();                        
  11.         } 
  12.     } 

(4)難點和限制

① 音視頻流本地編解碼傳輸

有別于傳統的本地編碼推流,本方案里面設備間音視頻流都是在局域網內傳輸,由于局域網的帶寬有限,而視頻數據較大,1688采用對本地視頻流YUV數據進行編解碼,通過切片合流的方式,達到了720P的視頻流傳輸。

② 多設備的組網

出于安全性考慮,HarmonyOS的設備組網需要基于以下前提條件,在同一WiFi、開啟藍牙、暫時只支持登錄相同華為賬號。不過在這個場景中,設備都是服務于同一個直播賬號,登錄相同的華為賬號再進行開播場景也合理。

五、總結和展望

1. 總結

1688的方案具備以下三個特點:

(1) 軟件方案解決硬件限制

利用HarmonyOS分布式軟總線技術,采用軟件方案打破1688直播場景的硬件限制,將應用功能打散到最匹配的硬件設備上,實現硬件資源的互助互補。

(2) 結合場景拓展開播能力

結合1688商家直播的場景特點,基于HarmonyOS的分布式軟總線的特性,解決直播互動、音視頻傳輸的無縫流轉,實現大屏互動、多設備開播功能。

(3) 低本高效解決商家痛點

在基本不改變原有1688開播功能的基礎上,軟件層面實現同一個應用在多設備上不同能力表達,硬件層面可根據商家實力選擇合適設備,開發成本低,商家投入少。

分布式軟總線是HarmonyOS操作系統獨有的能力,當前只有HarmonyOS的用戶才具備這個能力。

2. 展望

基于1688沉淀的直播互動遷移和音視頻協同傳輸兩大技術能力,未來1688會在這兩個方向進一步探索。

(1) 多機位多攝像頭開播,豐富直播內容

隨著集團Artc逐步適配HarmonyOS并提供更多流處理能力,1688可以提供專業高清的攝像頭錄制商品,可移動的攝像頭走播工廠,多角度的攝像頭采集直播畫面,進一步提升1688的直播內容質量。

(2)標準化的中控盒子,降低開播成本

將音視頻流合流分發、投屏展示、開播控制的能力集中在一個中控設備上,主播只需要擁有該設備就可以實現以上打包的開播能力。

當前的方案主要還是軟件應用的開發并不涉及硬件的開發,所以實際使用的時候需要的攝像頭和大屏設備能力都是采用HarmonyOS的手機完成的,但如果該方案能涉及硬件開發,使用燒錄OpenHarmony的攝像頭和投屏盒子,將進一步降低商家的成本、豐富開播的能力。隨著5G和萬物互聯時代的發展,未來前景還是十分廣闊。

參考:

1. 分布式語音照相 :

https://gitee.com/panthole/harmonyos-codelabs/tree/master/VoiceCamera

2. 跨設備遷移視頻內容 :

https://gitee.com/panthole/harmonyos-codelabs/tree/master/DistributedVideoCodelab

3. HamonyOS視頻解碼能力播放預覽畫面 :

https://gitee.com/panthole/harmonyos-codelabs/tree/master/CodecDemo

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2017-01-20 16:00:33

阿里巴巴分布式數據庫DRDS

2015-01-06 18:00:58

慕課網

2024-03-06 18:01:48

阿里巴巴分布式事務

2010-06-28 10:43:47

2020-11-16 11:29:40

HarmonyOS

2010-06-03 10:58:51

馬云婚戀觀

2022-12-04 22:41:15

IPC分布式機制

2013-08-22 09:41:52

阿里巴巴去IOE王堅

2017-08-10 10:17:32

Hadoop分布式搭建

2013-08-22 09:36:45

阿里巴巴王堅阿里云

2019-08-15 10:25:02

代碼開發工具

2023-03-29 09:42:32

2014-11-21 15:07:01

阿里巴巴雙11

2009-02-27 10:46:32

DBA筆試題阿里巴巴

2014-12-31 10:48:40

阿里巴巴馬云

2014-06-19 16:52:20

阿里巴巴

2009-06-30 13:28:54

阿里巴巴旺旺

2018-10-16 15:34:17

阿里巴巴Apache Flin大數據

2010-08-25 14:33:59

抄底

2015-04-23 15:30:08

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美综合精品 | 性高湖久久久久久久久aaaaa | 九九热精品免费 | 欧美视频xxx | 日韩av一区在线观看 | 中文字幕av一区 | 自拍偷拍视频网 | 久久r精品| 成人精品视频在线观看 | 不卡视频一区二区三区 | av成年人网站 | 91视在线国内在线播放酒店 | www.干| 精品国产一区二区三区成人影院 | 激情五月婷婷综合 | 一级毛片视频在线观看 | 亚洲一区二区av在线 | 日日日视频 | 久久国产精品视频观看 | 中文字幕日韩一区 | 国产在线精品一区二区 | 亚洲视频一区在线观看 | 国产成人影院 | 国产精品日韩在线观看一区二区 | 国产蜜臀| 国产精品九九视频 | 国产精品久久 | 久久久99国产精品免费 | 久久精品在线 | 久久久久久久久精 | 国产精品久久久久久久久免费丝袜 | 国产一区二区观看 | 亚洲精品一区二区三区蜜桃久 | 欧美h| 日韩av在线免费 | 国产精品一二三区 | 国产精品久久久久久久久久久久午夜片 | 国产精品美女久久久av超清 | 中文字幕一区二区三区四区五区 | 色婷婷av777 av免费网站在线 | 欧美一区二区三区四区视频 |