腾讯云实时音视频 (TRTC)SDK 使用体验测评
一、为什么选 TRTC?
我们属于教育行业,经常负责承办一些省,市举办的青少年科技创新类的活动。在 2020 年初,爆发了新冠肺炎疫情,大部分线下活动也因此转到线上。当时也出现了一些诸如腾讯会议,钉钉等类型的软件,但毕竟要和赛事进行业务整合和数据对接,因此需要自行开发。当时对比了几家云服务厂商的方案,最后是在声网音视频(Agora)和腾讯云 Trtc 两个产品中选择了腾讯云。主要还是从文档详细程度,上手难度,是否提供完整可体验的 demo 三个方面来定。在形势紧急的情况下,价格已经不重要了~而且我们也进行了对比,大同小异,而且当时各家都有活动。总体来说,还是腾讯云的产品更接地气,当时的完成度也非常高,提供了多种环境的 API,SDK 和 demo。可以快速集成到我们自有的业务当中。
二、怎么用 TRTC?
我个人感觉,接入 TRTC 的流程,其实就是文档大菜单的流程。
a.先了解产品动态--->
b.看一下新手指引和产品简介--->
c.简单看一下购买指南,但别陷进去不要一看到收费就不向下看了--->
d.5 分钟看完上面的内容,直接来到 demo 体验,如果正好有你需要的环境,下一个下来先体验一把--->
e.看一下一分钟系列快速在本地跑通一个环境,推荐 web 环境,最容易上手
正常情况下,基本 30 分钟到 1 小时左右就可以从快速懵逼状态进入到本地实测环节。
如果一切进展顺利,在详细的翻看一下文档,主要关注下 api 和价格。其实 TRTC 的文档更像是一个渐进式的文档,没必要一上来全都了解透彻了在开干,完全可以先抓主要矛盾,剩下的就可以一边用一边了解,中途踩几个坑都不重要,只要真正用起来了,踩过的坑才变得更有意义,对产品也就更了解,对我们自己的业务提升也就更有帮助。
当然价格还是多少要细致了解一下,搞清楚音视频流量,直播流量,转码流量,录制流量等一些概念的区别(ps 注意音视频流量的分钟数不是字面上的分钟数,语音 1 分钟是 1 分钟,而视频分标清,高清和超清,还可以自定义,这些的 1 分钟就不只是 1 分钟了,详情:https://buy.cloud.tencent.com/price/trtc/calculator)。
因为腾讯云的生态圈很大,每个产品都不是作为独立个体来服务,而它们提供的这些服务,也都是用户可配置的,但毕竟东西很多,有时候文档跳来跳去你自己就蒙了。我的经验是,如果是新手,不要在乎仨瓜俩枣的小钱,而且腾讯云也很厚道的会给一些新手流量包,就先无脑的把想体验的功能都体验个遍,毕竟测试阶段产生不了多大的费用,然后在控制台看看流量是怎么统计的,再看看消费账单,看看都在哪产生计费项了,不懂得就提工单(这里还要赞一下腾讯云的客服,真的很到位)。基本有个 2,3 天,就弄明白 TRTC 和与之相关的服务流程了。
三、谈钱不伤感情
本来这里想多写一点,介绍一下相关的计费规则,后来看到最近腾讯云上线了新的费用计算器:https://buy.cloud.tencent.com/price/trtc/calculator,这个很直观,直接在这里看即可。还有一个相关的文档地址是:https://cloud.tencent.com/document/product/647/44247
四、开始测评,九阳神功
说了半天,正式开始吧,只有真正了解了 TRTC 的提供的能力,以及计费的项目,就像张无忌练就了九阳神功,除了自身修为会提升,修炼别的武功也比常人速度更快。
我这里就从创建应用开始,展示一下我们的接入过程,同时提出几个我觉得需要注意的点。
1. 创建应用
在完成腾讯云账号的注册,认证,和 trtc 购买流程之后,就可以在控制台创建应用了。创建之后,会得到应用的 sdkappid,密钥等信息,到这里就可以去接入自己的系统进行使用了。
2. 功能配置
功能配置我们目前只用到了旁路推流和云端录制。
如果要将音视频的画面进行直播,点播等操作,需要在功能配置里开启相应的功能。这里我建议大家开启的时候,选择指定流旁路和指定用户录制两种配置。这样配置的话可以节省很多成本,但需要一些额外的开发成本。如果公司有实力,或者的确是业务需要,可以开启全局自动旁路,这样没有额外开发成本,就可以对音视频画面进行直播和录制。
其余关键的配置还有回调配置,主要是用来搭配一些事件,比如创建房间,解散房间,以及一些鉴黄等功能使用。
3. 生成 UserSig
集成的时候,不论是选择那种技术方案,都需要现在服务端部署一个生成 UserSig 的接口,官方的快速跑通系列介绍是把 sdkappid 和密钥放到客户端,为的是降低开发门槛,快速上手,真正应用的时候我们还是要把这一步放到服务端。
这个官方也有多语言的介绍,我们用的是 dotnetcore 环境,生成的方法就长这样
4. 客户端集成
客户端集成,注意看自家业务,腾讯云官方给出了基于 web,小程序,安卓,苹果,Windows 桌面,electron 等多种方案,我们采用的是 web+小程序,来完成跨端的服务。
从我们的开发经验来看,腾讯云对 web 端的 sdk 还是非常重视的,基本每隔 2 周左右就会出一次版本更新,我们从最初 4.4.x 一直跟进到了现在 4.11.x,从体验上感到明显提升,尤其是在用户网络环境不好,信号终端的情况下,4.6 以前的版本处理起来非常困难,但 4.6 以后的版本这方面改进非常大,明显信号稳定行提升了很多,再结合控制台的仪表板进行监控,使用体验顺滑了很多。
小程序在这方面明显感觉稳定性要比 web 端稳定不少,而且开发难度和成本都很低,建议有移动端需求的小伙伴,优先考虑小程序路线。
我这里建议还是把房间和用户的管理作为重点,因为官方的 demo 还是本着快速上手的目的,并没有对这里过多介绍。比如 web 端的 demo,在本地实际跑通之后,无论是谁都是可以进入房间的,这就除了造成安全和隐私问题,还会消耗更多流量,造成资源浪费。
我的经验是,在进入音视频直播间之前,一定是要有一个房间验证环节。我们是把房间的开关放到了 redis 的一个 hash 表里,通过一个简单的后台界面进行管理,这样用户在进入指定房间时,会先验证房间号是存在,不存在则提示用户房间未开启,反之才可以继续后面的流程。
除了房间号,对用户的验证也应该考虑,我们对此提供了 3 种选择,
1 是不验证,即房间号开启任何人均可进入房间;
2 是账号验证,即需要一个登录验证来进入房间,同时还借助 signalr 来完成一个呼叫进入的模式,也就是用户登录之后,并不直接进入直播间,而是通过 websocket 和服务端建立长连接,等待管理人员呼叫,收到呼叫才能进入房间。(这里也可以用腾讯云的 IM,音视频本身就包含 IM 的免费版,在管理房间人员,解散房间的时候会用到)
3 是刷脸认证,我们也接入了人工智能接口,在安全性要求比较高的场景,对用户进行刷脸认证。这里可以使用腾讯云的人脸识别接口,日免费调用量是 10000,一般场景基本都够用了。
除了安全性,还要注意调整码率,分辨率,api 里有相关的指导,需要注意的是,除了摄像头采集画面的码率,还有共享屏幕的,这两个在产品上线前一定要根据情况调整好,调低了不清楚,调高了流量走的哗哗的,根据自己情况定。
https://web.sdk.qcloud.com/trtc/webrtc/doc/zh-cn/tutorial-14-basic-set-video-profile.html。
这里建议结合控制台仪表盘的监控数据,来进行调整,个人感觉这个仪表盘做的还是非常厉害的,监控的数据很全面,对每个人的发送和接受数据,掉帧情况都有详细的图表展示,非常直观。
5. 服务端集成
除了集成腾讯云的客户端,其服务端也提供了很多管理接口,用来方便的管理房间,推流等操作。
我个人认为,集成服务端 api 的重要程度,甚至要高于客户端。文档地址:https://cloud.tencent.com/document/product/647/37078
官方对服务端接口的文档介绍也非常详细,而且提供了即使测试(API Explorer)的工具,只需要选择对应的语言,输入必要的参数,就能得到对应的代码。然后稍加修改就可以快速集成到我们自己的系统中,非常方便。
比如,我要解散某个房间,就可以先按照文档生成的源码,简单修改一些生成自己的底层方法,然后遵循依赖注入原则,构造接口,最后在到控制器里去调用该接口即可;
实际测试的结果也印证了这些接口真的非常好用。会让你的业务流程更加丰满,提供更多维度的服务能力。
除了解散房间,其余比较常用的就是踢人,查询房间人员列表,推流,录制。都可以根据文档介绍,然后灵活开发。献上一个我们自己的服务端控制台截图。
五、打完收工
我们目前用到 TRTC 的能力基本就这些,看到最新开放的源码里,web 端采用了框架的技术,并提供了很多原生 web 没有的能力,比如监控码率,美颜等功能,锦上添花,后续我们也会持续跟进。
整体感觉 TRTC 的各方面还是非常厉害的,基本你能想到的功能,它都有。而且接入腾讯整个大生态,尤其在开发微信小程序的时候,效率很高。在开发的过程中也的确能感到 trtc 在各方面的能力都在提升,有种和用户一块提升的感觉。
版权声明: 本文为 InfoQ 作者【为自己带盐】的原创文章。
原文链接:【http://xie.infoq.cn/article/072789d4b14887d2f65585b4b】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论