网络视频直播存在已有很长一段时间,随着移动上下行带宽提升及资费的下调,视频直播被赋予了更多娱乐和社交的属性,人们享受随时随地进行直播和观看,直播已经广泛应用于语音社交、视频社交、互动直播和娃娃机直播等领域。
对于现在的直播领域来说,娃娃机成了新的时代骄子,如何实现同时推两路流,低延迟等都是大家想要了解的重点了,那么,如何使用即构SDK即时构建娃娃机视频APP呢?我们特此邀请到即构科技资深前端技术支持主管卢爱辉老师做直播分享。
内容简介:
1.介绍即构语音视频的整个架构
1) 应用场景介绍
2) 架构实现
3) 架构图说明
2.如何接入即构语音视频SDK(娃娃机场景接入)
1)娃娃机控制端接口调用
2)娃娃机APP端接口调用
大家好,这次分享的主题是最近很热门的直播主题,如何使用即构SDK即时构建实时语音视频APP。
这边先简短介绍一下我们公司的背景,如下截图。
大家知道,直播领域很广,可应用的场景也很广泛,比如语音社交、视频社交、互动直播和最近很火的娃娃机场景。我这里主要给大家分享一下如何用zegoSDK来做一个娃娃机的直播。
一、介绍即构语音视频的整个架构
1) 场景介绍
咱们先看一下玩娃娃的线下部署:
两个摄像头,对着一台娃娃机,娃娃机推两路,这样的方式,就可以使操作者两个角度看看娃娃机的视角。
用户端APP做出来的效果示例:
支持:2个视角,100毫秒超低延迟,视频和天车实时同步,这样使玩家在操作的过程中体验流畅,两个视角就不至于看到的画面太过于平面。
2) 架构实现
接下来和大家说一下,这个直播场景的架构实现。有两端来说明:
一端是娃娃机端,娃娃机上是有一块芯片,这块芯片是Android系统的,大家可以理解为一个小的Android手机。
从以上娃娃机场景可见,娃娃机边上有两个摄像头,说明娃娃机端需要推两路视频流出来。
另一端就是用户APP端,用户端可以是移动端,也可以是PC端。
用户APP端:用户端需要同时拉两路流去观看,一开始的时候,先隐藏掉一个view,大家看到一个画面,当点击切换摄像头的时候,就切换到另一个view去看另外的视角。
3) 架构图说明
这个架构图的意思就是:娃娃机端推两路流,先推到zegoserver,然后再经过分发网络,给普通的玩家去观看,这个时候的延迟大概是1-2秒。
用户端上,当有玩家要上机去抓娃娃的时候,就上机,zegoSDK内部会切换到zegoServer去拉流,实现低延迟,此时可以达到100-300ms。
以下是整个架构图流的走向。
二、如何接入即构语音视频SDK(娃娃机场景接入)
接下来我们讲解如何用zegoSDK来做出来一个APP,那就涉及到sdk接口层面的调用了。
1) 娃娃机控制端接口调用
首先初始化SDK,登录房间:
同时推两路流:
大家看到,推第一路流的时候,有调用enableMic设置为FALSE,这里是因为娃娃机端不需要将音频推出去,因此将麦克风关闭。
第二路流默认就是不推送音频的,因此不需要再继续调用这个接口了
2)娃娃机APP端接口调用
推完两路流之后,用户端就可以进来观看了,用户端也是一样,是需要先初始化SDK和登录房间的。
进入这个房间后,就可以开始观看
进入房间后,某些用户就想要上机进行抓娃娃,接口调用:
上机后,那就要开始控制娃娃机的天车,要进行左右前后的移动,然后开始抓,这个信令就是通过我们的接口sendCustomCommand去实现的。
玩家上机抓完娃娃之后,无论咱们有没有成功抓到,就要下机了,下机的接口调用就如下了:
下机之后,如若想继续上机,可以重复上面的上机接口流程,如果下机之后,玩家不想继续观看了,就可以结束观看,退出房间。
3) 娃娃机控制端接口调用
用户端发送了一些自定义的消息给娃娃机端,娃娃机端接收到之后,就要转换为芯片上娃娃机能够识别的串口指令了,娃娃机这端收到的这些指令的接口就是onReceiveCustomCommand。
说完APP端的接口调用,娃娃机这端咱们还差了一个结束推流,SDK接口调用如下,因为娃娃机推了两路,因此结束的时候也是要结束两路的,最后退出房间。
咱们总结一下调用的主要流程:
娃娃机端:
1. 初始化SDK
2. 登录房间
3. 开始直播,推第一路流
4. 开始直播,推第二路流
5. 接收来自APP端的指令
6. 结束直播,退出房间
用户端:
1. 初始化SDK
2. 登录房间
3. 拉流观看
4. 上机操作,升级为玩家
5. 下机,降级为观众
6. 结束观看,退出房间
以上就是整个sdk接口的调用,即构的娃娃机方案,咱们可以去免费下载Zego的Demo试用。
iOS版本>>
安卓版本>>
同时,娃娃机的具体方案介绍和流程图说明,大家也可以上我们官网参考:
https://www.zego.im/html/solution/wawaji.html
https://www.zego.im/html/document/#Application_Scenes/WaWaJiClient/Overview
以下问题是来自51CTO开发者社群小伙伴们的提问和分享:
Q:Java-Eason-福建:rtmp推流吗
A:即构科技卢老师:我们推流是先走zegoserver,因此是先走我们udp的私有协议推流,最后转推到分发网络的时候,是走的rtmp推流。
Q:Java-Eason-福建:他说的对不对哦
A:即构科技卢老师:具体是什么型号的芯片这个依据厂商来的,芯片上装的是Android系统,Android系统上装一个控制天车的APP,同时这个APP也是用于推流的。
Q:Java-Eason-福建:娃娃机 与 两个摄像头 是连接在一起的吧
A:即构科技卢老师:是的,是通过芯片上的串口连接在一起的。
Q:Java-Eason-福建:应该跟阿里云的视频直播是一个原理的吧
A:即构科技卢老师:阿里云有视频直播,但是没有连麦,他们的延迟也无法实现像ZEGO这样的低延迟。
Q:数据-unicorn-北京:SDK是直播+互动的对吧?是否支持视频会议?主播只能有一个?是否支持多个主播?
A:即构科技卢老师:是支持视频会议的,视频会议用的也是同一个SDK,实现低延迟。视频会议其实就是多个主播在一个房间内互动推流和拉流,走zegoserver推拉流,这样实现低延迟。因此多个主播也是OK的。
Q:数据-unicorn-北京:请问收费标准是什么?比如视频会议。支持同时在线终端有几个?
A:即构科技卢老师:收费标准的话,咱们可以官网联系我们的商务同学具体咨询。 视频会议支持12个终端同时在线视频聊天。
Q:PHP-Coeus-安徽:有H5端的SDK吗? 我看到有H5的,但是并没有找到文档和H5的SDK。
A:即构科技卢老师:文档是在我发的这个链接里面,我发给您:
https://www.zego.im/html/document/#Application_Scenes/WaWaJiClient 这个链接里面有demo的下载,也有SDK的下载
关于H5的SDK,目前我们已经有了方案,在这个月底就会有成品出来,可以直接在H5上使用。
Q:java-Eason-福建:如果PC端推流要怎么做?必须跑在APP上吗?场景不同。
A:即构科技卢老师:PC端我们也是有SDK的,PC端提供的是C++的接口,在sdk的基础上你们开发一个客户端出来就可以。PC端的话,就是电脑的USB接多个摄像头,有异曲同工之处。只是PC端的话,可能成本上稍微会更贵一些,因为一个安卓板子的钱肯定比一台电脑的钱便宜,是吧。
我上面是以iOS为例说的,iOS上我们提供的是OC的接口,Android上提供Java的接口,PC上提供的是C++的接口。
Q:java-Eason-福建:娃娃机控制推流的开关是 娃娃机启动的时候就开着呢 还是有客户连上的时候开始推流?
A:即构科技卢老师:娃娃机启动的时候就要开始推流的,因为不一定客户什么时候进来,所以一开始就要开着。
Q:网络-小王-广州:如果接入APP,底包会占多大空间?
A:即构科技卢老师:SDK的大小,Android在7M左右,iOS动态库在10M左右,iOS的话,打包出来的ipa大概在6M左右。SDK大小的我们仍在进一步优化。
Q:数据-unicorn-北京:视频会议是否支持私有云部署?
A:即构科技卢老师:支持的。安全性比较高的,我们都可以考虑私有化部署,你们提供对应的机器集群就可以。
【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】