从0到1搭建视频通话系统,1天就搞定了

2019 年 10 月 30 日

从0到1搭建视频通话系统,1天就搞定了

最近被老大分配了一个任务,他打开微信视频聊天,发起多人视频,指着功能界面说,“你看我们的产品也是有多人会议的场景,我们也加一个这样的功能,也不用很复杂,就仿照微信或者 QQ 的多人视频做一个出来,能实时视频通话,这个应该也不难吧,给你一个礼拜搞定,可以吗?”


我的内心在想这 TM 要涉及视频采集、编码、传输、解码、视频渲染,要有稳定的后台音视频传输,就光搭建后台就要老命了,这尼玛怎么搞,临走老大又补了一句,“哦,我们这里再加一个亮点,可以在视频界面发送文本消息,拓展下聊天功能”,这时我的内心已经崩溃。


要一个礼拜搞定,只能看看有没有现成的解决方案,抱着试一试的态度 google 了下,没想到还真有,腾讯云、即构、网易云、声网等好几家公司提供了完整了解决方案,本着腾讯毕竟大厂,而且里面介绍他们的解决方案是基于 QQ 十多年的技术积累,稳定性和质量都有保障,于是直接试用了腾讯云的解决方案,从接入过程和最后的效果看确实也没有辜负我的期望,在还没有真正购买他们产品时,接入过程中遇到的问题都能得到积极的技术支持,而且让我意想不到的是该方案还支持 im 功能,解决了老大最后的神补刀功能。


本文根据自己接入过程,展开介绍下具体步骤,归纳起来主要有四步:


一、注册账号


进入官网


注册自己的腾讯云账号,这个简单没什么说的,腾讯云也提供了 QQ 或者微信账号直接登录,省去注册的麻烦。


二、申请 APPID


在接入腾讯云实时音视频前,我们需要给自己的应用注册一个唯一标识 appid,方法如下:


登录腾讯云,点击进入控制台,



选择云产品->实时音视频->创建新应用




填入信息,点击确定即可生成自己的 AppID,会在后面接入 sdk 时使用。



点击创建的应用就可以在控制台中对自己的应用进行管理



三、购买 1 元套餐


在使用申请的 appid 接入实时音视频服务后,产生通话时长,腾讯云就会根据时长来计费,就像我们打电话计费一样,这里腾讯云提供了一些套餐,我们可以先使用最便宜的 1 元套餐,一个月 1 万分钟,一般也满足使用,如果觉得效果好,使用时长更多时我们可以再升级套餐包,购买入口



四、SDK 接入


完成上述准备工作后,就是最关键的 SDK 接入,腾讯云的 SDK 接入有专门的文档介绍,接入非常方便,主要有下面关键几个步骤:


1.集成 SDK


腾讯实时音视频解决方案将底层音视频能力封装成了一套 SDK 集合,包含了



我们只需要将上次 SDK 下载然后导入到自己工程即可,详细过程可阅读官方接入文档


2.生成 usersig


每个用户都会有一个用户标识,usersig 则是对用户标识的一种鉴权认证,是一个加密串,在登录时会用到,生成步骤如下:


第一步,到腾讯云的控制台下载私钥,也就是这个



第二步,复制私钥


下载下来是一个 keys.zip,不用解压缩,直接用 winrar 打开,右键 private_key 选【查看文件】,然后 Ctrl+A,Ctrl+C 复制**



第三步,生成 userSig


还是在腾讯云的控制台,在左边找到【开发辅助】,输入用户名,在私钥这里 Ctrl+V,点击【生成签名】,然后就可以在右边把生成的 userSig 复制下来**




3.初始化登录


在程序启动的地方调用接口:


// 初始化iLiveSDKILiveSDK.getInstance().initSdk(this, Constants.SDKAPPID, Constants.ACCOUNTTYPE);// 初始化iLiveSDK房间管理模块ILiveRoomManager.getInstance().init(new ILiveRoomConfig()          .setRoomMsgListener(this));
复制代码


sdkAPPID 就是刚才申请的 APPID,acountType 在应用账号信息里



完成初始化后,使用 userid 和 usersig 进行登录


ILiveLoginManager.getInstance().iLiveLogin(userId, userSig, callback);
复制代码


4.进入房间,视频渲染


布局渲染用的控件:


Java<com.tencent.ilivesdk.view.AVRootView
android:id="@+id/av_root_view" android:layout_width="match_parent" android:layout_height="match_parent" />
复制代码


并设置到 SDK:


ILiveRoomManager.getInstance().initAvRootView(avRootView);
复制代码


进入房间有两种方式,房间不存在,调用创建房间接口


ILiveRoomManager.getInstance().createRoom(roomId, new ILiveRoomOption(), callback);
复制代码


如果房间已经存在,则调用加入房间接口:


ILiveRoomManager.getInstance().createRoom(roomId, new ILiveRoomOption(), callback);
复制代码


roomID 即是房间的号码,由自己的业务提供维护。


在进入房间后,对于本应用程序就是进入了会议室,会自动将进入会议室的每个人员画面渲染出来。


5.消息处理


在老大最后补的一句里,需要在视频通话中加入文本消息聊天功能,老大说的倒很简单,但是一个消息聊天单单消息通道的建立就是一件非常困难的事情,但在接入过程中惊喜的发现腾讯实时音视频本身就提供了这个功能,真实得来全不费工夫,而且开启聊天功能非常简单,只需在进房时将 ILiveRoomOption 的 imSupport 开启,然后设置消息监听即可收到消息,消息发送也是 s 调用一个借口即可,代码如下:


//消息发送ILiveMessage message = new ILiveTextMessage(test);ILiveRoomManager.getInstance().sendGroupMessage(message, callback);
复制代码


效果展示



###


浪里个浪,原本以为任务是肯定完成不了,没想到不到一天的功夫就已经搭建出视频通话功能。上述就是本文根据腾讯云官方文档指引,以 Android 为例总结的从零搭建视频通话服务的主要步骤,如有遇到其他问题,欢迎留言。


作者介绍:


ericxwli,高级工程师,来自腾讯云终端团队。


本文转载自公众号云加社区(ID:QcloudCommunity)。


原文链接:


https://mp.weixin.qq.com/s/byXstvEyhqeMoMAqHVEqRg


2019 年 10 月 30 日 12:20171

评论 1 条评论

发布
用户头像
写的挺好,毫无广告痕迹
2019 年 10 月 31 日 12:13
回复
没有更多评论了
发现更多内容

架构培训 -05 学习总结 缓存、消息和负载均衡

刘敏

架构师训练营 week05 作业

GunShotPanda

架构师0期第五周总结

何伟敏

架构师训练营第五周 - 总结

桔子

技术选型 - 第五周(初稿)

X﹏X

架构师训练营第五周总结

极客大学架构师训练营

一致性哈希算法Java实现

dapaul

架构师

架构师0期第五周命题作业

何伟敏

架构训练营week05-总结

尔东雨田

多线程获取结果还在使用Future轮询获取结果吗?CompletionService快来了解下吧。

java金融

Java 多线程 Feature CompletionService

架构师训练营第5周课后作业

Just顾

架构师训练营 week05 学习总结

GunShotPanda

架构师第五周

Tulane

架构师训练营-第五周-作业2

A Matt

架构学习第5周作业

乐天

第五周-总结

JI

极客大学架构师训练营

架构师训练营第五周 - 作业

桔子

第四周系统架构演进和案例分享笔记

秤须苑

极客大学架构师训练营

第五周-命题作业

JI

极客大学架构师训练营

第四周课后练习

秤须苑

极客大学架构师训练营

架构师训练营 0 期第五周

Blink

架构师训练营week5 总结+作业

林毋梦

第五周·总结

刘璐

架构师训练营第五周总结

养乐多

架构学习第5周作业总结

乐天

week5.学习总结

个人练习生niki

第五周课后作业

iHai

极客大学架构师训练营

第五周学习总结

iHai

极客大学架构师训练营

week05-作业

seki

架构师0期Week5Work2

Nan Jiang

week05-总结

seki

从0到1搭建视频通话系统,1天就搞定了-InfoQ