本文主要介绍ICE与SDP交互过程中的一些知识,支持原创,文章来博客园RTC.Blacker,转载请说明出处。

用过libjingle模块的同学都知道连接过程中candidate的获取与连接流程,一边获取candidate,一边进行连接,所以整个过程很快,

但我们有时候用一些其他基于webrtc的产品来测试时发现很久才能看到对方的画面,这是啥原因呢?是不是程序有漏洞?

不是的,主要是他们采用了不同类型的ICE,详细区别见下图:

如上:右边就是libjingle所采用的ICE连接模式,左边是传统模式,主要差别就是candidate获取与建立连接的时间点不一样。

以下是traditional ICE下SDP交互的例子:

sdpOffer:v=0
o=- 1610437942022958275 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio video
a=msid-semantic: WMS WPIpgsjC7ygH2f9MdWrqxrkG26wUHzt3zzLs
m=audio 49290 RTP/SAVPF 111 103 104 9 0 8 106 105 13 126
c=IN IP4 43.251.159.28
a=rtcp:49290 IN IP4 43.251.159.28
a=candidate:4011286938 1 udp 2122260223 172.16.36.4 49290 typ host generation 0
a=candidate:4011286938 2 udp 2122260223 172.16.36.4 49290 typ host generation 0
a=candidate:3671821981 1 udp 2122194687 192.168.232.1 49291 typ host generation 0
a=candidate:3671821981 2 udp 2122194687 192.168.232.1 49291 typ host generation 0
a=candidate:209874304 1 udp 2122129151 192.168.234.1 49292 typ host generation 0
a=candidate:209874304 2 udp 2122129151 192.168.234.1 49292 typ host generation 0
a=candidate:430735571 1 udp 2122063615 192.168.1.102 49293 typ host generation 0
a=candidate:430735571 2 udp 2122063615 192.168.1.102 49293 typ host generation 0
a=candidate:2710871402 1 tcp 1518280447 172.16.36.4 0 typ host tcptype active generation 0
a=candidate:2710871402 2 tcp 1518280447 172.16.36.4 0 typ host tcptype active generation 0
a=candidate:2488824429 1 tcp 1518214911 192.168.232.1 0 typ host tcptype active generation 0
a=candidate:2488824429 2 tcp 1518214911 192.168.232.1 0 typ host tcptype active generation 0
a=candidate:1107399024 1 tcp 1518149375 192.168.234.1 0 typ host tcptype active generation 0
a=candidate:1107399024 2 tcp 1518149375 192.168.234.1 0 typ host tcptype active generation 0
a=candidate:1462729763 1 tcp 1518083839 192.168.1.102 0 typ host tcptype active generation 0
a=candidate:1462729763 2 tcp 1518083839 192.168.1.102 0 typ host tcptype active generation 0
a=candidate:1179184719 1 udp 1686052607 43.251.159.28 49290 typ srflx raddr 172.16.36.4 rport 49290 generation 0
a=candidate:1179184719 2 udp 1686052607 43.251.159.28 49290 typ srflx raddr 172.16.36.4 rport 49290 generation 0
a=ice-ufrag:8HnoGRmjieejKco5
a=ice-pwd:acjBERhAuMGJhSKh+QV1RfYc
a=fingerprint:sha-256 42:01:CE:4C:B3:00:75:C1:3D:71:91:85:55:D9:89:16:1F:F8:DC:13:45:C6:01:20:73:50:3F:68:F7:9B:42:A3
a=setup:actpass
a=mid:audio
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=sendrecv
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10; useinbandfec=1
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:106 CN/32000
a=rtpmap:105 CN/16000
a=rtpmap:13 CN/8000
a=rtpmap:126 telephone-event/8000
a=maxptime:60
a=ssrc:914767615 cname:I7njJbRyQNJXY+i8
a=ssrc:914767615 msid:WPIpgsjC7ygH2f9MdWrqxrkG26wUHzt3zzLs fbe366c6-6ac9-44b2-866f-0c629c9d2e45
a=ssrc:914767615 mslabel:WPIpgsjC7ygH2f9MdWrqxrkG26wUHzt3zzLs
a=ssrc:914767615 label:fbe366c6-6ac9-44b2-866f-0c629c9d2e45
m=video 49290 RTP/SAVPF 100 116 117 96
c=IN IP4 43.251.159.28
a=rtcp:49290 IN IP4 43.251.159.28
a=candidate:4011286938 1 udp 2122260223 172.16.36.4 49290 typ host generation 0
a=candidate:4011286938 2 udp 2122260223 172.16.36.4 49290 typ host generation 0
a=candidate:3671821981 1 udp 2122194687 192.168.232.1 49291 typ host generation 0
a=candidate:3671821981 2 udp 2122194687 192.168.232.1 49291 typ host generation 0
a=candidate:209874304 1 udp 2122129151 192.168.234.1 49292 typ host generation 0
a=candidate:209874304 2 udp 2122129151 192.168.234.1 49292 typ host generation 0
a=candidate:430735571 1 udp 2122063615 192.168.1.102 49293 typ host generation 0
a=candidate:430735571 2 udp 2122063615 192.168.1.102 49293 typ host generation 0
a=candidate:2710871402 1 tcp 1518280447 172.16.36.4 0 typ host tcptype active generation 0
a=candidate:2710871402 2 tcp 1518280447 172.16.36.4 0 typ host tcptype active generation 0
a=candidate:2488824429 1 tcp 1518214911 192.168.232.1 0 typ host tcptype active generation 0
a=candidate:2488824429 2 tcp 1518214911 192.168.232.1 0 typ host tcptype active generation 0
a=candidate:1107399024 1 tcp 1518149375 192.168.234.1 0 typ host tcptype active generation 0
a=candidate:1107399024 2 tcp 1518149375 192.168.234.1 0 typ host tcptype active generation 0
a=candidate:1462729763 1 tcp 1518083839 192.168.1.102 0 typ host tcptype active generation 0
a=candidate:1462729763 2 tcp 1518083839 192.168.1.102 0 typ host tcptype active generation 0
a=candidate:1179184719 1 udp 1686052607 43.251.159.28 49290 typ srflx raddr 172.16.36.4 rport 49290 generation 0
a=candidate:1179184719 2 udp 1686052607 43.251.159.28 49290 typ srflx raddr 172.16.36.4 rport 49290 generation 0
a=ice-ufrag:8HnoGRmjieejKco5
a=ice-pwd:acjBERhAuMGJhSKh+QV1RfYc
a=fingerprint:sha-256 42:01:CE:4C:B3:00:75:C1:3D:71:91:85:55:D9:89:16:1F:F8:DC:13:45:C6:01:20:73:50:3F:68:F7:9B:42:A3
a=setup:actpass
a=mid:video
a=extmap:2 urn:ietf:params:rtp-hdrext:toffset
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=sendrecv
a=rtcp-mux
a=rtpmap:100 VP8/90000
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=rtcp-fb:100 goog-remb
a=rtpmap:116 red/90000
a=rtpmap:117 ulpfec/90000
a=rtpmap:96 rtx/90000
a=fmtp:96 apt=100
a=ssrc-group:FID 1771045130 811642261
a=ssrc:1771045130 cname:I7njJbRyQNJXY+i8
a=ssrc:1771045130 msid:WPIpgsjC7ygH2f9MdWrqxrkG26wUHzt3zzLs 79fdc2d6-85c1-4d67-bd7e-44bbe6334926
a=ssrc:1771045130 mslabel:WPIpgsjC7ygH2f9MdWrqxrkG26wUHzt3zzLs
a=ssrc:1771045130 label:79fdc2d6-85c1-4d67-bd7e-44bbe6334926
a=ssrc:811642261 cname:I7njJbRyQNJXY+i8
a=ssrc:811642261 msid:WPIpgsjC7ygH2f9MdWrqxrkG26wUHzt3zzLs 79fdc2d6-85c1-4d67-bd7e-44bbe6334926
a=ssrc:811642261 mslabel:WPIpgsjC7ygH2f9MdWrqxrkG26wUHzt3zzLs
a=ssrc:811642261 label:79fdc2d6-85c1-4d67-bd7e-44bbe6334926
sdpAnser:v=0
o=- 1610437942022958275 0 IN IP4 0.0.0.0
s=Kurento Media Server
c=IN IP4 0.0.0.0
t=0 0
a=group:BUNDLE audio video
m=audio 49350 RTP/SAVPF 111 0
c=IN IP4 115.28.63.56
a=rtpmap:111 opus/48000/2
a=rtpmap:0 PCMU/8000
a=sendrecv
a=rtcp:49350 IN IP4 115.28.63.56
a=rtcp-mux
a=ssrc:4085612173 cname:user2766977916@host-c2a1d0bb
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=mid:audio
a=ice-ufrag:k69i
a=ice-pwd:2OEh/hwoKondNA67xmXQ1s
a=fingerprint:sha-256 00:C2:77:EF:2C:B1:73:01:10:29:3D:53:AB:81:29:59:F3:AA:9A:EB:91:B9:A8:F1:16:12:2D:6C:5A:5D:78:B2
a=candidate:1 1 UDP 2013266431 115.28.63.56 49350 typ host
a=candidate:2 1 UDP 2013266431 10.144.37.152 58353 typ host
m=video 49350 RTP/SAVPF 100
c=IN IP4 115.28.63.56
b=AS:500
a=rtpmap:100 VP8/90000
a=sendrecv
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=rtcp-fb:100 goog-remb
a=rtcp:49350 IN IP4 115.28.63.56
a=rtcp-mux
a=ssrc:1728895 cname:user2766977916@host-c2a1d0bb
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=mid:video
a=ice-ufrag:k69i
a=ice-pwd:2OEh/hwoKondNA67xmXQ1s
a=fingerprint:sha-256 00:C2:77:EF:2C:B1:73:01:10:29:3D:53:AB:81:29:59:F3:AA:9A:EB:91:B9:A8:F1:16:12:2D:6C:5A:5D:78:B2
a=candidate:1 1 UDP 2013266431 115.28.63.56 49350 typ host
a=candidate:2 1 UDP 2013266431 10.144.37.152 58353 typ host SDP answer received, setting remote description

搞懂了这两者的区别,相信对你理解ICE和SDP会有所帮助!

Android IOS WebRTC 音视频开发总结(三十)-- ice协议异同的更多相关文章

  1. Android IOS WebRTC 音视频开发总结(十九)-- kurento

    折腾了一个多星期终于将kurento的环境搭建好(开发阶段的产品,有些BUG要自己解决),所以单独写篇文件来介绍. 下面开始介绍kurento,文章来自博客园RTC.Blacker,转载请说明出处. ...

  2. Android IOS WebRTC 音视频开发总结(十)-- webrtc入门002

    继续上一篇中未翻译完成的部分,主要包括下面三个部分: 1,扩展:WebRTC多方通话. 2,MCU Multipoint Control Unit. 2, 扩展:VOIP,电话,消息通讯. 注意:翻译 ...

  3. Android IOS WebRTC 音视频开发总结(十五)-- 培训课程大纲

    最近在给公司做内部培训,主要是关于即时通讯和移动视频通话,包括android与android,ios与ios,android与ios,以及手机与PC. ------------------------ ...

  4. Android IOS WebRTC 音视频开发总结(十二)-- sufaceview

    谈到音视频不得不谈谈对视频呈现的理解,为了让大家能有一个更好的理解,先看看android里面SurfaceView的原理,后续陆续分享其绘画原理. 说明:本文是转载的,转载自哪里我也不知道,貌似经过很 ...

  5. Android IOS WebRTC 音视频开发总结(十六)-- 音频设备操作之opensl与jni

    本节主要分享视频通话中android和ios上操作音频设备的方式,如调解音量大小,启用扬声器(本系列文章转载请说明出处,博客园RTC.Blacker). 先看看webrtc中处理音频设备代码的目录结构 ...

  6. Android IOS WebRTC 音视频开发总结(十八)-- 手机适配

    本文主要介绍上次碰到的某些机器上看不到视频的问题,文章来自博客园RTC.Blacker,转载请说明出处. 之前做的视频聊天App一直运行良好,前几天客户反馈说在三星9100. Android4.0.3 ...

  7. Android IOS WebRTC 音视频开发总结(十四)-- sip和xmpp异同

    这篇文章主要介绍XMPP与SIP,很多人容易混淆这两个概念,转载请说明出处(博客园RTC.Blacker). 简介:XMPP和SIP都是应用层协议,主要用于互联网上发送语音和即时通讯. SIP在RFC ...

  8. 转:Android IOS WebRTC 音视频开发总结 (系列文章集合)

    随笔分类 - webrtc   Android IOS WebRTC 音视频开发总结(七八)-- 为什么WebRTC端到端监控很关键? 摘要: 本文主要介绍WebRTC端到端监控(我们翻译和整理的,译 ...

  9. Android IOS WebRTC 音视频开发总结(八十五)-- 使用WebRTC广播网络摄像头视频(下)

    本文主要介绍WebRTC (我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:bl ...

  10. Android IOS WebRTC 音视频开发总结(八十三)-- 使用WebRTC广播网络摄像头视频(上)

    本文主要介绍WebRTC (我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:bl ...

随机推荐

  1. 时间c#

    无论Time.timeScale 等于多说Update和LateUpdate都会去执行 Time.timeScale会影响FixedUpdate的速度.  Time.timeScale还会影响Time ...

  2. Xcode 的正确打开方式——Debugging(转载)

    Xcode 的正确打开方式——Debugging   程序员日常开发中有大量时间都会花费在 debug 上,从事 iOS 开发不可避免地需要使用 Xcode.这篇博客就主要介绍了 Xcode 中几种能 ...

  3. (C) Windows 32 API程序设计目录

    (一)第一个窗口程序 01 创建第一个窗口. (二)输出文本 01 获取Windows图形构件大小信息

  4. mac下安装和卸载软件

    http://snowolf.iteye.com/blog/774312 homebrew主页对brew   https://github.com/mxcl/homebrew/wiki Pre. in ...

  5. ruby字符串学习笔记4

    1 单独处理字符串的字符 如果处理的是ASCII码的文档使用string#each_byte 注意 没有 string#each方法,String#each_byte 速度比 String#scan快 ...

  6. 无法创建spool文件

    是因为没有用管理员运行CMD,并且数据库不需要使用超级管理员登录.

  7. 织梦后台更新,报错DedeCMS Error:Tag disabled:"php" more...

    网站采用织梦v5.7版本,在做过一次后台补丁更新后,再对网站“生成”操作的时候,无厘头出现报错“ 网站后台--系统--系统基本参数---其他选项 ---模板引擎禁用标签:php  ,把php删掉 保存 ...

  8. 支付宝&腾讯的OpenID之路

         10年前上网很简单,那时我只用记住三个账号:QQ.21cn邮箱和中国联众.10年后的今天,应用或服务层次不穷:盛大网游.淘宝.豆瓣.人人.微博……太多的账号和密码我已经没办法记住.如果有一个 ...

  9. iBeacons 资源汇总

    从淘宝上购买了iBeacons的开发模块,便开始要熟悉这个技术了. 先来说一下什么是iBeacons iBeacons是苹果在2013年WWDC上推出一项基于蓝牙4.0(Bluetooth LE | ...

  10. 10gR2-11gR1,11gR2如何干净的清除并重建OCR和表决磁盘

    下面分别讨论10gR2-11gR1和11gR2干净的清除并重建OCR和表决磁盘的方法. 一.10gR2-11gR1干净的清除并重建OCR和表决磁盘的方法 参考METALINK文章:ID 399482. ...