WebRTC
WebRTC,网页即时通信(Web Real-Time Communication),实现了基于网页的视频会议。
音视频采集基本概念:getUserMedia
- 摄像头:
- 帧率:一般一秒钟可采集 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
媒体协商
SDP
信令服务搭建
文本聊天的实现
一对一音视频通话
统计信息
实时传输文件
如何建立连接
视频的录制
利用浏览器实现拍照功能
预览:只预览不推流
- 获取设备分辨率
- 设备热插拔处理
- 更新设备列表
- 音视频设备权限初始化
- 获取当前麦克风设备
- 设置要使用的麦克风
- 初始化麦克风音量
- 获取当前麦克风设备的音量
- 设置麦克风设备的音量
- 获取当前扬声器设备
- 设置要使用的扬声器
- 获取当前扬声器设备的音量
- //初始化 当前扬声器设备的音量
- //设置 当前扬声器设备的音量
- 获取当前摄像头设备
- 设置摄像头
- 打开本地视频
- 关闭本地视频
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提供,依据:
-
- 腾讯TRTC里提供了网络检测SDK接口
- 会议中媒体服务SFU的地址只有YRTC SDK能拿到,上层拿不到媒体服务地址
2、网络检测里面提供多个维度的数据:
-
- 网络权限
- 网络连接情况
- 服务器连接情况
- 域名解析耗时
- 连接耗时在通话中会再增加一个:
- 媒体服务连接情况的列表
和腾讯一致。
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、总体评价有四档:
-
- 网络断开 前三项任一项出现 异常
- 网络良好 前三项均正常,连接耗时<100ms
- 网络较差 前三项均正常,100ms≤连接耗时<300ms
- 网络极差 前三项均正常,连接耗时≥300ms