Webrtc音视频会议之Webrtc“不求甚解”

2023-10-19 10:30

本文主要是介绍Webrtc音视频会议之Webrtc“不求甚解”,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Webrtc音视频会议之Webrtc“不求甚解”

这里只是对Webrtc的“不求甚解”情况下的“高屋建瓴”,想要“细致入微“”那得好好的研究RFC一堆协议和Webrtc源码;Webrtc涉及的协议之多和内容之丰富我只能叹一声到此处休矣!!!!
来先一睹为快,以下是我梳理的Webrtc开发的时候涉及的协议,其中虚线的是可选的上层协议,实线实必须的;何其浩瀚
在这里插入图片描述
再此处我列出来Webrtc中我感兴趣的当做记录,留作以后没事翻出来看看

协议用途规范
ICE交互式链接建立,利用打洞穿越RFC5245
SDP回话描述协议RFC4566
STUNNAT会话穿透实用工具RFC5389
TURN使用中继型NAT穿透,是STUN的扩展RFC5766
RTP实时传输协议,用户媒体和媒体控制数据包传输RFC3550

对一个技术的深度把我是阅读源码;前人的肩膀还是值得站一站的;但是阅读一个项目源码的前提是了解源码中包含的思想,同时设计一个方案的前提是得对方案中涉及的技术原理得有一定的了解;学习Janus源码和思考音视频会议的解决方案的前提是熟悉Webrtc,毕竟后续所有的一切都是基于Webrtc;因此首先需要对Webrtc最起码有一个“不求甚解”的理解和认知;

简说Webrtc

Webrtc是英文Web Real-Time Communication的缩写;Webrtc是Google公司搞的一个浏览器无插件化情况下进行实时音视频会议的规范或者叫协议,我更喜欢称之为一揽子解决方案,后面我会说为什么我要这样称呼它;Webrtc中包含媒体的采集,媒体的传输,媒体的安全,媒体的编解码等等这些技术,使媒体能更简单的采集和传输并且在网络环境不好的情况下抗抖动等等;同时Chrome/Firefox等主流浏览器都对Webrtc规范进行了实现,这样这些浏览器只需要使用JS语言就能实现音视频媒体的传输(麦克风采集,摄像头采集,屏幕分享)而无需关心媒体的编解码网络抗抖动;Google针对Webrtc并放出了一套标准源码,这套源码由C/C++编写称为 WebRTC Native C++ API,因此针对各平台原生Webrtc开发就可以通过这套 WebRTC Native C++ API进行开发;我们可以针对不同的平台交叉编译后进行原生媒体开发接入音视频会议;Webrtc说起来也算是新瓶装老酒,他包含的很多协议和算法都是现有的而不是Webrtc所独有,我称为一揽子解决方案就是Webrtc把很多现有且成熟的协议和技术拿过来进行组合和包装形成一套行之有效的音视频的解决方案;

Webrtc包含的内容

从媒体生命周期来说分为:媒体采集,媒体传输,媒体显示
音视频会议或者直播这些都可以归纳出这三个周期
那我们针对媒体的这三个生命周期进一步去看Webrtc中如何处理的,并且看看Webrtc为我们做了什么从而了解到有了Webrtc进行音视频开发后我们省去了多少工作

媒体采集

在音视频会议中我们关注的媒体就是,音频和视频,而音频和视频的来源就是麦克风,摄像头,屏幕分享(录屏);webrtc中音视频和屏幕分享流的采集和编码都已经为我们做了,视频采集支持I420、YUY2、RGB、UYUY,其中编解码支持VP8(默认的),VP9,H264等主流的编解码格式;并且视频方面加入了JitterBuffer缓冲器可以降低由于视频抖动和视频信息包丢失带来的体验;音频支持Pcm和Wav;并且音频方面针对音频数据进行处理,包括回声消除(AEC)、AECM(AEC Mobile)、自动增益(AGC)、降噪(NS)、静音检测(VAD)处理等功能,用来提升声音质量;

媒体传输(我关注的重点)

媒体传输这里涉及很多的协议和规范,其中就包括ICE(Stun/Turn,SDP),RTP(RTP/RTCP);后续我们要研究的Janus的源码就是针对这块来实现的Webrtc流转发;所以这块的原理的了解是重点

  1. ICE[Interactive Connectivity Establishment]
    交互式互联建立,说白了了就是通过这个协议实现对等的UDP连接不管对等客户端是在NAT前还是NAT后,其中包含两个重要的协议Stun和Turn;就不细说每个单独拿出来都是一本书;记住一定ICE就是为了让两个设备打洞穿越而进行对等UDP连接,它是一个协议集合,
    SDP[Session Description Protocol] 会话描述协议也是ICE的一部分;SDP 是在Offer/Answer模型下进行会话描述交换的的协议格式也是ICE的一部分;它是多行的文本形式用来交交换协商双方的协商地址和媒体编解码格式等等信息,可以通过a进行属性扩展;通过ICE两个设备之间就开辟一个对等的UDP通道,这样就可以传输媒体了;这其中SDP的交互就需要额外开辟信令通道了,信令不是Webrtc的一部分,所以信令传输的方式由我们自己来定,如果想很好的浏览器支持我们传输信令的方式就避免不了http restfull或者websocket了;这两种方式都是Janus通道插件中的方式;当然还可以用一些类似XMPP这些更高层的IM协议去交换SDP
  2. UDP通道打通后,就开始传输媒体,但是媒体在传输的过程中控制丢包顺序等等,这个时候就靠RTP了,RTP分为RTP和RTCP,所有一般是两个UDP端口,RTP用来传输媒体,RTCP用来媒体控制命令的传输,RTP协议也不详细说明了,我的了解也是粗浅的,能让我写出RTP网关代理程序就行了;哈哈……
    到这里上一个我绘制的最简单的Webrtc连接过程时序:
    在这里插入图片描述
    这里不对这个时序详细说明;后续的学习记录中做详细的说明

媒体显示

这块Webrtc在其中承担的责任是编解码和弱网环境下的媒体缓存等等,因为我在服务器方案中所以不是太关心这块

后记

总结下我关注的重点类容:

  1. ICE是用来建立对等UDP通道的,不管Peer是在什么网络环境下面
  2. 信令是用来交换ICE过程中的SDP信息的,一般有websocket或者Http Restful API
  3. RTP(RTP/RTCP)是用来传媒体数据和控制数据
    下一篇文博客重点记录下Webrtc中ICE打通的过程,因为这是ICE的使用是Janus-gateway的核心原理

再次说明这里只是对Webrtc的“不求甚解”情况下的“高屋建瓴”,想要“细致入微“”那得好好的研究RFC协议和Webrtc源码;Webrtc涉及的协议之多和内容之丰富我只能叹一声到此处休矣!!!!
所以各位看官别过多的苛求啊;


引用文章请标明出处,否则可以保留一切追究责任的权利
技术交流:
qq:408365330
微信:egojit

这篇关于Webrtc音视频会议之Webrtc“不求甚解”的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/239183

相关文章

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

雷动WEBRTC产品

http://www.rtcpower.com/html/leidongwebrtc.html ; 1.前言      WebRTC是一项在浏览器内部进行实时视频和音频通信的技术,是谷歌2010年以6820万美元收购Global IP Solutions公司而获得一项技术。WebRTC实现了基于网页的视频会议,标准是WHATWG 协议,目的是通过浏览器提供简单的javascript就可以

Apple quietly slips WebRTC audio, video into Safari's WebKit spec

转自:http://www.zdnet.com/article/apple-quietly-slips-webrtc-audio-video-into-safaris-webkit-spec/?from=timeline&isappinstalled=0 http://www.zdnet.com/article/apple-quietly-slips-webrtc-audio-video-

CCF推荐C类会议和期刊总结(计算机网络领域)

CCF推荐C类会议和期刊总结(计算机网络领域) 在计算机网络领域,中国计算机学会(CCF)推荐的C类会议和期刊为研究者提供了广泛的学术交流平台。以下是对所有C类会议和期刊的总结,包括全称、出版社、dblp文献网址以及所属领域。 目录 CCF推荐C类会议和期刊总结(计算机网络领域) C类期刊 1. Ad Hoc Networks 2. CC 3. TNSM 4. IET Com

参会邀请 | 第二届机器视觉、图像处理与影像技术国际会议(MVIPIT 2024)

第二届机器视觉、图像处理与影像技术国际会议(MVIPIT 2024)将于2024年9月13日-15日在中国张家口召开。 MVIPIT 2024聚焦机器视觉、图像处理与影像技术,旨在为专家、学者和研究人员提供一个国际平台,分享研究成果,讨论问题和挑战,探索前沿技术。诚邀高校、科研院所、企业等有关方面的专家学者参加会议。 9月13日(周五):签到日 9月14日(周六):会议日 9月15日(周日

WebRTC-nack机制详解

1.NACK的含义 丢包重传(NACK)是抵抗网络错误的重要手段。NACK在接收端检测到数据丢包后,发送NACK报文到发送端;发送端根据NACK报文中的序列号,在发送缓冲区找到对应的数据包,重新发送到接收端。NACK需要发送端,发送缓冲区的支持。 WebRTC中支持音频和视频的NACK重传。我们这里只分析nack机制,不分析jitterbuffer或者neteq的更多实现。 2.WebRTC

什么是LED智能会议一体机?COB超微小间距LED会议一体机大势所趋

LED智能会议一体机,作为现代会议室革新的核心装备,正逐步颠覆传统会议模式的界限。它不仅仅是一台集成了高清显示、触控互动、音视频处理及远程协作等功能于一体的智能设备,更是推动会议效率与体验双重飞跃的关键力量。随着技术的不断进步,特别是COB(Chip On Board)超微小间距LED技术的引入,LED智能会议一体机正迎来前所未有的发展机遇,成为大势所趋。 COB技术通过将LED芯片直接封装在基

IEEE会议投稿资料汇总http://cadcg2015.nwpu.edu.cn/index.htm

最近投了篇IEEE的顶级会议文章,一下是比较有用的一些资料,以供参考。 1.会议主页:http://cadcg2015.nwpu.edu.cn/index.htm     (The 14th International Conference on Computer-Aided Design and Computer Graphics (CAD/Graphics 2015)) 2.I

在幼儿园管理系统中,会议管理申请会议修改模块:多个与会人员的回显和修改(编辑)!

在幼儿园管理系统中,会议管理>申请会议>修改模块:多个与会人员的回显(复选框)和修改(编辑)!在处理与会人员的回显(复选框)和修改(编辑)出点问题。无法正确的回显(复选框)出来与会人员和修改(编辑)。 最后终于解决:修改(编辑)的思路是:先把原来的该会议记录下的所有与会人员删除,在添加,即可实现修改(编辑)功能。回显(复选框)的思路是:设置一个flag,判断一下是否要选中(复选框),即可实现

在幼儿园管理系统中,会议管理申请会议模块:添加会议记录(提交表单)的时候报:404错误!

在幼儿园管理系统(spring MVC)中,会议管理>申请会议模块:添加会议记录的时候报:404错误!不知道为啥找不到,一开始感觉一头雾水,怎么会出现404页面找不到错误那,又检查action,controller等这也没错啊!怎么出现404错误那。经过询问和查找,终于找到原因了。 原因是:添加的有时间字段。 代码: @InitBinder public void in