疫情之下在线教育音视频技术的实践与挑战

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
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. 疫情之下在线教育音视频技术的实践与挑战 扫描二维码 提交议题反馈

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-17 01:51
浙ICP备14020137号-1 $Map of visitor$