webrtc sdp协议

Topber 等级 747 0 0

作用:用于扩展SDP。 有两种作用范围:会话级别(session-level)、媒体级别(media-level)。 媒体级别:媒体描述(m=)后面可以跟任意数量的 a= 字段,对媒体描述进行扩展。 会话级别:在第一个媒体字段(media field)前,添加的 a= 字段是会话级别的。 有如下两种格式: a= a=:

格式1举例: a=recvonly

格式2举例: a=rtpmap:0 PCMU/8000

时间:t= 作用:声明会话的开始、结束时间。 格式如下: t=

如果是0,表示会话没有结束的边界,但是需要在之后会话才是活跃(active)的。如果是0,表示会话是永久的。 举例: t=0 0

WebRTC实例 下面例子来自腾讯云WebRTC服务的远端offer。 // sdp版本号为0 v=0 // o= // 用户名为空,会话id是8100750360520823155,会话版本是2(后面如果有类似改变编码的操作,sess-version加1),地址类型为IP4,地址为127.0.0.1(这里可以忽略) o=- 7595655801978680453 2 IN IP4 112.90.139.105 // 会话名为空 s=- // 会话的起始时间,都为0表示没有限制 t=0 0 a=ice-lite // 音频、视频的传输的传输采取多路复用,通过同一个RTP通道传输音频、视频,可以参考 https://tools.ietf.org/html/draft-ietf-mmusic-sdp-bundle-negotiation-54 a=group:BUNDLE 0 1 // WMS是WebRTC Media Stram的缩写,这里给Media Stream定义了一个唯一的标识符。一个Media Stream可以有多个track(video track、audio track),这些track就是通过这个唯一标识符关联起来的,具体见下面的媒体行(m=)以及它对应的附加属性(a=ssrc:) // 可以参考这里 http://tools.ietf.org/html/draft-ietf-mmusic-msid a=msid-semantic: WMS 5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV // m= ... // 本次会话有音频,端口为9(可忽略,端口9为Discard Protocol专用),采用UDP传输加密的RTP包,并使用基于SRTCP的音视频反馈机制来提升传输质量,111、103、104等是audio可能采用的编码(参见前面m=的说明) m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 126 // 音频发送者的IP4地址,WebRTC采用ICE,这里的 0.0.0.0 可直接忽略 c=IN IP4 0.0.0.0 // RTCP采用的端口、IP地址(可忽略) a=rtcp:9 IN IP4 0.0.0.0 // ice-ufrag、ice-pwd 分别为ICE协商用到的认证信息 a=ice-ufrag:58142170598604946 a=ice-pwd:71696ad0528c4adb02bb40e1 // DTLS协商过程的指纹信息 a=fingerprint:sha-256 7F:98:08:AC:17:6A:34:DB:CF:3B:EC:93:ED:57:3F:5A:9E:1F:4A:F3:DB:D5:BF:66:EE:17:58:E0:57:EC:1B:19 // 当前客户端在DTLS协商过程中,既可以作为客户端,也可以作为服务端,具体可参考 RFC4572 a=setup:actpass // 当前媒体行的标识符(在a=group:BUNDLE 0 1 这行里面用到,这里0表示audio) a=mid:0 // RTP允许扩展首部,这里表示采用了RFC6464定义的针对audio的扩展首部,用来调节音量,比如在大型会议中,有多个音频流,就可以用这个来调整音频混流的策略 // 这里没有vad=1,表示不启用这个音量控制 a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level // 表示既可以发送音频,也可以接收音频 a=sendrecv // 表示启用多路复用,RTP、RTCP共用同个通道 a=rtcp-mux // 下面几行都是对audio媒体行的补充说明(针对111),包括rtpmap、rtcp-fb、fmtp // rtpmap:编解码器为opus,采样率是48000,2声道 a=rtpmap:111 opus/48000/2 // rtcp-fb:基于RTCP的反馈控制机制,可以参考 https://tools.ietf.org/html/rfc5124、https://webrtc.org/experiments/rtp-hdrext/transport-wide-cc-02/ a=rtcp-fb:111 transport-cc a=rtcp-fb:111 nack // 最小的音频打包时间 a=fmtp:111 minptime=20 // 跟前面的rtpmap类似 a=rtpmap:126 telephone-event/8000 // ssrc用来对媒体进行描述,格式为a=ssrc: :,具体可参考 RFC5576 // cname用来唯一标识媒体的数据源 a=ssrc:16864608 cname:YZcxBwerFFm6GH69 // msid后面带两个id,第一个是MediaStream的id,第二个是audio track的id(跟后面的mslabel、label对应) a=ssrc:16864608 msid:5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV 128f4fa0-81dd-4c3a-bbcd-22e71e29d178 a=ssrc:16864608 mslabel:5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV a=ssrc:16864608 label:128f4fa0-81dd-4c3a-bbcd-22e71e29d178 // 跟audio类似,不赘述 m=video 9 UDP/TLS/RTP/SAVPF 122 102 125 107 124 120 123 119 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:58142170598604946 a=ice-pwd:71696ad0528c4adb02bb40e1 a=fingerprint:sha-256 7F:98:08:AC:17:6A:34:DB:CF:3B:EC:93:ED:57:3F:5A:9E:1F:4A:F3:DB:D5:BF:66:EE:17:58:E0:57:EC:1B:19 a=setup:actpass a=mid:1 a=extmap:2 urn:ietf:params:rtp-hdrext:toffset a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:4 urn:3gpp:video-orientation a=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay a=sendrecv a=rtcp-mux a=rtcp-rsize a=rtpmap:122 H264/90000 a=rtcp-fb:122 ccm fir a=rtcp-fb:122 nack a=rtcp-fb:122 nack pli a=rtcp-fb:122 goog-remb a=rtcp-fb:122 transport-cc a=fmtp:122 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f a=rtpmap:102 rtx/90000 a=fmtp:102 apt=122 a=rtpmap:125 H264/90000 a=rtcp-fb:125 ccm fir a=rtcp-fb:125 nack a=rtcp-fb:125 nack pli a=rtcp-fb:125 goog-remb a=rtcp-fb:125 transport-cc a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f a=rtpmap:107 rtx/90000 a=fmtp:107 apt=125 a=rtpmap:124 H264/90000 a=rtcp-fb:124 ccm fir a=rtcp-fb:124 nack a=rtcp-fb:124 nack pli a=rtcp-fb:124 goog-remb a=rtcp-fb:124 transport-cc a=fmtp:124 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d0032 a=rtpmap:120 rtx/90000 a=fmtp:120 apt=124 a=rtpmap:123 H264/90000 a=rtcp-fb:123 ccm fir a=rtcp-fb:123 nack a=rtcp-fb:123 nack pli a=rtcp-fb:123 goog-remb a=rtcp-fb:123 transport-cc a=fmtp:123 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640032 a=rtpmap:119 rtx/90000 a=fmtp:119 apt=123 a=ssrc-group:FID 33718809 50483271 a=ssrc:33718809 cname:ovaCctnHP9Asci9c a=ssrc:33718809 msid:5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV 1d7fc300-9889-4f94-9f35-c0bcc77a260d a=ssrc:33718809 mslabel:5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV a=ssrc:33718809 label:1d7fc300-9889-4f94-9f35-c0bcc77a260d a=ssrc:50483271 cname:ovaCctnHP9Asci9c a=ssrc:50483271 msid:5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV 1d7fc300-9889-4f94-9f35-c0bcc77a260d a=ssrc:50483271 mslabel:5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV a=ssrc:50483271 label:1d7fc300-9889-4f94-9f35-c0bcc77a260d

收藏
评论区

相关推荐

webrtc sdp协议
作用:用于扩展SDP。 有两种作用范围:会话级别(sessionlevel)、媒体级别(medialevel)。 媒体级别:媒体描述(m)后面可以跟任意数量的 a 字段,对媒体描述进行扩展。 会话级别:在第一个媒体字段(media field)前,添加的 a 字段是会话级别的。 有如下两种格式: a<attribute a<attribute:
Janus网关的集成与优化
> 本文由学霸君音视频架构师李桥平在LiveVideoStackCon 2020 线上峰会的演讲内容整理而成,内容主要包括Janus网关的集成过程以及集成过程中遇到的一些问题。 文 / 李桥平 整理 / LiveVideoStack 大家好,我是李桥平,来自学霸君上海互动产品研发中心,本次分享的主题是Janus网关的集成与优化。
RTP、RTCP和RTSP协议基础
1 RTSP概述 -------- ### 1.1 RTSP概念 RTSP(Real-Time Stream Protocol )是一种基于文本的应用层协议,在语法及一些消息参数等方面,RTSP协议与HTTP协议类似。 RTSP被用于建立的控制媒体流的传输,它为多媒体服务扮演“网络远程控制”的角色。RTSP本身并不用于传送媒体流数据。媒体数据的传
2018:WebRTC开发五大趋势
![](https://oscimg.oschina.net/oscnet/12da69b9-207c-4eff-9f3f-211ef637ed46.jpg) > 也许对于大部分WebRTC的开发者而言,2018年将是忙碌的一年。主流浏览器和苹果官方支持,标准和API定型,WebRTC生态具备了快速发展的条件。WebRTC技术服务商“WebRTC.
2018:WebRTC开发五大趋势
![](https://oscimg.oschina.net/oscnet/12da69b9-207c-4eff-9f3f-211ef637ed46.jpg) > 也许对于大部分WebRTC的开发者而言,2018年将是忙碌的一年。主流浏览器和苹果官方支持,标准和API定型,WebRTC生态具备了快速发展的条件。WebRTC技术服务商“WebRTC.
A Study of WebRTC Security
A Study of WebRTC Security ========================== [http://webrtc-security.github.io/](https://www.oschina.net/action/GoToLink?url=http%3A%2F%2Fwebrtc-security.github.io%2F) A
Android Studio xcode单步调试 WebRTC Android & iOS
mac环境 如何在 Android Studio 里单步调试 WebRTC Android 的 native 代码。 WebRTC 代码下载 * depot tools 是 chromium 代码库管理工具,包括代码管理、依赖管理、工作流程管理等; * Android/Linux、Windows、iOS/macOS WebRTC 本身的代码是同
Google Hangouts支持使用Firefox WebRTC
![](https://oscimg.oschina.net/oscnet/d3c18af9-0053-4032-aa1b-691bdb1c0319.png) > 自去年4月Firefox 53删除NPAPI以来,该插件一直无法被正常访问。而就在去年年末,Google Hangouts(环聊)重新支持使用Firefox WebRTC。本文深度剖析了
Google开源实时通信项目WebRTC
最近,Google正式开源了WebRTC实时通信项目,希望浏览器厂商能够将该技术内建在浏览器中,从而使Web应用开发人员能够通过HTML标签和JavaScript API就实现Web音频、视频通信功能。 WebRTC(Web Real Time Communication)并不是Google原来自己的技术。在2010年,Google以大约6820万美元收购
HTML WebRTC只摄像头和麦克风的调用
[http://blog.csdn.net/chenyafei617/article/details/38085409](https://www.oschina.net/action/GoToLink?url=http%3A%2F%2Fblog.csdn.net%2Fchenyafei617%2Farticle%2Fdetails%2F38085409)
HTML5新特性之WebRTC(音视频数据交互)
1、概述 ==== WebRTC是“网络实时通信”(Web Real Time Communication)的缩写,它主要用来让浏览器实时获取和交换视频、音频和数据。 WebRTC共分三个API。 * MediaStream(又称getUserMedia) * RTCPeerConnection * RTCDataChannel getU
Kurento On WebRTC
WebRTC是一种通过由万维网联盟(W3C)起草的为浏览器和移动应用提供实时通信(RTC)功能的技术简。 在本指南中,我们将向您介绍重要的部分,以及它们如何适用于Kurento。 Kurento WebRTC旨在成为WebRTC通信的一方。 另一个对等体可以是具有WebRTC能力的浏览器 - 使用RTCPeerConnection API,本地WebRTC
Kurento 之 WebRTC 统计
### 介绍 WebRTC流(音频,视频或数据)可能丢失,并且经历不同数量的网络延迟。 为了评估WebRTC应用程序的性能,可能需要能够监视底层网络和媒体管道的WebRTC功能。 为此,Kurento为服务器端(Kurento Media Server,KMS)提供了WebRTC统计数据收集。 此功能的实现遵循[W3C WebRTC的统计API](htt
Netflix 工程师的生活 —— 40毫秒的案例
![](https://oscimg.oschina.net/oscnet/7cd3a8b0-ca4a-4917-a93b-0b6b01091f5f.png) 正文字数:3049  阅读时长:4分钟 > 并非真正使用了 WebRTC,但此处存在使用 WebRTC 技术性质的相似之处。 作者 / John Blair, Netflix Part
Safari上使用WebRTC指南
> 尽管Apple在2017年的WWDC上宣布加入WebRTC支持,但仍然没有看到Apple在支持WebRTC上更深入的举动,尤其是其不只支持VP8更加强了这种担忧。 文 / Chad Phillips 译 / 元宝 原文:https://webrtchacks.com/guide-to-safari-webrtc/ 自Apple首次

热门文章

最新文章