线上抓娃娃最近三个月火爆了。笔者通过访谈即构科技的客户,了解他们选型线上抓娃娃方案时考虑的因素,总结了一些经验,写成了本文。
线上抓娃娃的技术方案本质上是直播SDK加上物联网。选型直播SDK的方法就是要看延迟时间、流畅性、清晰度还有网页端的支持程度(H5版本),而选型抓娃娃方案的物联网部分就要看硬件方案,包括娃娃机,主板,安卓板子加摄像头,或者IP摄像头等。另外,代运营服务和软件外包对于创业团队,或者打算短平快去试水的平台也是要考虑的选项。
低延迟
线上抓娃娃的延迟时间是直播的延迟时间加上操控信令的延迟时间,因此比直播的要求要高。以即构的方案为例,直播SDK的延迟大概是300毫秒,操控信令的延迟时间大概是100毫秒,两者加起来大概是400毫秒。一般来说,延迟时间低于500毫秒的话,抓娃娃的体验会比较好,如果超过500毫秒,用户就会感觉比较迟钝,很难受。
视频直播技术在2016年直播元年发展起来,连麦直播已经是直播平台的标配。互动直播的延迟要做到300毫秒以下,围观用户的延迟要做到1秒左右。主流采用的语音视频传输协议是RTMP或者基于UDP的私有协议,私有协议的延迟更低一些,而且对抗弱网的能力会更强。
图1. 即构科技实时视频直播架构图
物联网是在线上抓娃娃爆发的这几个月才真正得到落地和实践的,通过websocket来传输控制信令。这一块的数据量比较小,延迟可以做到100毫秒左右就是比较理想的了。
流畅性
低延迟和流畅性本身就是一对矛盾的要求,要延迟低就把JitterBuffer尽量缩短,这样网络抖动就很容易表现出来,出现卡顿的问题。如果为了流畅性而把JitterBuffer延长,那么延迟的时间就会加大。因此,最终的方案是在低延迟和流畅性之间选择一个平衡点。
一般来说有两个办法:
1)做动态伸缩的JitterBuffer,在网络较差或者网络抖动比较剧烈的情况下,可以适当增大JitterBuffer,从而降低一点点延迟来对抗抖动。
2)采用快播和慢播技术,在网络较差的环境,可以在用户无感知的条件下稍微降低播放速度,来应对短暂网络抖动引起的立即卡顿,当网络恢复可以加快速度追回来。
3)码率自适应,也就是以比较合适的码率做动态传输,为了保证流畅度甚至可以调整帧率和分辨率。
4)分层编码、传输控制,在推流端做一些分层的编码,这样在拉流端可以动态根据侦测到的网络带宽情况来拉取不同的视频数据去做渲染。
图2. 即构科技线上抓娃娃系统架构图
考察这个技术特征的时候,除了要通过专业的方法进行测试和验证,还要和方案商的技术团队去沟通,大致了解他们的实现方法,从而判断他们的技术是否过硬和靠谱。
清晰度
清晰度直接关系到用户体验,现在的用户已经被直播给惯坏了,基本接受不了模糊的视频画面。一般来说,决定清晰度的因素就是码率,600kbps的码率是一个比较合适的水平,能看得比较清晰。在选型的时候通过wireshark等工具来监控码率,如果做了码率自适应,码率是会随着网络情况而自动调节的。这里要注意的一个坑就是:有些方案为了获得低延迟,牺牲了清晰度,把码率压倒很低,画面会出现色块和马赛克,或者画面出现一会儿清晰一会儿模糊的情况。这种方案刚体验的时候发现延迟好低,一高兴就忘记观察画面的清晰度。
H5版本
在网页端的支持程度极其重要,线上抓娃娃说到底了还是流量变现的一门生意。H5版本是在网页端传播的利器,特别是通过微信来传播,因此H5版本是必不可少的。
在直播爆发的2016年,为了保障直播的体验,直播平台采用的技术方案大都是由原生APP来集成的。当然,在Web端也是支持的。在Web端可以通过HLS或者HTTP-FLV来拉流观看的,HLS的延迟很大,差不多到10秒。基于WebRTC的方案,虽然延迟也可以做得相对比较低,但是目前支持WebRTC的浏览器不是多数,只有Google Chrome,FireFox和Opera等,占有的事情份额小于40%,而且微信的浏览器不是完全支持WebRTC的,也就是说基于WebRTC的方案在微信浏览器上跑是会受到限制的。
既然HLS、HTTP-FLV和WebRTC都没有办法让线上抓娃娃的方案普遍能在所有浏览器上跑,那么线上抓娃娃的方案商提供的H5版本是怎么实现的?这里只分享一个大概。选型的时候重点的验证方式是看能否在微信浏览器(微信是传播和流量的重镇),和主流的浏览器上运行,然后了解技术方案来判断这个方案是否能够普遍适合所有浏览器。
下面以即构科技的线上抓娃娃H5版本为例来说明H5版本的技术。即构H5版本把视频格式从H264转码成MPEG1,通过WebSocket来接入到实时视频传输网络,在H5上采用JSMPeg来播放。为了获得超低的延迟,即构在实时传输网络内部是采用基于UDP的私有协议进行传输,而私有协议是无法和浏览器互通的。为了解决这个问题,增加了接入服务器,在接入服务器和浏览器之间采用WebSocket进行传输。在H5页面上播放的时候,采用JSMPeg播放器来保证所有的浏览器都能支持,MPEG1是比较早期的视频格式,能够被所有浏览器支持。通过这个方案,即构的H5版本能够在包括微信浏览器在内的所有浏览器上运行。
图3. 即构科技线上抓娃娃H5版本架构图
据了解,目前主流的H5版本都是采用这个方案,也有一些厂商的方案是基于WebRTC的,为了使得他们的方案能够在微信上运行,他们在微信上采用MPEG1/WebSocket/JSMpeg方案,而在别的浏览器上还是保留了WebRTC,这样就引入了一个问题:虽然在微信上支持了H5,但是在别的浏览器上还是受到WebRTC的限制,不能完全支持H5。
硬件方案
市面上的硬件方案一般有3个选择:PC,安卓板子或者IP Camera。
1)PC的优点是简单快捷,而且兼容性好;缺点就是成本高(一台PC的价格在平均5000左右)。为了节省成本,往往通过一台PC带几个娃娃机,这样会带来另外一个缺点:万一PC宕机,几台娃娃机都要跟着停止工作,受到影响的营收就比较高。
2)安卓板子的优点是成熟、稳定,而且普适性广,价格适中(一个安卓板子价格在300到400块钱);缺点当然是没有像PC那边便捷,但是安卓板子的安装也十分简单。
3)IP Camera的优点是成本比较低,缺点是不稳定,而且开发和调试成本高:需要进行嵌入式开发,把程序烧到硬件上,开发和调试十分麻烦。
这三种硬件方案中,推荐选择第二个硬件方案,简单稳定而且性价比高。
在是否提供一站式解决方案方面,也有两种选择:
1)一站式解决方案,包含硬件解决方案,把软件和硬件之间的调试都搞定而且跑稳了,会帮你节省好多时间。
2)只提供直播SDK或者信令控制SDK,运营方还要自己去找硬件厂商,商务对接、硬件选型还有硬件调试都要花掉不少的时间。
如果是为了尽快上线推荐采用一站式的方案,如果是为了掌控整个链条,推荐第二种选择。
图4. 三种线上抓娃娃推流方案(本图来自互联网)
单就硬件调试而言,安卓板子上的应用程序(下层是直播SDK和信令控制SDK)需要和娃娃机的主板通信,把控制指令发送给天车的串口,调试硬件的主要时间主要花在这里。如果硬件不好的话,坑还不少。就算硬件没有问题,一般来说硬件厂商不会帮你调通软件和硬件的通信,信令控制SDK和直播SDK厂商也不会管硬件的问题,因此最终还是得你自己来搞。在运营中如果出来问题,就要你和软件供应商,硬件供应商三方一起协调,过程会比较繁琐。
代运营服务
这是技术以外的话题,可是关系到项目的成败,因此这里也提一下。对于初创团队,或者打算短平快试水的团队,自己去租赁场地和购置娃娃机是不划算的。租赁场地要安排电力和上行网络带宽等。购置娃娃机需要沉着的成本。以后无论是业务进一步开展,还是打算退出,这种模式基本是不现实的。如果方案商提供了代运营服务可以考虑采用,方案商会帮你搞定上述问题,而且日常的维护,娃娃机的版权和采购,他们都会帮你搞定,你只需要按月支付娃娃机的租金就好了,把精力专注在流量的运营和变现上。
软件外包
这是针对从非技术领域跨界而来的团队,比如说传统的娃娃机运营方,如果目前没有配置软件团队,或者研发能力不足,可以选择有软件外包服务的方案商。为什么提到软件外包?因为大部分的方案都会需要你最后开发自己的APP的应用层,或者H5版本的应用层,至少你要换一下H5的皮肤吧。如果自己没有研发团队,那么选择有软件外包服务的方案商也是一个不错的选择。
结语
线上抓娃娃的方案选型需要综合考虑软件、硬件、代运营服务和外包服务等。最终,决定一个线上抓娃娃产品成败的一个关键因素是上线时间,毕竟风口的红利期不长。在选型的时候,要考虑技术,也要把时间成本考虑进去。