Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >WebRTC支持SVC时SDP信令的协商过程

WebRTC支持SVC时SDP信令的协商过程

作者头像
liuzhen007
发布于 2022-12-18 01:09:19
发布于 2022-12-18 01:09:19
1.4K0
举报
文章被收录于专栏:流媒体音视频流媒体音视频

前言

WebRTC支持SVC需要从信令消息和媒体数据两方面入手,其中,信令消息主要是指SDP信息交换,媒体数据主要是指编码器可以编码出带有分层信息的视频码流,同时,打包出支持流媒体服务器转发的RTP包。今天本文会重点介绍信令消息部分的内容,下一篇文章会介绍媒体数据部分的内容。

正文

WebRTC搭配Mediasoup支持SVC能力时,首先需要WebRTC终端通过SDP信息协商交换彼此的SVC能力,协商决定使用SVC分层编码视频后,就开始通知编码器生成具备分层信息的视频编码码流。

一、推拉流整体示意图

WebRTC终端之间进行音视频实时通讯肯定少不了流媒体服务器的参与,本文以Mediasoup作为流媒体服务器为例进行介绍。现在先来看一个最简单的推拉流模型的示意图,其中包含推流端、拉流端、ms(Mediasoup)服务器,具体如下图所示:

上图重点体现了流媒体服务器上的部分逻辑内容,推流端把音视频数据推到Mediasoup流媒体服务器,ms会分别创建音频Producer和视频Producer,同时,也会为相应的拉流端创建音频Consumer和视频Consumer,音视频数据再通过ms内部的pipeline通道从Producer向Consumer传输。至此,整个模型的数据流就串起来了。

二、发布流

发布流和订阅流是两个相对独立的过程,其中,SDP信息交互也是分别进行的。接下来,我们先看一下发布流的整个过程,看看SVC的SDP信息是如何协商的。

推流端发起发布流操作,ms收到publish请求之后,会先检查本地是否已经发布过相同的媒体流了,如果存在,就临时保存一下这条流的已经被订阅的记录,同时销毁旧的媒体流;如果不存在,就执行正常逻辑,首先创建Pipeline,然后使用Pipeline对象创建Peer,再基于Peer实例化Publisher。

然后查询是否存在原来的订阅记录,如果存在,就查询刚才的记录,再根据读取的订阅记录恢复原来的数据连接;如果不存在,就继续执行剩下的逻辑,调用processOffer方法处理SVC信息,然后根据客户端的offer信息中是否存在SVC信息创建不同类型的Producer。

注意:这里需要说明的是,其实Producer本身并没有类型之分,这里是为了区分SVC和非SVC的不同逻辑分支才这样画图的。

如果推流端的offer中含有SVC信息,那么ms返回的answer中也会包含SVC信息;如果没有,那就返回普通的answer,启动非SVC模式推流。

三、订阅流

相比发布流,订阅流的过程可能会稍微复杂一些,拉流端发起订阅请求后,ms收到消息之后,会先判断本地是否存在对应的媒体流,如果没有,就直接报错并返回500的错误码。同样,如果不存在Pipeline内部媒体数据通道,也会直接报错并返回500的错误码。

接下来会进行兼容性判断,查看拉流端是否已经订阅过这路媒体流了。如果是,那就销毁旧的媒体流(原来订阅的);如果不是,就继续创建Peer和Publisher实例,然后查看拉流端的offer中是否携带了SVC信息,如果携带了就表明拉流端希望订阅具有视频分层的媒体流,尽管拉流端表明了这样的意愿,但是还需要媒体流本身带有这样的分层属性才可以,毕竟分层数据不会凭空产生,需要推流端的编码器提供能力支持。因此,还需要判断媒体流的Producer是否具有SVC属性。

上述两个条件缺一不可,如果条件不成立就创建普通的Consumer实例;如果条件成立,还会进一步判断编码码流的数量,如果是大小流,会创建SimulcastConsumer实例;如果不是大小流,就会创建普通的SVCConsumer实例,同时返回相应的携带SVC标识的answer信息。

注意:这里需要明确的是SimulcastConsumer同时具备SVC和Simulcast的能力,不存在单独的SVCConsumer。

结尾

通过本文的介绍,相信大家对WebRTC在支持SVC能力时的SDP消息协商过程就非常清晰了。或者,至少对整个过程有一个基础的概念,推流端的发布流和拉流端的订阅流两个过程既是独立的,同时又存在一定的联系。下一篇文章会介绍SVC媒体数据方面的内容,敬请期待。

作者简介:😄大家好,我是 Data-Mining(liuzhen007),是一名典型的音视频技术爱好者,前后就职于传统广电巨头和音视频互联网公司,具有丰富的音视频直播和点播相关经验,对 WebRTC、FFmpeg 和 Electron 有非常深入的了解。同时也是 CSDN 博客专家(博客之星)、华为云享专家(共创编辑、十佳博主)、51CTO社区编辑、InfoQ 签约作者,欢迎关注我分享更多干货!😄

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 玩转音视频 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Web前端WebRTC攻略(四) 媒体协商与SDP简析
1 媒体协商 在音视频通讯场景中,由于两端之间所支持的音视频编解码、传输协议、传输的速率,都需要进行彼此通知对方。 我们把一个 1 对 1 的音视频通讯,比喻成双方互送快递包裹的过程。 首先这里有很多问题,双方要彼此告知对方后,才能寄送包裹。 比如: 我不知道包裹要寄给谁?(我要和谁建立通讯) 对方能否使用我的包裹?(我的媒体格式对方是否支持) 对方在哪里,地址是什么?(对方所处网络的位置在哪) 走那条路线寄送最快?(走哪种网络传输最效率) 实际场景中,我们要打电话互相告诉对方一些信息。而在音视频通讯
用户1097444
2022/06/29
2.4K0
Web前端WebRTC攻略(四) 媒体协商与SDP简析
【OpenIM原创】简单轻松入门 一文讲解WebRTC实现1对1音视频通信原理
WebRTC(Web Real-Time Communication)是 Google于2010以6829万美元从 Global IP Solutions 公司购买,并于2011年将其开源,旨在建立一个互联网浏览器间的实时通信的平台,让 WebRTC技术成为 H5标准之一。我们看官网(https://webrtc.org)的介绍
OpenIM
2021/08/12
1.8K0
网页端WebRTC推流转换为RTMP/GB28181等其他直播流协议
在建立音视频通信之前,浏览器之间需要通过信令服务器进行一系列交互,以协商会话参数和通信方式。下面是 WebRTC 的信令交互过程:
hbstream
2023/04/06
1.3K0
网页端WebRTC推流转换为RTMP/GB28181等其他直播流协议
实时音视频入门学习:开源工程WebRTC的技术原理和使用浅析
本文由ELab技术团队分享,原题“浅谈WebRTC技术原理与应用”,有修订和改动。
JackJiang
2022/01/10
1.8K0
实时音视频入门学习:开源工程WebRTC的技术原理和使用浅析
多人实时互动之各WebRTC流媒体服务器比较
随着网络基础设施的提高,音视频实时通信越来越成为人们日常生活和工作中必不可少的需求。2011年 WebRTC的出现,则更加速了这种需求变为现实的可能性。
音视频_李超
2020/04/02
4.7K0
展望2018:WebRTC技术现状、应用开发与前景
2017年,随着微软和苹果表态在其浏览器或系统产品中对WebRTC技术的支持,以及WebRTC 1.0标准的定案,WebRTC的话题越来越多地出现在广大互联网行业开发人员的视野中。很多同学对WebRTC的背景、目的、意义以及限制其实并不明白,加上媒体上各种吹捧和质疑的声音互相掺杂,对WebRTC这项技术的应用前景和开发难度没有切实的判断。本文希望通过对WebRTC技术的粗浅梳理,为大家提供参考。
LiveVideoStack
2021/09/02
6820
展望2018:WebRTC技术现状、应用开发与前景
零基础入门:基于开源WebRTC,从0到1实现实时音视频聊天功能
本文由微医云技术团队前端工程师张宇航分享,原题“从0到1打造一个 WebRTC 应用”,有修订和改动。
JackJiang
2021/08/24
3.9K0
音视频通信加餐 —— WebRTC一肝到底
最近需要搭建一个在线课堂的直播平台,考虑到清晰度和延迟性,我们一致认为使用 WebRTC 最合适。
杨成功
2022/09/22
1.1K0
音视频通信加餐 —— WebRTC一肝到底
WebRTC基础面试题
最近音视频会议,在线教育都比较火,很多学习了我课程的同学都偿试着去面试音视频相关的岗位,这里我就简单的整理了一份 WebRTC 相关的面试题,希望对大家有所帮助。
音视频_李超
2020/04/23
2.8K0
基于WebRTC的低延迟视频直播
融云是一家全球互联网通信云平台,主要提供即时通讯、实时音视频相关业务,今天主要向大家介绍一下我们基于WebRTC的直播解决方案。
LiveVideoStack
2021/09/01
3.5K0
基于WebRTC的低延迟视频直播
SDP在RTSP、国标GB28181、WebRTC中的实践
注意的是SDP虽然具备这些能力参数信息的描述功能,但是SDP并不是传输协议,需要用RTSP、SIP、HTTP等协议进行承载传输、交换,如果大家协调好了之后,就可以建立会话,完成真实的音视频码流传输,再完成解码和播放。
潇湘落木
2020/11/12
2.1K0
SDP在RTSP、国标GB28181、WebRTC中的实践
iOS下WebRTC音视频通话(一)WebRTC介绍WebRTC 过程
在iOS下做IM功能时,难免都会涉及到音频通话和视频通话。QQ中的QQ电话和视频通话效果就非常好,但是如果你没有非常深厚的技术,也没有那么大的团队,很难做到QQ那么快速和稳定的通话效果。 但是利用WebRTC技术,即使一个人也能够实现效果不错的音视频通话。本篇介绍WebRTC的基础概念。
Haley_Wong
2018/08/22
3.9K0
Web前端WebRTC攻略(一) 基础介绍
随着互联网高速发展,以及即将到来的5G时代,WebRTC作为前端互动直播和实时音视频的利器,也是将前端开发者们不可错过的学习领域。如果你现在只是听过而已,那你可能要好好学习一番。 01  什么是WebRTC? WebRTC 全称是(Web browsers with Real-Time Communications (RTC) 大概2011年,谷歌收购了 GIPS,它是一个为 RTC 开发出许多组件的公司,例如编解码和回声消除技术。Google 开源了 GIPS 开发的技术,并希望将其打造为行业标准。 收
用户1097444
2022/06/29
2.7K0
Web前端WebRTC攻略(一) 基础介绍
快直播-基于WebRTC升级的低延时直播
随着直播行业的快速发展,直播带货秒杀和在线教育答题等应用场景对直播延时的要求越来越严苛。今天的技术解码就由费伟老师为大家带来腾讯云在快直播方面的一些分享! 随着直播行业的快速发展,特别是在今年疫情的影响下,各种低延时的直播场景得到了爆发性发展。最典型的应用就是直播带货秒杀和在线教育答题。这些应用场景的核心需求就是实时音视频互动,而传统直播技术基于HLS、FLV/RTMP协议具有秒级别的延时,高延时是制约互动效果的关键因素。快直播就是针对传统直播协议高延时的痛点,基于WebRTC技术实现毫秒级延
腾讯云音视频
2020/12/14
6.9K0
WebRTC 入门指南
WebRTC (Web Real-Time Communications) 是由谷歌开源并推进纳入 W3C 标准的一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。WebRTC 包含的这些标准使用户在无需安装任何插件或者第三方的软件的情况下,创建点对点(Peer-to-Peer)的数据分享和电话会议成为可能。
ihoey
2020/07/27
1.5K0
WebRTC介绍及简单应用
WebRTC介绍及简单应用 WebRTC,即Web Real-Time Communication,web实时通信技术。简单地说就是在web浏览器里面引入实时通信,包括音视频通话等。 WebRTC
用户1141560
2017/12/25
6.2K0
WebRTC中的RTP协议、RTCP协议、DSP协议
实时互动直播系统必须使用UDP作为数据传输的协议,为什么一定是UDP。TCP是一种可靠的传输协议,会保证在传输的过程中不丢包,UDP传输的速度快,但是不可靠,尤其是用户网络质量很差的情况下,会出现大量的丢包,基本无法保证音视频的服务质量。
码农帮派
2021/01/12
2.7K0
WebRTC中的RTP协议、RTCP协议、DSP协议
WebRTC 成为 W3C 和 IETF 正式标准
WebRTC 由用于 Web 实时通信的 JavaScript API 和一组通信协议构成,支持网络上的任何已连接设备成为 Web 上潜在的通信端点。WebRTC 已成为线上通信及协作服务的基石。
Tinywan
2021/02/25
1.2K0
WebRTC 成为 W3C 和 IETF 正式标准
互动直播之WebRTC服务开源技术选型
【转载请注明出处】:https://cloud.tencent.com/developer/article/1631960
后端老鸟
2020/05/24
6K0
互动直播之WebRTC服务开源技术选型
WebRTC教程:入门介绍
WebRTC (Web Real-Time Communications) 是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。WebRTC包含的这些标准使用户在无需安装任何插件或者第三方的软件的情况下,创建点对点(Peer-to-Peer)的数据分享和电话会议成为可能。
Tinywan
2024/03/11
4180
WebRTC教程:入门介绍
推荐阅读
相关推荐
Web前端WebRTC攻略(四) 媒体协商与SDP简析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档