序言
最近几年远程办公开始涌现之际,越来越多的应用在云端进行支持,从性能表现和画质表现来看,基于WebRTC开源框架的流式系统开始主流,用户数,开发人员,产品数量大幅上升。本文基于这种业界现状,向大家阐述各个方面的技术细节和内容,希望能给到大家一些产品研发过程中的心得和技术要点。
本文作者
董锋
作者简介
董锋,伊鲁生科技有限公司联合创始人
投身于软件研发行业20多年,主攻三维引擎,云渲染/流式系统设计开发,游戏研发。曾任动视暴雪技术总监,Unigine引擎技术总监,Garena游戏团队Leader。参与过雷霆突击(上亿收入),使命召唤(COD全球第一FPS游戏),Unigine引擎(强大的三维仿真引擎),云流式系统(WebRTC)等产品的设计研发,拥有多个产品的专利。
对软件研发有独特的见解和执着。在开源领域参与青仓流式远程桌面软件,XDataverse, XInsight等项目。
火晓青
作者简介
火晓青, 伊鲁生科技有限公司联合创始人
软件研发从业20多年,曾任职于恺英,游族,菲动多家上市公司,头部金融科技公司,历任架构师、平台研发负责人和技术总监。持续关注互联网技术、数据挖掘,及移动互联网技术实践。先后负责社交网络,微博,移动网络,社会化搜索等项目积累实战经验,从事大数据架构和应用,分布式框架,实时系统,数据统计分析,热衷于挖掘数据价值并将数据价值转化为企业价值。主导并参与青仓流式远程桌面软件等。
总览
什么是流式系统
流式这种叫法应该是从英文的说法上翻译过来的。英文原来的单词是Streaming . 一般有Video Streaming , Audio Streaming , 中文就是视频流,音频流,我们一般也称为流媒体。
当然实质上也被称为云系统,比如采用WebRTC同等架构的Google的云游戏平台Stadia,还有腾讯的云游戏平台,其实都是基于WebRTC或者同等架构或作用的产品,同时由于运行在公有云上,因此被称为云系统,流式系统,或者串流系统等各种叫法。
总体来看,流式系统可以开发成远程音视频平台,远程控制软件,云渲染服务等。
流式系统可以有很多技术实现方式,它的主要核心是使用视频流,将内容在服务器端以视频流的方式传递到前端,前端解码视频流进行内容显示和操作的一种系统。由于在这个领域WebRTC是使用最为广泛的一种开源框架,因此本文就详细介绍以WebRTC为主的流式系统的详细产品内容和技术实现细节。
效果图:
主要特性:
- 跨平台支持,支持Windows,Mac,Linux (Debian), Android, iPhone (Cross-platform supported)
- 无插件安装及运行 (web browser only, no plug installed)
- 多浏览器支持,支持Google Chrome , Firefox , Apple safari 等主流浏览器 (Multiple web browser supported)
- 一键部署配置。满足C/S应用快速部署到B/S模式 (One click deployment)
- 配置方式丰富,支持私有、公有云。可局域网,广域网部署。(Private /Public cloud system supported)
- 传送的数据经过协议加密,且支持端到端加密方式。 (Secure protocol and data layer supported)
- 支持将重度的三维应用,数字孪生等应用快速移植到Web平台 (Fast heavy native 3D application migration)
- 内置VP8,VP9,H264等编码方式,且支持GPU CUDA硬件加速 (Hardware acceleration)
- 支持额外自定义的数据通道用于传输数据 (Customized data channel transfer)
- 支持1对1 , 1对多,多对多客户端服务器方案 ( 1 to 1, 1 to multiple, multiple to multiple solution supported)
- 提供了额外参数和REST API等进行二次开发支持 (REST API interface)
- 支持VDI方案 (VDI support)
- 支持多屏幕方案 (Multiple screens )
学习能力要求
我们的课程前端主要使用Nodejs,Javascript ,后端主要使用C++ ,产品可能部分使用到QT框架。
常用开发工具是Visual Studio 2019 .
开发平台是Window , Linux 都有。
流式系统课程列表
我们可能没有办法在一系列课程中完全介绍如何做一款商业化的产品,但是我们尝试通过我们完全自研的流式产品的经验中,吸取最重要的内容,展示相关核心的技术点,让读者在前端,后端,通讯端,等方面学习到相关的专业技术点,从而掌握相关的技术研发能力。以下,我们罗列下后续的章节。
基础课程系列
- 基础框架介绍
- 整体架构
- 时序图
- 码率,分辨率,帧率
- 编码器/解码器
- ICE
- DataChannel数据通道
- SDP协议
- RTP/RTCP协议
- SRTP协议
- 各种协议
前端内容
- 浏览器中流式标准的演化史
- 会话流程和信令通讯
- Web端常用的API
- 音频和视频媒体的支持
- Web前端中鼠标键盘等事件处理
- 实现多通道音视频数据流支持
- 数据通道实时数据传输
- 如何高效和业务系统交互
- 前端引擎库比较
- 实战青龙流式系统问题总结
后端内容
- 编译WebRTC框架
- 如何开始
- 建立P2P 连接
- 心跳机制
- 消息数据传递机制
- 视频轨道和视频捕捉器
- 视频推流细节
- 各种编码器介绍和比较
- 硬件编码/编码
- 自定义编码器
- 视频内容检测和分析手段
- 实际使用数据通道
- 后端的鼠标键盘等事件实现
信令服务器和中转服务器
- 信令服务器基础知识
- STUN/TURN基础知识
- 开源方案和部署
跨平台情况
- CentOS下的情况
- Ubuntu或Debian下的情况
- Linux下编译的一些注意事项
- 生成QTCreator项目进行编译
高级内容
- 发送方码率预估揭秘
- 码率控制
- RTSP媒体流的录制方案
- 带宽估计和拥塞控制算法
- P2P打洞原理
- ICE高级交互流程介绍
- 视频帧概念
- 智能指针
- 添加滤镜能力
- 视频编码后修改帧数据
- iOS15.4版本以上丢帧情况
- 从源代码的角度分析视频采集架构和流程
流式系统质量评价体系和标准
- 流式系统质量评价体系和一些标准建议
- 流式系统质量评价标准细节
流式系统商业化应用
- 云游戏方向
- 数据通道的7种创意用途
- VID领域的应用
RA/SD 衍生者AI训练营。发布者:chris,转载请注明出处:https://www.shxcj.com/archives/6452