java如何实现秀场直播功能?基于即构SDK开发

目前,直播市场一片火热,直播已经广泛应用于娱乐、会议、培训、商演等活动中,给各行业带来了不少经济效益。不过当下很多商家平台并没有直播经验,也不知道如何搭建直播间,比如最近有一位朋友咨询我,如何用java实现秀场直播功能?

Java是基于Android系统的开发语言,安全性和稳定性都很高,并且具有完善的字节码安全机制,支持跨平台高度并发,是互联网架构的首选,不过商家团队如果是找专业人才使用Java语言框架搭建秀场直播的话,无疑会产生成本费用和时间成本,建议利用第三方直播SDK来快速实现,这里推荐ZEGO即构的秀场直播SDK。

秀场直播场景为社交娱乐模式下的视频互动场景,场景支持多人视频连麦互动,更容易吸引用户参与连麦互动,提升用户的消费意愿及粘性。ZEGO即构秀场直播SDK,支持Java、React Native、JavaScript 、Swift、Electron、Flutter等多种语言框架,以下介绍Android平台下秀场直播的实现流程。

1.架构设计

秀场直播场景的主要架构如下图所示:(以两主播连麦互动为例)

2.功能实现流程

1、主播、观众均通过业务信令服务连接,业务信令服务可以控制当前业务房间内的直播流程,同步并通知各端当前直播状态更新。

2、当为单主播模式时,主播直接向 CDN 推流,观众直接从 CDN 拉流。

3、当要进入连麦互动时,业务信令服务通知连麦者房间内的成员连麦者的信息。

4、连麦者双方接收到信息后,各自停止向 CDN 推流,同时开始推流到 ZEGO 服务器,并拉连麦对方的音视频流。

5、在推拉流的同时,需要启动 ZEGO 混流服务,将连麦者推流到 ZEGO 服务器的多路连麦流混合成一条,再转推到原来的 CDN 地址。(如果连麦者双方混流配置需求不同,则需要双方各启动一条混流,如需要本房间主播画面在左边,对方在右边)

6、观众不需要切换 CDN 拉流地址,即可看到连麦互动画面。

7、业务信令服务通知所有人连麦互动结束,主播停止推流到 ZEGO 服务器并停止 ZEGO 混流服务,重新向 CDN 推单流。

所以,API 大致使用流程如下:(单主播模式以 Express Video SDK 直推 CDN 为例,连麦互动以两位主播 PK 为例)

2.1 初始化 SDK

在使用 Express Video SDK 进行视频通话之前,需要初始化Express Video SDK。由于初始化操作 SDK 内部处理的操作较多,建议开发者在 App 启动的时候进行。

2.2 登录直播房间

主播开始直播或观众观看直播前,需要先登录到直播房间,在收到登录房间成功的回调之后可以直接调用 Express Video SDK的接口进行推拉流操作。

2.3 单主播直播

当为单主播模式时,主播直接向 CDN 推流,观众直接从 CDN 拉流。

2.3.1 主播开始预览并直推 CDN

主播直接向 CDN 推送自己的画面,需要配置直推 CDN 设置接口,然后开始预览并推流。

2.3.2 观众拉流

观众想接收主播的音视频,需指定 CDN 地址拉流(即观看直播)。

2.4 互动连麦

2.4.1 功能介绍

由于 CDN 推拉流延迟较高,所以为了保证连麦双方的最佳体验,需要连麦者向 ZEGO 服务器推拉流进行低延迟连麦。收到开始互动连麦消息后,主播停止向 CDN 推流,转而向 ZEGO 服务器推流,并且拉连麦者流,开启混流服务转推指定 CDN 地址。

2.4.2 停止直推 CDN 并向 ZEGO 服务器推流

主播停止向 CDN 推流,转而向 ZEGO 服务器推流

2.4.3 拉连麦者音视频流

主播需要从 ZEGO 服务器直接拉连麦者音视频流。

2.4.4 开启混流

开启混流后,Zego 服务器会将多路单独的音视频流混成一路音视频流,并转推到主播原 CDN 推流地址,这样观众即可不中断拉流就看到互动连麦画面。

2.5 互动连麦结束

互动连麦结束后,需要切换回单主播推流模式。

主播需要先停止混流、推流,然后再重新直推 CDN 即可。

限于篇幅,以上流程涉及到的相关源码可到即构开发者中心进行查看。

附:即构致力于为全球企业提供语音视频通讯能力,为各类线上互动场景提供背后的技术支持,提供包括灵活稳定的RTC产品、丰富易用的各类插件、业务保障产品棱镜等。截止目前,即构提供的音视频云服务已经覆盖至互动直播、在线教育、社交、会议、游戏、金融、远程医疗、智能硬件、私有化等数百个应用场景。