1、腾讯云SDK

1.1、腾讯云实时通话(TRTC)

产品概述https://cloud.tencent.com/document/product/647/16788        产品功能https://cloud.tencent.com/document/product/647/41105        接口文档https://liteav.sdk.qcloud.com/doc/api/zh-cn/index.html

1.2、腾讯云即时通讯(IM)

产品概述https://cloud.tencent.com/document/product/269/1498  产品功能https://cloud.tencent.com/document/product/269/1499       接口文档https://im.sdk.qcloud.com/doc/zh-cn/md_introduction_Android%E6%A6%82%E8%A7%88.html

1.3、腾讯云互动白板(TIW)

产品概述https://cloud.tencent.com/document/product/1137/37901     接口文档https://cloud.tencent.com/document/product/1137/39967

1.4、接入腾讯云

腾讯云音视频SDK选择哪个版本要依据产品需求而定,我们的产品需求设计到直播推流、直播播放、点播播放、基础美颜、基础滤镜、音视频通话,因此我们选择了专业版本。线面是腾讯提供的几种接入版本,依据产品需求选择。

产品需求中涉及到弹幕、礼物赠送、点赞、好友管理、抽奖、领券活动,需要用到IM消息,因此还需要集成IM SDK。

产品需求中涉及到文档共享、资料讲解、 画笔轨迹同步,因此还需要集成白板SDK。

1.5、TRTC相关原理

旁路直播https://cloud.tencent.com/document/product/647/16826

云端混流转码https://cloud.tencent.com/document/product/647/16827

云端录制与回放https://cloud.tencent.com/document/product/647/16823

2、直播中台SDK

2.1、直播中台SDK的作用

1、提供基础的音视频通话、IM及时消息、文档共享能力。

2、音视频基础能力做收口,直播中台SDK作为提供音视频能力的唯一出口,各个业务线集成直播中台SDK,降低接入成本,提高开发效率,同时避免重复依赖。

2.2、直播中台SDK架构设计

2.2.1、业务现状

业务现状

直播中台sdk的业务模型分为四块:

  • 通用直播间:属于在中台SDK之上的一层业务封装,主要应用场景范围有两大类

    • 泛直播,针对新房、二手和海外场景进行的直播,主要通过CDN播放的方式
    • 1VN新房带看直播
      1. 在大场直播中,可通过专属服务转移到小场直播
      2. 增加语音和视频连麦的功能
      3. 拉流方式既有CDN也有TRTC
  • 带看助手:该场景中台SDK主要提供云直播的基础功能,并不参与具体业务的逻辑.
  • 会议场景:
    • 目前在线贷签并未接入中台SDK,为了方便中台服务统一管理,考虑以后对接
    • 谈判目前使用的是老版的功能,并不具备完整的sdk概念,后续考虑替换为新包,一起管理
  • 培训场景

2.2.2、架构图

目前android端的直播架构采用单组件、多模块化的开发方式,大致分为三层:

  • 业务逻辑层:目前只有一个业务中台

    1. common_live:包含通用直播间所有业务,目前用于包含的场景有泛直播和1vn带看,提供业务模块的跳转接口
  • 基础组件层:SDK的组件化
    1. controller:直播SDK的基础组件,实现直播中台的业务功能

      1. 封装网络请求框架,实现直播中台的业务逻辑,如接口请求、权限管理和心跳检测
      2. 对依赖云服务的功能进行抽象封装,具体实现交给framework处理,实现三方隔离.
  • 公共层:用于支撑上层模块的逻辑实现,其中包含三大模块
    1. compose:提供通用组件的实现,例如:弹窗、webview和自定义控件等功能
    2. framework:提供上层控制器的具体实现的管理类,主要包含:VideoManager、ImManager和BoardManager等具体功能的逻辑实现
  • 系统层:提供上层模块的服务支撑,包含四大模块
    1. 腾讯云:包含腾讯云的三个sdk,分别有云直播、实时消息和互动白板,sdk打包后并不包含腾讯sdk,而是由业务方自己手动接入.
    2. Servers:提供基础的网络服务,其中包括有Dig埋点、崩溃统计、网络封装库
    3. LibBasic:提供最基础的通用控件(utils)和基础配置
      1. 直播sdk的初始化配置
      2. 用户登陆通知与网络的header配置
      3. 分享、登陆和Dig等回调配置
    4. 3rdParty:包含对三方库的依赖整合,如glide、recycleView、libPermission等库

2.2.3、MVP架构

UI框架基于MVP模式,同时在MVP的模式上进行了扩展

  1. 一个Activity对应多个Presenter,每个presenter都有明确的分工,业务相对独立
  2. Presenter和View通过多重继承,解耦不同场景的业务代码,满足里氏替换原则
  3. 通过面向接口的方式,细化接口,对接口进行隔离的同时,还满足依赖倒置倒置原则

2.3、音视频通话的交互流程

2.3.1、主播端

主播进入直播间(推流)大致分为11个步骤:

1、loadtoken:向server加载Token
2、loadLiveInfo:获取直播间的基本信息
3、checkWifiMode:如果是非wifi条件,弹窗确认提醒
4、requestEnterRoom:向服务器发送进入房间的请求
5、getUserPermission:访问server获取用户权限信息.
6、开启长连接心跳,轮训上报server在线状态
7、检测是否有开启直播间的权限,如果有则进入下一步
8、startLive:告诉server用户即将发起直播
9、enterRoom:根据server的配置参数,调用sdk初始化直播间并开启直播,
10、开启麦克风采集,编码AAC并上传云服务器
11、开启摄像头录制,编码H264并上传云服务器,直播开启完成

2.3.2、观众端

观众端直播过程如下:

用户端相比主播端的逻辑要少一些(拉流),步骤如下:

1、loadtoken:向server加载Token
2、loadLiveInfo:获取直播间的基本信息
3、requestEnterRoom:向服务器发送进入房间的请求
4、getUserPermission:访问server获取用户权限信息.
5、开启长连接心跳,轮训上报server在线状态
6、startCdnPlayer:根据server下发的url地址,播放视频流
腾讯云推荐CDN播放使用flv格式,具有延迟小,与 RTMP 相比省去了部分协议交互时间,首帧上屏时间更短。

当用户进入当直播间时直播已经结束 ,并且直播间有回放功能时,云端会自动保存视频文件,保存为m3u8或mp4。此时观众再次进入,是点播播放。流程如下:

点播相对于直播,逻辑更加简单:

如果判断直播已经结束,直接请求服务端的录播信息,获取m3u8链接,使用播放器直接播放
该过程逻辑简单,并不具备以下功能:
无需调用requestEnterRoom请求进入房间
无需调用getUserPermission取用户权限
无需调用startHartBeat启动心跳

2.3.3、 im信令

基于IM,用户可以发起弹幕消息和控制信令。下面以连麦消息举例。

消息发送分为两类

1、客户端直接调用腾讯IM SDK,把消息发送到腾讯云,腾讯云发送给指定用户。
2、客户端请求直播中台服务,直播中台服务把消息发送给腾讯云(restful调用),腾讯云再转发给用户。

基于腾讯云(TRTC)的客户端直播中台SDK架构设计相关推荐

  1. 腾讯云技术公开课:公有云架构演进之路

    腾讯云技术公开课专注于云计算方面的技术分享,将定期邀请腾讯云及相关领域的技术专家,通过在线视频直播的方式,与广大开发者分享腾讯云在云计算领域积累的最佳实践和经验. 3月27日,将举办第一期技术公开课, ...

  2. 【新知实验室】腾讯云TRTC服务体验

    前言 什么是腾讯云TRTC 腾讯云实时音视频(Tencent RTC,简称 TRTC)是一项低延时.高并发.稳定可靠的音视频 PaaS云服务,主要提供多人实时通话以及低延时互动直播能力.TRTC 将腾 ...

  3. 腾讯云TRTC服务实现小程序语音/视屏会议

    腾讯云TRTC服务的入门 TRTC 是腾讯云主打全平台互通的多人音视频通话和低延时互动直播解决方案.TRTC服务有多种客户端的支持,对于IOS.Android.React native等都支持的比较好 ...

  4. 腾讯云 TRTC 监控仪表盘实用指南

    腾讯云实时音视频(Tencent RTC,简称 TRTC)是一项低延时.高并发.稳定可靠的音视频 PaaS 云服务,主要提供多人实时通话以及低延时互动直播能力.TRTC 将腾讯 21 年来在网络与音视 ...

  5. 腾讯云TRTC web sdk实践

    实时音视频(TRTC) 是腾讯云提供的一套低延时.高质量的音视频通讯服务,致力于为腾讯云客户提供稳定.可靠和低成本的音视频传输能力.您可以使用该服务快速构建"视频通话"." ...

  6. 腾讯云TRTC服务实现Web视频会议

    腾讯云TRTC服务实现Web视频会议 背景 近期公司承接了某高校智慧校园的项目建设工作,其中在家校协作的板块中需要进行视频教学,以及线上屏幕共享,为了完成这一需求,我在自研与第三方服务的选择之间选择了 ...

  7. 【新知实验室】腾讯云TRTC实时音视频体验

    新知实验室  腾讯云TRTC实时音视频体验 在我们的日常生活中,音视频通话.直播及视频会议等诸多音视频场景已经很常见,腾讯发布的 实时音视频(Tencent RTC) 产品,基于腾讯多年来在网络与音视 ...

  8. 基于腾讯云COS+CI图文音视频解决方案

    从早期的门户网站,到后面的feeds流,再到如今的各种垂直行业的社区分享,一次次变更成就了近几年行业中的领跑者.从行业领先的微博,再看小红书.B站等等,绝对都是可以看到feeds和社区的影子.而其中跑 ...

  9. 【新知实验室】——腾讯云TRTC实时音视频体验

    [新知实验室]--腾讯云TRTC实时音视频体验 前言 一.腾讯实时音视频TRTC是什么? 二.DEMO体验 1.注册腾讯云账号 2.使用实时音视频(需先开通) 3.查看项目(查看密钥和快速上手操作) ...

最新文章

  1. java中mymaps_Java MyLocationStyle.myLocationType方法代码示例
  2. 精通JavaScript--01面向对象JavaScript
  3. php文字超链接怎么写,php 文本URL转换为超链接功能实例
  4. 【编译原理】构建一个简单的解释器(Let’s Build A Simple Interpreter. Part 7.)(笔记)解释器 interpreter 解析器 parser 抽象语法树AST
  5. labelme实例分割_GitHub:图像分割最全资料集锦
  6. android 分享小程序,Android分享微信小程序给微信好友,封面bitmap的处理
  7. Gson案例:Java对象与JSON字符串相互转换
  8. 基于《河北省重大技术需求征集系统》的可用性和可修改性战术分析
  9. 八皇后问题(C语言)
  10. 【2021牛客暑期多校训练营6】H Hopping Rabbit(扫描线)
  11. 【探路者】10月16日立会报告(团队第1周-第3次)
  12. python 清空文件_python:文件的读取、创建、追加、删除、清空
  13. 知识图谱构建流程原型、工具、数据、表示、推理以及可视化
  14. 什么是OFD格式文档?一文教你读懂OFD格式文档
  15. Flash游戏开发技术分析(下)
  16. 汇编语言学习:如何理解“物理地址=段地址X16+偏移地址”
  17. 程序员凌晨3点不回家
  18. 网易面试题——快速无条件分支的 RGB、HSV 互转【GLSL】
  19. 社招和校招有什么不同?阿里美团等大厂 JAVA 社招面经分享
  20. 非root用户免密ssh登录到linux---防破解!!

热门文章

  1. 手工玫瑰花_布艺玫瑰花的做法教你手工制作布艺玫瑰花的折法图解教程
  2. 基于模型设计和机载软件
  3. MySQL 8.0.17安装教程(windows 64位)
  4. 大数据最后一公里——2021年五大开源数据可视化BI方案对比
  5. 解决“System.Data.OracleClient需要Oracle客户端软件8.1.7或更高版本”
  6. Win10系统蓝屏如何使用U盘重装系统?
  7. Unity经典游戏教程之:松鼠大作战2
  8. 接触Matlab10年后的一个总结,随时使用Matlab要掌握的一些要点
  9. 服务器部署的参数文档,服务器怎么配置参数
  10. 字符串String简易习题