基于WebRTC的流式系统揭秘

序言

最近几年远程办公开始涌现之际,越来越多的应用在云端进行支持,从性能表现和画质表现来看,基于WebRTC开源框架的流式系统开始主流,用户数,开发人员,产品数量大幅上升。本文基于这种业界现状,向大家阐述各个方面的技术细节和内容,希望能给到大家一些产品研发过程中的心得和技术要点。

本文作者

董锋

作者简介

火晓青

作者简介

火晓青, 伊鲁生科技有限公司联合创始人

软件研发从业20多年,曾任职于恺英,游族,菲动多家上市公司,头部金融科技公司,历任架构师、平台研发负责人和技术总监。持续关注互联网技术、数据挖掘,及移动互联网技术实践。先后负责社交网络,微博,移动网络,社会化搜索等项目积累实战经验,从事大数据架构和应用,分布式框架,实时系统,数据统计分析,热衷于挖掘数据价值并将数据价值转化为企业价值。主导并参与青仓流式远程桌面软件等。

总览

什么是流式系统

流式这种叫法应该是从英文的说法上翻译过来的。英文原来的单词是Streaming . 一般有Video Streaming , Audio Streaming , 中文就是视频流,音频流,我们一般也称为流媒体。

当然实质上也被称为云系统,比如采用WebRTC同等架构的Google的云游戏平台Stadia,还有腾讯的云游戏平台,其实都是基于WebRTC或者同等架构或作用的产品,同时由于运行在公有云上,因此被称为云系统,流式系统,或者串流系统等各种叫法。

总体来看,流式系统可以开发成远程音视频平台,远程控制软件,云渲染服务等。

流式系统可以有很多技术实现方式,它的主要核心是使用视频流,将内容在服务器端以视频流的方式传递到前端,前端解码视频流进行内容显示和操作的一种系统。由于在这个领域WebRTC是使用最为广泛的一种开源框架,因此本文就详细介绍以WebRTC为主的流式系统的详细产品内容和技术实现细节。

效果图:

主要特性:

  1. 跨平台支持,支持Windows,Mac,Linux (Debian), Android, iPhone (Cross-platform supported)
  2. 无插件安装及运行 (web browser only, no plug installed)
  3. 多浏览器支持,支持Google Chrome , Firefox , Apple safari 等主流浏览器 (Multiple web browser supported)
  4. 一键部署配置。满足C/S应用快速部署到B/S模式 (One click deployment)
  5. 配置方式丰富,支持私有、公有云。可局域网,广域网部署。(Private /Public cloud system supported)
  6. 传送的数据经过协议加密,且支持端到端加密方式。 (Secure protocol and data layer supported)
  7. 支持将重度的三维应用,数字孪生等应用快速移植到Web平台 (Fast heavy native 3D application migration)
  8. 内置VP8,VP9,H264等编码方式,且支持GPU CUDA硬件加速 (Hardware acceleration)
  9. 支持额外自定义的数据通道用于传输数据 (Customized data channel transfer)
  10. 支持1对1 , 1对多,多对多客户端服务器方案 ( 1 to 1, 1 to multiple, multiple to multiple solution supported)
  11. 提供了额外参数和REST API等进行二次开发支持 (REST API interface)
  12. 支持VDI方案 (VDI support)
  13. 支持多屏幕方案 (Multiple screens )

学习能力要求

我们的课程前端主要使用Nodejs,Javascript ,后端主要使用C++ ,产品可能部分使用到QT框架。

常用开发工具是Visual Studio 2019 .

开发平台是Window , Linux 都有。

流式系统课程列表

我们可能没有办法在一系列课程中完全介绍如何做一款商业化的产品,但是我们尝试通过我们完全自研的流式产品的经验中,吸取最重要的内容,展示相关核心的技术点,让读者在前端,后端,通讯端,等方面学习到相关的专业技术点,从而掌握相关的技术研发能力。以下,我们罗列下后续的章节。

基础课程系列

  1. 基础框架介绍
  2. 整体架构
  3. 时序图
  4. 码率,分辨率,帧率
  5. 编码器/解码器
  6. ICE
  7. DataChannel数据通道
  8. SDP协议
  9. RTP/RTCP协议
  10. SRTP协议
  11. 各种协议

前端内容

  1. 浏览器中流式标准的演化史
  2. 会话流程和信令通讯
  3. Web端常用的API
  4. 音频和视频媒体的支持
  5. Web前端中鼠标键盘等事件处理
  6. 实现多通道音视频数据流支持
  7. 数据通道实时数据传输
  8. 如何高效和业务系统交互
  9. 前端引擎库比较
  10. 实战青龙流式系统问题总结

后端内容

  1. 编译WebRTC框架
  2. 如何开始
  3. 建立P2P 连接
  4. 心跳机制
  5. 消息数据传递机制
  6. 视频轨道和视频捕捉器
  7. 视频推流细节
  8. 各种编码器介绍和比较
  9. 硬件编码/编码
  10. 自定义编码器
  11. 视频内容检测和分析手段
  12. 实际使用数据通道
  13. 后端的鼠标键盘等事件实现

信令服务器和中转服务器

  1. 信令服务器基础知识
  2. STUN/TURN基础知识
  3. 开源方案和部署

跨平台情况

  1. CentOS下的情况
  2. Ubuntu或Debian下的情况
  3. Linux下编译的一些注意事项
  4. 生成QTCreator项目进行编译

高级内容

  1. 发送方码率预估揭秘
  2. 码率控制
  3. RTSP媒体流的录制方案
  4. 带宽估计和拥塞控制算法
  5. P2P打洞原理
  6. ICE高级交互流程介绍
  7. 视频帧概念
  8. 智能指针
  9. 添加滤镜能力
  10. 视频编码后修改帧数据
  11. iOS15.4版本以上丢帧情况
  12. 从源代码的角度分析视频采集架构和流程

流式系统质量评价体系和标准

  1. 流式系统质量评价体系和一些标准建议
  2. 流式系统质量评价标准细节

流式系统商业化应用

  1. 云游戏方向
  2. 数据通道的7种创意用途
  3. VID领域的应用

基于WebRTC的多人视频会议系统是一种通过Web浏览器实现的即时通讯系统。该系统允许多个用户通过互联网同时进行视频会议和实时交流,无需安装额外的软件或插件。 WebRTC基于一组实时通信协议,包括音视频传输、网络连接和通信控制等。通过利用WebRTC技术,系统可以实现低延迟的音视频传输和高质量的音视频通信,为用户提供更加沉浸式和真实的会议体验。 在多人视频会议系统中,用户可以通过浏览器访问系统网站,并通过输入会议号或邀请链接加入到会议中。系统会自动检测用户设备的音视频设备并进行配置,以确保用户在会议中能够正常进行音视频通信。 在会议中,用户可以选择开启或关闭自己的摄像头和麦克风,实现视频和音频的双向交流。系统会将用户的视频流实时传输给其他与会者,并显示其他与会者的视频流。此外,系统也提供文本聊天功能,方便用户进行实时的文字交流。 多人视频会议系统还允许用户共享屏幕,以便在会议中展示自己的电脑桌面、文档或应用程序。此外,系统还支持会议录制和回放功能,方便用户进行会议内容的保存和回顾。 基于WebRTC的多人视频会议系统提供了一个高效便捷的方式,让用户能够方便地进行远程会议和协作。无论是商业会议、在线培训还是团队协作,该系统都能满足用户的实时通信需求,并提供良好的用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拉达曼迪斯II

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值