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

欢迎你们前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~android

本文由腾讯云视频发表于云+社区专栏小程序

img

本文做者,ericxwli,高级工程师,来自腾讯云终端团队微信

背景app

最近被老大分配了一个任务,他打开微信视频聊天,发起多人视频,指着功能界面说,“你看咱们的产品也是有多人会议的场景,咱们也加一个这样的功能,也不用很复杂,就仿照微信或者QQ的多人视频作一个出来,能实时视频通话,这个应该也不难吧,给你一个礼拜搞定,能够吗?” 个人心里在想这TM要涉及视频采集、编码、传输、解码、视频渲染,要有稳定的后台音视频传输,就光搭建后台就要老命了,这尼玛怎么搞,临走老大又补了一句,"哦,咱们这里再加一个亮点,能够在视频界面发送文本消息,拓展下聊天功能",这时个人心里已经崩溃。机器学习

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

本文根据本身接入过程,展开介绍下具体步骤,概括起来主要有四步:学习

1、注册帐号

进入官网ui

注册本身的腾讯云帐号,这个简单没什么说的,腾讯云也提供了QQ或者微信帐号直接登陆,省去注册的麻烦。this

2、申请APPID

在接入腾讯云实时音视频前,咱们须要给本身的应用注册一个惟一标识appid,方法以下:google

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

img

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

img

img

填入信息,点击肯定便可生成本身的AppID,会在后面接入sdk时使用。

img

点击建立的应用就能够在控制台中对本身的应用进行管理

img

3、购买1元套餐

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

img

4、SDK接入

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

1.集成SDK

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

SDK 说明
IMSDK 提供 IM 即时通讯功能
AVSDK 提供底层音视频功能
ILiveSDK 在 AVSDK 基础上封装而成,提供更简单易用的音视频功能接口
BeautySDK 提供美颜预处理功能

咱们只须要将上次SDK下载而后导入到本身工程便可,详细过程可阅读官方接入文档

2.生成usersig

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

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

img

**第二步,复制私钥

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

img

**第三步,生成userSig

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

img

img

3.初始化登陆

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

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

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

img

完成初始化后,使用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);

##效果展现

img

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

问答
怎么用小程序实现视频通话?
相关阅读
【小视频】特效录制插件强势来袭
怒刷3000条短视频后,我终于发现网红300万点赞的套路
即时通信App怎样才能火?背后的技术原理,能够从这5个角度切入
【每日课程推荐】机器学习实战!快速入门在线广告业务及CTR相应知识

此文已由做者受权腾讯云+社区发布,更多原文请点击

搜索关注公众号「云加社区」,第一时间获取技术干货,关注后回复1024 送你一份技术课程大礼包!

海量技术实践经验,尽在云加社区

相关文章
相关标签/搜索