腾讯云直播服务评测

2020-05-22 17:06:48 浏览数 (1)

2020年注定是魔幻的一年,疫情让我们更热爱生命,也让我们更珍视工作。今年的五一假期比往年多了两天,但在这个特殊的年份的特殊的劳动节中,工作和这个假期更配哦!小编在这个假期就玩了玩直播,解释一下,是腾讯云平台提供的关于一系列的视频应用场景的一些服务,很荣幸能够提前体验一把,顺便简单的做一些评测,主要从产品易用性和性能体验这两个角度做了些测试,在此记录一下。同时也感谢腾讯直播云平台的哥哥姐姐们提供宝贵机会!

接下来,我们书归正传,开始我们的评测之路。

1.推拉流地址易用性测试

对于直播场景而言,开发过程中首先关注比较多的是推拉流地址,一般而言我们推流的地址即是拉流的地址。腾讯云的直播服务通过两个不同的域名将推流和拉流地址从逻辑上分割开来。这样的设计有利有弊:好处是可以推拉流的名称个性化自定义,且推流和拉流地址解耦;不好的是需要开发者或者使用腾讯云产品的人员拥有两个经过备案的域名,可能会影响到一部分人,不过也不是什么大事。

生成推拉流地址可以通过腾讯云控制台域名管理和辅助工具中的地址生成器来实现。对于推流地址,支持自定义推流应用程序名称,自定义推流视频流的名称,拉流地址支持自定义拉流应用程序名称。生成地址后,可以通过复制按钮和扫描二维码的方式获取推拉流地址,这一点对于开发人员来讲很适用,否则推拉流的url手敲起来,或者再人手动来一次ctrl c和ctrl v着实有些肝疼。

笔者填入的流名称是test,推流应用程序采用默认值,生成的推流地址如下:

代码语言:javascript复制
rtmp://94626.livepush.myzijiebao.com/live/test?txSecret=4b8fafc769f0f88df99ec9d8b35131d9&txTime=5EB03BFF

2.推流协议及推流方式支持测试

一看生成的推流地址,我们便知腾讯云的推流地址采用的是rtmp协议,这也是直播场景里当前依然绕不过的一个协议。普通意义上的直播,当下对于rtmp可能足以。不过对于一些安防监控的场景,rtsp协议的支持也是很有必要的,他们也有直播(实时查看监控数据)的需求,这一点,笔者觉得腾讯云不应该不考虑。

对于推流端,主要的场景分为移动端和传统PC端以及包含摄像头的嵌入式互联设备,分别尝试做了测试。

移动端就是两大主流阵营,Android和IOS,腾讯云直播提供了推流的sdk,同时也提供了推流的Demo,美颜,动图,特效,这些主播端需要的常用功能有都支持。不过目前提供的特效效果感觉相对较少,可能后续还会陆续增加吧,希望早日推出。整体而言,移动端的推流支持基本满足需求,可以快速上手。

PC端的推流,腾讯云直播平台提供了基于Obs的推流,obs的操作相对来讲有一些专业性,游戏场景使用的比较多。这一功能做的也相对比较完善,控制台还有针对obs推流的指引和说明,这一点做的很贴心。有的时候,开发时候找不到帮助文档也很抓狂。

对于PC端而言,由于广大音视频开发者广泛使用FFmpeg,且FFmpeg也支持rtmp推流。但是测试了腾讯云的直播,一直未成功,笔者觉得,PC端基于FFmpeg的推流,还是需要支持的。另外,很多嵌入式设备的音视频开发也是基于FFmpeg去做开发,否则一大批基于FFmpeg做开发的朋友们将被拒之门外或者不得不更换方案(有时候更换技术方案的成本会很高)。

3.拉流方式支持测试

拉流,也就是播放端,通过播放地址,我们可以看到腾讯云的支持算是比较全面。生成的播放地址中可以看到支持http flv,支持hls,支持rtmp,支持webrtc,笔者使用腾讯云直播的demo,ffplay,vlc,苹果手机对各种协议进行测试,整体上都比较完整的支持,由于不具备webrtc的测试条件,未做测评。在iphone上播放的时候,笔者通过支付宝扫描二维码也成功实现了播放。商业有壁垒,技术无边界啊!

4.各种直播场景常见关注点测试

说到直播,我们一般比较关注的几个点是秒开,播放的流畅度,以及延时这几个维度。各种场景玩了腾讯云的直播服务,秒开基本没问题,视频播放的流畅度也基本没有问题,几乎没有出现花屏、卡顿等问题,当然,笔者的网络是正常的家用网络,极弱网络环境,比如偏远山区,卫星等网络并未做测试,这里不敢瞎说哈!对于延时这个问题,倒是想到了一个比较直观的可视化的测试方式,那就是通过秒表来测试延时,按这种方式测试了不同直播场景下的直播的延时,我们一一来看。

(1) obs直播(PC)

obs在前面的搭建简单直播平台的问文章中介绍过,感兴趣可以戳下面文章回顾一下:

obs推流PC端用的比较多,而对于直播的场景,可能一般游戏的场景比较多,像国内的斗鱼是支持obs推流的,而腾讯云的直播平台也支持obs推流,且给出了obs的推流步骤,毕竟,腾讯和斗鱼之间还是有千丝万缕的联系的吗!因为使用了rtmp鉴权,所以,在obs推流的时候要注意填写串流密钥的信息。

通过辅助工具生成的推流地址中,obs推流地址对应obs中的服务器,obs推流名称对应obs中的串流密钥,配置起来还是略微繁琐了一些。

配置完毕之后,在浏览器中打开一个在线秒表的窗口,然后在obs中添加一个窗口捕获,之后点击开始推流:

播放端,使用ffplay进行播放,进行截屏,我们观看一下延时效果:

第一张截图的网络环境是家用,100M带宽方正,截图时间是obs推流已经进行一段时间,延时有可能会有累积现象。

第二张截图的环境是公司级别用,网络状况好一些,截图时间是obs推流刚开始。

第一张截图,obs推流部分的秒表时间为01:45:092,ffplay播放的秒表的时间为01:39:678,此时rtmp推流的延时为5秒770毫秒,略微高一些;

第二章截图,obs推流部分的秒表时间为06:31:344,ffplay播放的秒表的时间为06:28:678,此时rtmp推流的延时为2秒334毫秒,这个还不错,rtmp应该是这个表现。

(2)手机推流(ffplay播放)

手机使用腾讯云提供的腾讯云工具包进行推流。pc端使用ffplay进行播放测试。

此时的延时,通过一个小视频来感受一下:

这个是秒级别的,延时大概5秒,可能精度会差一些,笔者又录制了一个使用秒表的测试延时的小视频,精度更高一些:

通过秒表观看,可以查看延时不足3秒,2秒多一点,这个程度可以说已经很可观了。

第一个视频是在直播推流进行一段时间以后录制,第二个秒表的视频是在直播刚开始的时候录制,经过测试,基本可以确信的是,随着推流的不断进行,直播的也会进一步的累加。笔者的网络环境中,最差的时候能达到5秒延时。

(3)Android推流苹果播放(hls)

对于流媒体,Apple天然不支持rtmp,有自己独特的hls,所以,关于hls也不得不测试一下。笔者还是使用腾讯云直播工具包发布直播(在Android手机端),然后在iphone上扫描hls播放地址进行播放。

我们还是看看hls播放的延时。

看过视频之后,不是一般的高啊,高达10秒之多,甚至更高,确实有些过分,这也是对于直播而言,为什么rtmp虽一直被诟病,却也一直是直播界的主流。不过呢,苹果的生态如此强大,又不得不支持hls(它本身也是有优点的吗)!

(4)http flv

腾讯云直播还提供了flv格式的播放支持,这个笔者测试中,大部分浏览器和工具对于该链接都是做默认下载处理(下载flv格式的视频)。折腾了许久,最终借助vlc播放器,简单做了一下延迟的测试,效果如下:

可以看到,延时大概5秒左右,与正常的rtmp流程基本相仿。

(5)总结

整体而言,直播场景中比较核心的几个点,秒开,流畅播放,腾讯云的直播服务基本可以满足需求。对于延时,除hls外,最坏情况延时在5-6秒左右,最好的情况2-3秒,直播的时间加长延时会有所累加,网络环境对直播延时有较明显的影响。

5. Web推流

腾讯云的直播服务也推出了基于web的推流,搞音视频的都知道webRtc近几年火的一塌糊涂。去面个试,十个有八个都问会不会,搞没搞过webRtc。本以为腾讯云的web推流也是基于webRtc的,体验了一把发现并不是,原来是基于flash的。算是有一点小小的失望吧!

在云直播的控制台,辅助工具选项卡中提供了web推流的选项。使用web推流,比较简单,填入流的名称,点击开始推流即可,要结束推流的时候,点击断开推流即可。

不过断开推流做的比较粗糙,没有提示,并不能确切的知道是否成功断开了推流,有时又好像没有响应的样子,这一功能有待提升!另外,在web推流的时候还需要打开flash,不过Chrome宣布不久的将来将不再支持flash了,不知道腾讯云直播对于这一点是如何考虑的。下图是web推流的效果。

从图中可以看出,web推流使用的分辨率相对较小,默认480p,且没有提供修改推流分辨率的选项,这一部分的功能理论上应该需要继续完善。点击开始推流后,下方提供了rtmp,hls,flv的播放地址,说明只是通过web推送到了流媒体服务器,并没有从浏览器直接到浏览器,实现真正的基于web的点对点视频通信。笔者使用ffplay播放了rtmp流,延时大概约5秒左右,这一功能很可能会变成鸡肋,食之无味,弃之可惜,这部分完全换作基于webRtc的通信才是王道。

6. 流管理

云直播平台同时也支持对推送的视频流进行管理。主要分为在线流,历史流,禁用流。在线流是指当前正在推送的视频流,历史流是指曾经推送的视频流。在历史流和在线流的选项卡中,可以选择对流进行禁用,这个笔者考虑可能是用于对一些非法,比如涉暴等敏感的推流进行禁用。

整体而言,个人觉得对于流管理的功能做的相对单一了些。对于每一路流,应该可以再加一些控制,比如质量优先,速度优先诸如此类的选项,以供开发者选择。

5.功能模板(水印、鉴黄、录制、转码)

对于直播场景中,常见的功能,如水印,鉴黄,录制,转码等功能,腾讯云直播平台通过将不同的功能抽象为模板,对于每一个模板进行配置。然后在推流域名中添加各种模板配置进而实现功能。这个设计笔者觉得比较巧妙,点个赞。对于每一个模板使用不同的参数,这样满足多样性的需求。通过推流域名设置增加模板,如此保证了可扩展性。

6.统计分析

腾讯云直播平台同时也提供了统计分析功能。该功能主要用于统计推流的数据,以及推流产生的流量情况,并发情况。并以折线图的形式展现,比较直观。贴一张图,大家感受一下。

这样的功能其实很有必要,随着数据量的不断产生,通过人工智能和大数据的方式,可以提取很多有效有用的信息。当前还没有看到这部分内容,不过笔者相信,这部分功能,腾讯云直播平台也不会放过的,应该就是时间问题。如果能够在统计分析图标中直接将产生的费用显示,就更直观更完美了!

总结

好了,整个五一假期,就和腾讯云直播平台为伴。熟悉了整体流程,日后如有机会使用腾讯云直播的产品,相信会有一定的先发优势。简单对云直播的测评总结如下:

  • 推拉流地址支持自定义生成比较灵活,但需要域名支持可能会限制部分开发者的使用;
  • 推流流媒体服务器只支持rtmp流媒体协议比较单一,对于基于rtsp的安防等领域不友好;
  • 支持不同平台的直播推流,效果基本满足需求,美中不足的是,对基于FFmpeg的推流支持不完善;
  • 各类直播场景中可以实现秒开,播放流畅,延时平均5-6秒,与网络环境相关,hls播放的延时可达10秒,基本达到行业平均水平。随着直播时间的增长,延时会产生累加,应该有进一步优化空间;
  • 基于flash的web推流感觉没有存在的必要,更好的聚焦webRtc的开发可能才是王道;
  • 流管理的部分增加诸如质量优先,速度优先等其他选项会更加饱满;
  • 鉴黄、录制、转码等按照模板的方式存在,与推流域名的管理相结合设计比较巧妙,兼顾了多样性和可扩展性;
  • 统计分析统计了推拉流产生流量以及并发数等情况,如能一并显示计费信息会更加完美!

以上就是笔者对于腾讯云直播产品体验的一些简单评测和记录。欢迎交流!

0 人点赞