视频/直播/多人会议

497 阅读4分钟

WebRTC

WebRTC,网页即时通信(Web Real-Time Communication),实现了基于网页的视频会议。

音视频采集基本概念:getUserMedia

juejin.cn/post/719474…

  • 摄像头:
  • 帧率:一般一秒钟可采集 30 张以上的图像,一些好的摄像头甚至可以采集 100 张以上。我们把摄像头一秒钟采集图像的次数称为帧率。帧率越高,视频就越平滑流畅。在直播系统中一般不会设置太高的帧率,因为帧率越高,占的网络带宽就越多
  • 分辨率:也是摄像头属性、常见的分辨率有 2K、1080P、720P、420P 等。分辨率越高图像就越清晰,占用的带宽也就越多,在直播中,分辨率的高低与网络带宽有紧密的联系
  • 宽高比:分辨率一般分为两种宽高比,即 16:9 或 4:3。4:3 的宽高比是从黑白电视而来,而 16:9 的宽高比是从显示器而来。现在一般情况下都采用 16:9 的比例
  • 麦克风:采集音频数据。它与视频一样,可以指定一秒内采样的次数,称为采样率。每个采样用几个 bit 表示,称为采样位深或采样大小
  • 轨(Track):“轨”在多媒体中表达的就是每条轨数据都是独立的,不会与其他轨相交,如 MP4 中的音频轨、视频轨,它们在 MP4 文件中是被分别存储的
  • 流(Stream):在 WebRTC 中,“流”可以分为媒体流(MediaStream)和数据流(DataStream)。其中,媒体流可以存放 0 个或多个音频轨或视频轨;数据流可以存 0 个或多个数据轨

获取音视频设备列表:MediaDevices.enumerateDevices

juejin.cn/post/719502…

媒体协商

juejin.cn/post/719685…

SDP

juejin.cn/post/719684…

信令服务搭建

juejin.cn/post/719690…

文本聊天的实现

juejin.cn/post/719692…

一对一音视频通话

juejin.cn/post/719760…

统计信息

juejin.cn/post/719693…

实时传输文件

juejin.cn/post/719693…

如何建立连接

juejin.cn/post/719685…

视频的录制

juejin.cn/post/719538…

利用浏览器实现拍照功能

juejin.cn/post/719506…

预览:只预览不推流

  1. 获取设备分辨率
  2. 设备热插拔处理
  3. 更新设备列表
  4. 音视频设备权限初始化
  5. 获取当前麦克风设备
  6. 设置要使用的麦克风
  7. 初始化麦克风音量
  8. 获取当前麦克风设备的音量
  9. 设置麦克风设备的音量
  10. 获取当前扬声器设备
  11. 设置要使用的扬声器
  12. 获取当前扬声器设备的音量
  13. //初始化 当前扬声器设备的音量
  14. //设置 当前扬声器设备的音量
  15. 获取当前摄像头设备
  16. 设置摄像头
  17. 打开本地视频
  18. 关闭本地视频

websdk视频通话相关了解

docportal.shengwang.cn/cn/video-le…

RTC web SDK

web.sdk.qcloud.com/trtc/webrtc…

互动直播:

docportal.shengwang.cn/cn/live-str…

推流和拉流的一个情况

直播:live-pusher音视频的录制

观看:live-player音视频播放

直播的视频地址需要一个转码和解码的情况来显示

暂停和播放的设置都是用腾讯云自带的方法

this.data.videoContext.stop();

this.data.videoContext.play();

网络检测方案

1、网络检测功能通过 YRTC SDK提供,依据:

    1. 腾讯TRTC里提供了网络检测SDK接口
    2. 会议中媒体服务SFU的地址只有YRTC SDK能拿到,上层拿不到媒体服务地址

2、网络检测里面提供多个维度的数据:

    1. 网络权限
    2. 网络连接情况
    3. 服务器连接情况
    4.  域名解析耗时
    5. 连接耗时在通话中会再增加一个:
    6. 媒体服务连接情况的列表

和腾讯一致。

3、网络权限 就是程序访问网络的权限,这个各个端应该都能拿到,状态有 正常/异常

4、网络连接情况 就是程序的互联网的连接情况,可以考虑访问一个公网的地址,如www.baidu.com 来完成检测,状态有 正常/异常

5、服务器连接情况 可以是连接信令接入网关,参考腾讯是专门增加了一个HTTP API来测试用的,信令网关可以增加一个专门用来测试的接口如 live.testgw.100tt.com.cn/100rtc-test,和信令服务的接口区分开live.testgw.100tt.com.cn/signal-server,只简单完成一条测试消息的收发,状态有 正常/异常

6、域名解析耗时 可以计算信令接入网关的域名解析时间,如live.testgw.100tt.com.cn

7、连接耗时 可以计算和信令网关TCP建立完成的耗时时间,参考腾讯就是大概计算了调用测试API建立TCP连接的耗时

测试方法:抓包测试TCP握手时间

8、媒体服务连接耗时 可以ping一下拿到的所有SFU的地址,把返回的时间都列出来

测试方法:

9、总体评价有四档:

    1. 网络断开 前三项任一项出现 异常
    2. 网络良好 前三项均正常,连接耗时<100ms
    3. 网络较差 前三项均正常,100ms≤连接耗时<300ms
    4. 网络极差 前三项均正常,连接耗时≥300ms