分布式软总线让阿里商家多设备直播正式发布已经三个多月了,最新数据显示,已有超过1.2亿台设备升级到HarmonyOS2操作系统。但是,对于HarmonyOS的核心技术亮点——分布式软总线,很多应用开发者还不知道如何实现,更不知道如何与自己的业务结合。1688也一直在探索这个问题。1688是国内领先的B2B电商平台,服务客户主要包括工厂主、淘宝卖家、实体店主、地摊商户等。业主们正在谋求从线上直播转型带货。随着业务的发展,今年1688还孵化了一款商家APP——1688商家版,为商家提供更专业的服务,包括直播、洽谈、工作台等。图11688商家版直播领域场景1688商家Edition一直在不断探索如何在直播领域的供给侧提升商家投放能力,降低商家投放成本。在了解了分布式软总线的特点后,发现HarmonyOS的这些能力非常适合1688商户的多机广播需求,于是开发了这种结合分布式软总线的多机广播方案。从技术角度,本文将分享1688直播供给端如何基于HarmonyOS的分布式软总线技术,实现多设备协同直播,帮助1688商家降低直播成本,提升直播能力。与通常的手机直播不同,1688直播供给端的多设备直播方案涉及多设备、多屏幕。除了录制主播外,还可以连接额外的摄像头进行商品录制、大屏展示直播数据和预览、联播大屏与主播互动等功能。首先我们通过一段视频了解一下该技术产品方案的实现效果:视频链接:https://harmonyos.51cto.com/show/8728二、业务背景1、痛点1688直播的主播大多是商家自己。货源稀少,但缺乏专业的电商直播能力和设备。1688商家如何在1688商家投入的资源有限的前提下,降低直播门槛,提升直播质量?1688通过线下走访商户发现,直播商户在直播设备方面主要存在以下三大痛点:(1)直播缺乏特定功能设备缺少产品摄像头,目前摄像头距离产品距离较远产品。主播需要频繁靠近直播设备展示商品详情,影响直播体验;没有互动大屏,手机直播的互动屏很小。主播需要靠近直播设备才能看到观众的评论,观众互动影响直播体验;(2)直播设备与发射工具之间难以协调,主播使用的录制设备、交互设备、主播使用的中控设备之间难以互通;,通常是主播讲解产品和联播优质优惠券。由于双方设备之间缺乏交互,只能通过口头广播进行交流,缺乏隐私;(3)直播设备能力差异大,便携性差。广播设备投资低。1688很多主播都是中小商家,直播追求性价比,直播设备参差不齐;广播设备便携性差。在工厂、车间等复杂场景中,需要同时进行现场直播和现场直播。设备携带困难,缺乏多机位直播能力;一些设备是否满足商家大屏多摄像头、设备间协同交互、便携门槛低的直播需求?先比较一下它们的特点:图2广播设备选择与手机广播对比。手机分别负责推流和交互。它具有一定的协同和便携能力,但存在屏幕小、摄像头不匹配等问题。PC直播,配备可配置摄像头和大屏幕,硬件成本不高,但设备大且便携,功能集中在一台设备上,缺乏交互性。直播一体机上线,专为直播定制的设备,屏幕大,功能强,但硬件门槛高,无法烧录硬件。综上所述,1688希望为商家提供多设备协同、大屏交互、少连接线、可配置硬件、高性价比的直播工具。那么,有没有同时满足这些优点的广播方案呢?3、方案设计据统计,1688商户版App目前30%以上的主播是HarmonyOS用户。针对已经拥有HarmonyOS设备的中小企业,1688提出了基于分布式软总线的多设备协同播报解决方案。1.方案概述当主播使用手机开播时,遇到大屏设备,一键将直播能力转移到大屏设备上。此时,主播的手机处于遥控状态,实时数据显示在大屏显示屏上,实时互动信息和主播解说的收藏屏。如果场景中有产品摄像头,主机手机也可以激活产品摄像头,产品摄像头将采集到的音视频数据传输到大屏设备进行显示,最后大屏设备将完成合并流。联播可以通过连接大屏设备获得实时音视频流播放,实现与主播观众的协同互动。该方案主要具备两大核心技术能力,即直播交互的跨设备迁移和中转,以及音视频流在多设备上的协同传输。图3基于分布式软总线的多设备协同直播方案2.方案特点本方案同时具备上述直播工具的优点:(1)多设备高效协同主播录制专用摄像头解说,采集产品图片的摄像头,大屏设备显示主播解说画面,分发视频流。主播手机控制所有直播设备,联播手机播放视频流观看。(2)大屏互动大屏设备显示直播数据和互动信息。主播手机可控制大屏互动,联播手机可与主播及观众大屏互动。(3)在同一局域网内,便携线少的设备与多台设备之间完成无线连接。(4)设备可选配摄像头,用于录制主播和录制产品,可选配置大屏交互设备。(5)设备性价比高。主播和主播使用普通鸿蒙手机,普通显示器连接鸿蒙设备,摄像头可根据清晰度要求配置。4、技术实现实现上述产品方案的核心技术能力是直播交互的迁移和传输、音视频流的协同传输。这两项技术能力的底层是我们项目中基于HarmonyOS分布式软总线的扩展包。下面我简单介绍一下分布式软总线。分布式总线是华为HarmonyOS提出的概念。它的灵感应该来自计算机系统。在计算机系统中,CPU、输入输出设备等之间传递信息的公共通道称为总线。软总线是在多个设备之间建立虚拟的通信连接,无需物理线路连接即可完成多个设备之间的互联互通,从而以无线方式实现设备间低延迟、高带宽的信息传输功能。高效的数据传输。图4HarmonyOS分布式软总线示意图从上面的架构图可以看出,分布式软总线封装了多种通信协议,将设备的发现、连接和传输统一封装到一个对外透明的接口中。开发者只需通过简单的调用即可实现多台设备之间的互联互通,无需关心联通的细节。方案中的直播交互是基于分布式软总线实现多设备迁移流动,音视频流也通过软总线通道跨设备传输。下面详细介绍这两款技术产品的能力实现。1.直播互动迁移流程(一)产品功能图5直播互动迁移转接功能介绍中台大屏控制与操作(二)技术方案图6直播互动迁移转接技术方案主播APP改造原生Android项目,增加对HarmonyOSAbility的依赖,添加FA进行播控;大屏APP是在原APP的基础上新增了大屏HAP,包括实时数据FA和实时交互FA;主播APP是原有安卓项目中与主播、买家互动的新FA;主播App先发现并连接附近的大屏,然后传输直播数据FA和实时交互FA,无缝迁移到大屏设备,主播App跳转到启动控制FA,主播App可以通过中台控件操作大屏和联播App,通过IDL通信实现设备间的交互。需要说明的是,以上三个设备的App都是在原项目改造的基础上新增的能力,三个是同一个App。(3)代码实现以主播app唤起大屏app,自行跳转到中台控件为例。图7直播交互迁移流程代码实现1.在LiveControlAbility中注册流程设备:2.ContinuationDeviceCallback连接设备回调成功后调用selectDeviceId);continuationRegisterManager.updateConnectStatus(abilityToken,selectDeviceId,DeviceConnectState.CONNECTED.getState(),null);}}}3.在大屏ScreenServiceAbility的onConnect中接收数据,拉起大屏FAScreenPageAbility:publicIRemoteObjectonConnect(Intentintent){clientRole=intent.getStringParam("client_role");if("controller".equals(clientRole)){jumpScreen();returnnewScreenRemoteForController();}}4.ScreenRemoteForController继承自HarmonyControllerInterfaceSkeletonScreen在OnConnect回调后初始化,接收锚点app发送的唤醒其他设备的命令,然后通过EventHandler分发事件:throwsReception{swmoteExcommand){case"close":MyApplication.getHandler().sendEvent(1);default:break;}}(4)难点与局限①跨设备通信目前HarmonyOS设备的通信方式只支持IDL,而IDL是单向通信。为了实现设备间的双向通信,我们采用在IDL中添加回调的方式,或者创建两个双向IDL来实现设备间的双向通信。②目前1688直播的Android和HarmonyOS兼容开发交互功能是在原有Android项目的基础上对HarmonyOS进行增量开发。未来,随着更多基础库完成对HarmonyOS的迁移适配,以及HarmonyOS与Android更好的兼容与互通,1688的直播交互功能将有更好的表现。2.音视频流协同传输(1)产品功能图8音视频流协同传输功能跨设备音视频流协同传输主要有四个功能:主播的音视频采集流是转移到大屏幕摄像头;商品画面转移到大屏设备;大屏设备结合产品屏和主播屏进行播放和推流;将音视频流传输至同播手机进行播放观看;(2)技术方案图9音视频流协同传输技术方案主播app连接大屏设备后,会关闭音视频采集和预览功能;大屏APP会增加录制预览合并流的能力,同时需要增加编码将采集到的音视频流传输到合播APP;产品摄像头将增加采集音频和视频并将其传输到大屏幕设备的能力;联播APP去掉了之前从云端拉流的方式,改为本地解码后播放音视频流;主播APP连接大屏设备后,会调动大屏设备摄像头录制音视频并显示预览。大屏设备启动后,拉起产品摄像头,对采集到的音视频流同时进行编码,传输到大屏设备进行流合并推送。共播手机可以获得大屏音视频流。玩。(3)代码实现下面以商品相机被唤醒后的音视频采集传输到大屏为例:图10音视频流协同传输代码实现1.商品相机被唤醒时,首先初始化SurfaceProvider,并在其surfaceCallback中回调连接后台ScreenServiceAbility服务,同时开启相机:checkPermission(getApplicationContext());{openCamera(}}}2、激活的后台服务ScreenServiceAbility在onConnect时传输音视频数据:onPcmReady(pcmData);}@Overridepublic(voidonYuinttype,intlength,intseq,byte[]cameraData)throwsRemoteException{mControllerCallback.onReturnData(type,length,seq,cameraData);}};returnnull;}3.以商用摄像头采集的视频数据为例,编码成YUV数据格式后发送:@OverridepublicvoidonReadBuffer(ByteBufferbyteBuffer,BufferInfobufferInfo,inttrackId){byte[]msg=newbyte[bufferInfo.size];byteBuffer.clear();byteBuffer.get(msg);sendEncodedDataToRemote(msg,bufferInfo);});mCodec.setCodecFormat(fmt);mCodec.start();}4.先对转换后的YUV视频帧数据进行切片,然后通过ScreenService后台服务发送:];System.arraycopy(data,position,msgTemp,0,msgTemp.length);mScreenServiceProxy.onYuvData(CameraUtil.IRemoteMsg.MSG_TYPE_SLICE_END,bufferInfo.size,0,data);}5.大屏设备接收商品相机并发送播放解码后的音视频数据:privateControllerCallbackStubmControllerCallback=newControllerCallbackStub("com.alibaba.cameraohos.IControlFaCallback"){@OverridepublicvoidonPcmReady(byte[]pcmData)throwsRemoteException{mPlayRecord.playTransData(pcmData);}@OverridepublicvoidonReturnqlethngData(int,se,byte[]cameraData)throwsRemoteException{createMyDecoder();initMuxer();}}(4)难点与局限①音视频流的本地编解码与传统的本地编解码不同。设备之间的音视频流都在局域网中传输。由于局域网带宽有限,视频数据量大,1688采用本地视频流YUV数据编解码,通过分片合并实现720P视频流传输。②多设备组网为了安全起见,HarmonyOS设备组网需要基于以下前提条件。同一个WiFi,开启蓝牙,暂时只支持登录同一个华为账号。不过在这个场景下,设备都服务于同一个直播账号,登录同一个华为账号开启直播场景也是合理的。五、总结与展望1.总结1688解决方案具有以下三个特点:(1)软件解决方案解决了硬件限制。软件方案采用HarmonyOS分布式软总线技术,打破1688直播场景的硬件限制,将应用功能分散到最匹配的硬件设备上,实现硬件资源的互助互补。(2)结合场景拓展直播能力结合1688商家直播的场景特点,基于HarmonyOS分布式软总线的特点,解决直播交互和音视频传输的无缝流程,以及实现大屏交互和多设备广播功能。(3)低成本高效解决商家痛点在基本不改变原有1688广播功能的基础上,软件层可以实现同一个应用在多台设备上的不同能力表达,硬件层可以根据商家实力选择合适的设备,开发成本低。商家投资较少。分布式软总线是鸿蒙操作系统独有的能力。目前只有HarmonyOS用户有这个能力。2、期待基于1688的直播交互迁移和音视频协同传输两大技术能力,未来1688将在这两个方向上进一步探索。(1)多机位多机位直播,丰富直播内容随着群艺逐渐适配HarmonyOS,提供更多的流处理能力,1688可以提供专业的高清摄像头录制产品,将摄像头搬到厂区,以及多角度摄像头捕捉直播画面,进一步提升1688直播内容的质量。(2)标准化的中央控制箱,降低了播出成本。音视频流汇流分配、屏幕投影显示、播出控制等能力集中在一台中央控制设备上。主播只需要拥有这个设备就可以实现以上的打包转播能力。目前的解决方案主要集中在软件应用的开发上,不涉及硬件的开发,所以实际使用中需要的摄像头和大屏设备能力都是用HarmonyOS手机完成的,但是如果解决方案可以涉及到硬件开发,使用烧录OpenHarmony的摄像头和投屏盒,将进一步降低商家的成本,丰富直播的能力。随着5G和万物互联时代的发展,未来的前景还是非常光明的。参考:1、分布式语音摄像头:https://gitee.com/panthole/harmonyos-codelabs/tree/master/VoiceCamera2。跨设备迁移视频内容:https://gitee.com/panthole/harmonyos-codelabs/tree/master/DistributedVideoCodelab3。HamonyOS视频解码能力播放预览画面:https://gitee.com/panthole/harmonyos-codelabs/tree/master/CodecDemo更多信息请访问:HarmonyOS与华为官方共建社区https://harmonyos.51cto。com
