疫情之下在线教育音视频技术的实践与挑战
如果无法正常显示,请先停止浏览器的去广告插件。
1. 疫情之下在线教育音视频
技术的实践与挑战
陈俊文 Javen
腾讯高级前端工程师
2.
3. 陈俊文
腾讯前端高级工程师,IMWeb 团队成员。
负责腾讯课堂、企鹅辅导Web前端音视频开发
以及在线教育Web音视频技术的整体架构。
对前端WebRTC和音视频等技术,有较丰富的
实践经验。
4. • 在线课堂直播低延迟大并发的技术选型
• Web 播放器与学生视频连⻨
• 在线课堂质量监控定位
• Web音视频未来探索方向
5. 1、在线课堂直播低延迟大并发的技术选型
1.1 在线教育的业务场景介绍
1.2 传统直播到互动 WebRTC 直播
1.3 结合 WebRTC-CDN 的大并发低延迟直播方案
6. 在线教育的业务场景介绍
远程会议
直播带货
在线教育
7. 在线教育的业务场景介绍
摄像头
Video
⻨克⻛
Audio
低延时
PPT/桌面分享
Video
多路流
摄像头
Video
⻨克⻛
Audio
可互动
老师
低延迟<300ms
学生
高并发
8. Web浏览器音视频应用有哪些技术方案?
1、 基于浏览器插件的flash播放RTMP
2、跨平台的HLS/DASH 播放方案
3、基于HTML5 MSE 能力的flv播放技术
4、WebRTC实时通讯技术
9. 跨平台的HLS/DASH 播放方案
10. 跨基于HTML5 Video和Audio的MSE方案
flv.js http-flv
11. 基于WebRTC的低延时通讯方案
硬件音视频采集
音视频处理引擎
低延时P2P传输
安全协议
12. 传统直播到互动 WebRTC 直播
插件化
基于flash 插件
RTMP 和 FLV
× 即将淘汰
跨平台HLS \ DASH方案
apple/X5原生
MSE支持
基于HTML5 MSE
flv方案
MSE支持
移动端
×
基于wasm+ffmpeg
+WebGL方案
Wasm支持
性能瓶颈
WebRTC方案
较 高版本浏览器
复杂度
TCP/ http短连接 TCP/ http⻓连接 TCP/ http UDP/ RTP RTCP传输
延迟10-30秒 延迟几秒 延迟几秒 延迟百毫秒内
支持性好:
PC浏览器直播
几乎所有浏览器
自适应码流
格式简单轻量
连续流较低延时
※传统直播
特殊解码场景 低延迟直播
如H265 视频会议
※RTC实时音视频
13. 传统直播到互动 WebRTC 直播
插件化
跨平台HLS \ DASH方案
基于HTML5 MSE
flv方案
基于wasm+ffmpeg
+WebGL方案
WebRTC方案
基于flash 插件
RTMP 和 FLV
在线教育
× 即将淘汰
赛事直播
大型会议直播
远程会议
※传统直播
※RTC实时音视频
14. 传统直播到互动 WebRTC 直播
老师
学生
音视频服务
互动直播
低延时
Win
腾讯云 TRTC
可互动、上下行
房间系统
CDN直播
Mac
Web
IOS
标准稳定的
腾讯云 云直播
直播接入与CDN分发
win/mac
H5
Android
小程序
15. TRTC实时音视频服务
老师上行
接口机
RT
CP
旁路推流
ee
摄像头video
云直播
rC
on
ne
ct
io
n
FLV/ HLS/ RTMP
⻨克⻛audio
CDN
① 混流引入延时
分享屏幕video
WebRTC
基于UDP传输,低延时
WebRTC server
②CDN的TCP传输、GOP
播放buffer、HLS切片
16. 如何兼得?
WebRTC
FLV
HLS
HLS
低延迟 高并发
价格高、容量有限、可互动上行 价格低、延迟较高,不可上行
17. 腾讯云TRTC
老师上行
接口机
CDN下行如果
使用WebRTC?
R T
CP
旁路推流
ee
摄像头video
腾讯云 云直播
⻨克⻛audio
WebRTC
基于UDP传输,低延时
webrtc server
rC
on
ne
WebRTC -CDN
快直播 延迟<1s
n
FLV/ WebRTC
HLS/ RTMP
CDN
WebRTC
webrtc server
分享屏幕video
ct
io
18. 结合 WebRTC-CDN 的大并发低延迟直播方案
TRTC
hls
云直播CDN
房间管理
信令服务
流控调度
老师
flv
src
媒体服务
signal
media
SRTP
SRTCP
rtmp
webrtc
OC
WebRTC
Client
signal
<-http请求 offer
http请求 answer->
WebRTC
Client
DTLS
DTLS
oc
老师
….
websocket建连
用户进房
远端流通知
订阅/发布
offer/answer协商
成员列表
信令心跳.....
mid
media
SRTP
SRTCP
19. 结合 WebRTC-CDN 的大并发低延迟直播方案
TRTC
hls
云直播CDN
房间管理
信令服务
流控调度
老师
flv
src
媒体服务
oc
webrtc
RTC 直播
websocket建连
用户进房
远端流通知
订阅/发布
应用id:1234 offer/answer协商
用户id: user01 房间id:
成员列表
心跳信令.....
可以上下行,连⻨活动
OC
房间内的用户/⻆色
WebRTC-CDN
<-http请求 offer
面向“直播流”
1001
WebRTC
Client
http请求 answer->
signal
webrtc://ke.qq.com/live/{streamId_xxx}
WebRTC
纯直播观看
Client
DTLS
DTLS
media
功能强大,复杂的信令
SRTP
SRTCP
rtmp
老师
….
signal
mid
考虑单房间上限、成本相对高
SRTP
media 轻量的信令协议和流程
SRTCP
业务方不考虑并发上限、成本相对低
20. 结合 WebRTC-CDN 的大并发低延迟直播方案
超容量及
兼容异常降级
百万
同时在线
WebRTC-CDN
快直播
优先用于
连⻨上行
承载大量
主要低延迟直播
CDN直播
RTC
互动直播
百万级PCU的web直播策略:按并发和场景去切不同直播类型
21. 结合 WebRTC-CDN 的大并发低延迟直播方案
海量瞬间新进入直播的学生
心跳上报
WebRTC快直播 WebRTC快直播 WebRTC快直播
WebRTC互动
业务流量控制
1、通过心跳上报,统计不同类型直播
的平台的实时并发流量。
2、 根据在线并发量,响应新进房学生应该
切到哪种直播方式。
WebRTC互动
CDN直播
CDN直播
WebRTC互动
CDN直播
业务实现流信令通知
1、非静态直播, 有流的切换操作。
2、由业务实现流更新后多端信令通知。
TRTC
老师端
学生端
业务后台
22. 2、Web播放器与学生视频连⻨
2.1 构建Web音视频应用的整体架构
2.2 支持多模式的Web播放器设计思路
2.3 Web视频连⻨的落地
23. 构建Web音视频应用的整体架构
业务层
UI交互应用
业务消息通道
视频交互应用
播放插件
统一上报 信令白板 多人视频连⻨
滤镜插件 网络检测 多路视频管理
播放器
中心
播放器核心
Web API
插件系统
24. 构建Web音视频应用的整体架构
业务层
上层应用
定制化
UI交互应用
业务消息通道
视频交互应用
功能测试
播放插件
统一上报
滤镜插件
信令白板
网络检测
多人视频连⻨
多路视频管理
集成测试
播放器
事件中心
播放器核心
底层接口
通用兼容
Web API
插件系统
单元测试
25. 支持多模式的Web播放器设计思路
为什么要自己做播放器?
flv.js video.js meidaelement.js hls.js
单路视频 => 多路视频 怎么联动控制?
大而全的能力 & 拓展定制化 怎么权衡?
如何多种播放模式,降级切换….
26. 支持多模式的Web播放器设计思路
单一视频
老师PPT + 摄像头 视频
多人视频互动
27. 支持多模式的Web播放器设计思路
连⻨
主播
观众
连⻨
观众
观众
观众
观众
观众
观众
主播
观众
传统直播: RTC直播场景:
观众观看的直播结构,⻆色固定 所有人在音视频房间内是平等的,身份非固定
28. 支持多模式的Web播放器设计思路
ARMPlayer
统一抹平的API/ 事件 / 属性 +组件工具函数(插件使用)
Plugins Manager 插件管理
架构设计
插件机制 & 播放引擎扩展
Events Manager 事件中心
PlayerCore 播放核心
控件组件
媒体组件
H5Video
视频组件
<video/>
H5Audio
音频组件
<audio/>
volume音量 fullscreen
button按钮 loading
…….
Component基类
Web API统一兼容封装
29. 支持多模式的Web播放器设计思路
架构设计
多人连⻨插件 信令化白板插件 滤镜插件
多实例调度 播放降级 流量控制
网络监测 监控上报 性能检测
arm-webrtc arm-hls arm-flv
插件机制 & 播放引擎扩展
ARMPlayer
统一抹平的API/ 事件 / 属性 +组件工具函数(插件使用)
Plugins Manager 插件管理
Events Manager 事件中心
PlayerCore 播放核心
30. Web视频连⻨的落地
业务层
UI交互应用
业务消息通道
视频交互应用
播放插件
监控上报 信令白板 多人视频连⻨
滤镜插件 网络检测 多路视频管理
视频连⻨应用
播放器
事件中心
播放器核心
插件系统
以播放器为基础
Web API
上行
WebRTC
下
WebRTC
31. Web视频连⻨的落地
1. 网络质量检测
通话前通过预上行发起检测,保证上课网络。
轮询检测下行质量状态,网络差时,给予用户提示。
WebRTC API:丢包率 [packetsLost]、RTT [currentRoundTripTime]
2. 码率调整
非主播上行用户,适当选用低分辨率。 [applyConstraints]
网络检测差时,sender.setParameters调整maxBitrate。
32. Web视频连⻨的落地
检测未找到⻨克⻛
3. 设备测试与监听
测试能否获取设备,根据捕获错误提示。[geusermedia Error]
判断是否当前正在使用的设备被拔出、若插入了新的可用的
媒体设备,尝试自动恢复采集并推流。[devicechange]
4. 音量获取与静音策略
WebAudio动态计算获取音量大小,渲染展示每个用户音量
[audioContext]
本地流静音 removeTrack 和 muteAudio信令通知。
远端流静音,先立即mute本地mediaElement,然后异步延时取
消订阅。
33. 3、在线课堂质量监控定位
3.1 Web前端直播质量评估
3.2 上课业务结合音视频一站式监控定位
34. 在线课堂的质量从哪些方面衡量?
业务交互相关
消息通道连接-成功率
音视频相关
进房成功率/开播成功率
消息通道消息-到达率 直播首帧耗时、进度seek耗时
发题到达率、学生答题率
。。。。 卡顿率、帧率、码率、丢包率
。。。。
35. 痛点:用户老师/学生反馈 top 问题
归因分类
网络问题 设备问题
操作问题 课件问题
软件问题 无效问题
36. 集体反馈 / 个例反馈
分析发送端
分析接收端
37. 端上采集监控的指标体系
播放前
请求鉴权成功率 下行音频码率
请求流地址成功率 下行视频码率
请求鉴权成耗时 下行音频(xxx ms)卡顿率
请求流地址耗时 下行音频(xxx ms)卡顿率
流地址状态请求成功率
播放开始
下行视频丢帧率
请求状态码 上行音频码率达标率
进房耗时 上行视频码率达标率
进房成功率 上行视频帧率达标率
协商失败率 网络丢包率
ICE连接耗时 网络延时(<=xxxms)达标率
ICE失败率
播放过程
播放过程
网络与设备
应用内存
首帧平均耗时-开始进房间 系统CPU
首帧平均耗时-切换房间 应用 CPU
开播成功率 播放时⻓/视频总时⻓占比
首次(预)缓冲时间
首次(预)缓冲⻓度
二次缓冲等待时间
视频播放
数据
上课视频完播率
播放平均/最低帧率
播放平均/最低码率
38. 1.开播成功率
鉴权失败
Sig接口耗时
2. 首帧耗时
ws断开与重连
sdp协商失败
进房耗时
ws连接耗时
协商耗时
ice fail
ICE收集及连接耗时
dk解密失败
媒体帧数据到达耗时
渲染
播放
直播首开各阶段耗时
文件接口耗时
masterList耗时
levelList耗时
密钥请求
分片ts加载耗时
点播首开各阶段耗时
3. 卡顿率
解码失败
卡顿时⻓1
……
卡顿时⻓n
卡顿率=卡顿时⻓/播放时⻓
①bufferstall计时 ②interframeDealy(帧间延迟)耗时> x 00ms计时
解密
解码播放
渲染
播放
39. 基于端上的能力如何采集与监控?
CDN直播:Http-flv 和 HLS
1.
2.
3.
4.
首帧耗时(开始拉流→首帧加载)
下载速度 / 码率
buffer剩余
帧 getVideoPlaybackQuality
40. 基于端上的能力如何采集与监控?
WebRTC直播
1. 基于事件
首帧耗时(进房/创建RTCPeerConnection →首帧加载)
RTCPeerconnection 断开/重连,信令Websocket 断开/重连
2. getStats API
framesDecoded 、 totalInterFrameDelay 监控计算帧率及卡顿率
bytesReceived 、 bytesSent 用于计算码率
currentRoundTripTime 动态RTT时⻓
packetsLost 、packetsReceived 监控丢包情况
41. 基于端上的能力如何去监控?
日志上报
质量数据获取
监控上报
统计上报
用户日志排查
监控告警
(大盘/房间)
每日质量指标邮件
42. 上课业务结合音视频一站式监控定位
是否已经足够好用了呢?
场景1: 来自多方的日志系统(业务前端及后台,SDK与云侧监控), 需要开发同学往返排查,不好用。
场景2: 想输入(课程id 、用户id…)直接看到上课时间线发了什么,及问题时间点和版本设备情况等。
场景3: 除音视频外,结合业务(聊天内容、互动答题率等)主动感知,得出分析结论,生成一节课的质量报告。
场景4: 除了开发,客服/运营/产品也能使用。
43. 上课业务结合音视频一站式监控定位
课程业务信息
设备版本 IP地域
1. 底层数据来源跨多系统查询,一键输入信息定位。
2. 业务流与音视频上的事件/指标,时间线归因分析。
3. 面向业务+音视频链路节点串联,全链路可视化。
音视频、网络质量
4. 主动感知与关联告警,直接生成课程质量报告。
异常时间点
聊天互动异常反馈
44. 上课业务结合音视频一站式监控定位
1. 底层数据来源跨多系统查询,一键输入信息定位。
2. 业务流与音视频上的事件/指标,时间线归因分析。
3. 面向业务+音视频链路节点串联,全链路可视化。
4. 主动感知与关联告警,直接生成课程质量报告。
45. 4、Web音视频未来的探索方向
4.1 最新浏览器 RTC 能力的关注展望
4.2 WebCodec 和 WebTransport 探索
46. 最新浏览器 RTC 能力的关注展望
WebRTC & AV1 codec
chrome 90 beta 对AV1支持
47. 最新浏览器 RTC 能力的关注展望
WebRTC Encoded Transform
帧级别的信息同步
提供了让用户操作WebRTC编码后/解码前数据的能力
使用场景
上课白板信令同步
计算端到端的延迟 端上统计全链路的延迟
自定义的输入和渲染 视频美颜滤镜
48. WebTransport 和 WebCodec 探索
低延迟web端直播
基于HTTP3实现的API,提供支持不可靠UDP传输
Web端上视频制作
远程桌面控制
定制化RTC的能力
提供浏览器的encode/decode能力
49. 总结:
1、介绍在线教育场景中及Web直播方案如何选型。
2、WebRTC-CDN 方案 与其他方案融合,应对大流量在线互动直播。
3、构建以播放器为基础的音视频应用架构,落地Web视频连⻨的细节。
4、前端如何检测播放质量,搭建一站式定位工具和监控体系的思路。
5、浏览器WebRTC未来的能力及有哪些应用可以探索。
不久将来,我们将习惯于分享链接,在网⻚中去学习、开会、游戏….
50.
51. 扫码关注IMWeb微信公众号
工作机会
与我交流
52. 疫情之下在线教育音视频技术的实践与挑战
扫描二维码 提交议题反馈