Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将SIP与webRTC连接

将SIP与webRTC连接
EN

Stack Overflow用户
提问于 2020-01-03 21:55:05
回答 3查看 2.7K关注 0票数 0

我已成功注册通过SIP,但无法连接到webRTC。

有谁能想到我们如何将SIP与webRTC连接起来呢?

请帮帮我们,我们有麻烦了。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-01-07 04:47:03

为了在SIP和Webrtc之间进行互操作,您需要在两个层上解决问题:

  1. 使用相同的技术在同一服务器上注册(使用SIP)
  2. 使用相同的技术设置媒体会话(使用具有所需功能的SDP )

最后,Webrtc和SIP都在使用SDP来设置媒体会话,您需要集中精力在Webrtc代理和SIP代理端的SDP中提供相同的功能支持。

为了做到这一点,你需要:

  • 在webrtc代理端,将webrtc代理注册到SIP服务。
  • 在sip代理端,了解将由webrtc代理发送的SDP设置。

如果我是正确的,从您的问题,您已经注册了一个SIP服务的webrtc代理?无论如何,您可能已经使用过的解决方案使用javascript堆栈(如JsSIP )。此堆栈正在为webrtc代理实现缺少的SIP协议层。它可以用于通过websocket向SIP服务(如kamailio )发送寄存器。JsSIP还可以用Webrtc生成的SDP发送INVITE。

一旦注册了webrtc代理,就可以调用SIP代理。

下一步是让SIP代理能够与Webrtc发送的SDP进行互操作。Webrtc的SDP需要实现和协商许多特性。否则,SDP谈判将在Webrtc方面失败。

在webrtc上对SDP的要求是:-使用OPUS编解码器用于音频(PCMU或PCMA也可以工作)--使用VP8、VP9、H264作为视频。(取决于浏览器?)-使用UDP/TLS/ RTP /SAVPF配置文件(而不是RTP/AVP) -使用DTLS进行媒体加密-使用RTCP反馈,例如GOOG、TMMBR、PLI、NACK -对RTP和RTCP (使用相同的套接字)使用muxing对音频和视频流(使用相同的套接字)-使用ICE建立和验证本地、存根和切换候选的流-一些其他编解码器或可选扩展,如"ssrc“和"extmap”属性.

下面是使用JsSIP和当前Chrome的webrtc的SDP示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
INVITE sip:antisip@sip.antisip.com SIP/2.0
Via: SIP/2.0/WSS 23g0dst83l03.invalid;branch=z9hG4bK9183549
Max-Forwards: 69
To: <sip:antisip@sip.antisip.com>
From: "test61" <sip:test61@sip.antisip.com>;tag=ug27evkg8b
Call-ID: fgk6v33jjsmcqkec4hnk
CSeq: 1493 INVITE
Proxy-Authorization: Digest algorithm=MD5, username="test61", realm="sip.antisip.com", nonce="XhRyf14UcVN1NxxGnK1M2SSNNMCCeN28/hp17aOPbPRx6h7r++W5Ng==", uri="sip:antisip@sip.antisip.com", response="801f72fe7a2d95aa21b8b7ab7eb45930", qop=auth, cnonce="bka9v71mqbqu", nc=00000001
Contact: <sip:test61@sip.antisip.com;gr=urn:uuid:01542fc1-e3d6-4e92-a032-5c5378bff6c1>
Content-Type: application/sdp
Session-Expires: 90
Allow: INVITE,ACK,CANCEL,BYE,UPDATE,MESSAGE,OPTIONS,REFER,INFO,NOTIFY
Supported: timer,gruu,ice,replaces,outbound
User-Agent: JsSIP 3.3.11
Content-Length: 9992

v=0
o=- 6413630617983761779 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0 1
a=msid-semantic: WMS WUvtnpqd3NIpvzakhMqR4QQ308BUCsNHi75U
m=audio 62668 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126
c=IN IP4 90.66.179.60
a=rtcp:62672 IN IP4 90.66.179.60
a=candidate:3769397851 1 udp 2122262783 2a01:cb14:7c1:7f00:1d76:e7d4:3237:e96f 62665 typ host generation 0 network-id 3
a=candidate:2805962766 1 udp 2122197247 2a01:cb14:7c1:7f00:f961:60c1:70f1:25a0 62666 typ host generation 0 network-id 4
a=candidate:2999745851 1 udp 2122129151 192.168.56.1 62667 typ host generation 0 network-id 1
a=candidate:4077567720 1 udp 2122063615 192.168.1.10 62668 typ host generation 0 network-id 2
a=candidate:3769397851 2 udp 2122262782 2a01:cb14:7c1:7f00:1d76:e7d4:3237:e96f 62669 typ host generation 0 network-id 3
a=candidate:2805962766 2 udp 2122197246 2a01:cb14:7c1:7f00:f961:60c1:70f1:25a0 62670 typ host generation 0 network-id 4
a=candidate:2999745851 2 udp 2122129150 192.168.56.1 62671 typ host generation 0 network-id 1
a=candidate:4077567720 2 udp 2122063614 192.168.1.10 62672 typ host generation 0 network-id 2
a=candidate:85641020 1 udp 1685855999 90.66.179.60 62668 typ srflx raddr 192.168.1.10 rport 62668 generation 0 network-id 2
a=candidate:85641020 2 udp 1685855998 90.66.179.60 62672 typ srflx raddr 192.168.1.10 rport 62672 generation 0 network-id 2
a=candidate:2922352299 1 tcp 1518283007 2a01:cb14:7c1:7f00:1d76:e7d4:3237:e96f 9 typ host tcptype active generation 0 network-id 3
a=candidate:3921437950 1 tcp 1518217471 2a01:cb14:7c1:7f00:f961:60c1:70f1:25a0 9 typ host tcptype active generation 0 network-id 4
a=candidate:4233069003 1 tcp 1518149375 192.168.56.1 9 typ host tcptype active generation 0 network-id 1
a=candidate:3179889176 1 tcp 1518083839 192.168.1.10 9 typ host tcptype active generation 0 network-id 2
a=candidate:2922352299 2 tcp 1518283006 2a01:cb14:7c1:7f00:1d76:e7d4:3237:e96f 9 typ host tcptype active generation 0 network-id 3
a=candidate:3921437950 2 tcp 1518217470 2a01:cb14:7c1:7f00:f961:60c1:70f1:25a0 9 typ host tcptype active generation 0 network-id 4
a=candidate:4233069003 2 tcp 1518149374 192.168.56.1 9 typ host tcptype active generation 0 network-id 1
a=candidate:3179889176 2 tcp 1518083838 192.168.1.10 9 typ host tcptype active generation 0 network-id 2
a=ice-ufrag:8hGn
a=ice-pwd:7nXTzHnYYJqjFn/PuIQs0M74
a=ice-options:trickle
a=fingerprint:sha-256 BC:82:61:35:EA:5B:A5:26:05:82:04:D8:59:4C:38:5D:C9:2A:A2:FB:3C:D1:4D:B3:F0:30:51:15:12:35:09:53
a=setup:actpass
a=mid:0
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendrecv
a=msid:WUvtnpqd3NIpvzakhMqR4QQ308BUCsNHi75U 40826d93-0424-428b-9d5e-c75e8529f908
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
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:110 telephone-event/48000
a=rtpmap:112 telephone-event/32000
a=rtpmap:113 telephone-event/16000
a=rtpmap:126 telephone-event/8000
a=ssrc:1958040920 cname:YJ7EvDTAqjZBMG5q
a=ssrc:1958040920 msid:WUvtnpqd3NIpvzakhMqR4QQ308BUCsNHi75U 40826d93-0424-428b-9d5e-c75e8529f908
a=ssrc:1958040920 mslabel:WUvtnpqd3NIpvzakhMqR4QQ308BUCsNHi75U
a=ssrc:1958040920 label:40826d93-0424-428b-9d5e-c75e8529f908
m=video 62676 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 122 127 121 125 107 108 109 124 120 123 119 114 115 116
c=IN IP4 90.66.179.60
a=rtcp:62680 IN IP4 90.66.179.60
a=candidate:3769397851 1 udp 2122262783 2a01:cb14:7c1:7f00:1d76:e7d4:3237:e96f 62673 typ host generation 0 network-id 3
a=candidate:2805962766 1 udp 2122197247 2a01:cb14:7c1:7f00:f961:60c1:70f1:25a0 62674 typ host generation 0 network-id 4
a=candidate:2999745851 1 udp 2122129151 192.168.56.1 62675 typ host generation 0 network-id 1
a=candidate:4077567720 1 udp 2122063615 192.168.1.10 62676 typ host generation 0 network-id 2
a=candidate:3769397851 2 udp 2122262782 2a01:cb14:7c1:7f00:1d76:e7d4:3237:e96f 62677 typ host generation 0 network-id 3
a=candidate:2805962766 2 udp 2122197246 2a01:cb14:7c1:7f00:f961:60c1:70f1:25a0 62678 typ host generation 0 network-id 4
a=candidate:2999745851 2 udp 2122129150 192.168.56.1 62679 typ host generation 0 network-id 1
a=candidate:4077567720 2 udp 2122063614 192.168.1.10 62680 typ host generation 0 network-id 2
a=candidate:85641020 1 udp 1685855999 90.66.179.60 62676 typ srflx raddr 192.168.1.10 rport 62676 generation 0 network-id 2
a=candidate:85641020 2 udp 1685855998 90.66.179.60 62680 typ srflx raddr 192.168.1.10 rport 62680 generation 0 network-id 2
a=candidate:2922352299 1 tcp 1518283007 2a01:cb14:7c1:7f00:1d76:e7d4:3237:e96f 9 typ host tcptype active generation 0 network-id 3
a=candidate:3921437950 1 tcp 1518217471 2a01:cb14:7c1:7f00:f961:60c1:70f1:25a0 9 typ host tcptype active generation 0 network-id 4
a=candidate:4233069003 1 tcp 1518149375 192.168.56.1 9 typ host tcptype active generation 0 network-id 1
a=candidate:3179889176 1 tcp 1518083839 192.168.1.10 9 typ host tcptype active generation 0 network-id 2
a=candidate:2922352299 2 tcp 1518283006 2a01:cb14:7c1:7f00:1d76:e7d4:3237:e96f 9 typ host tcptype active generation 0 network-id 3
a=candidate:3921437950 2 tcp 1518217470 2a01:cb14:7c1:7f00:f961:60c1:70f1:25a0 9 typ host tcptype active generation 0 network-id 4
a=candidate:4233069003 2 tcp 1518149374 192.168.56.1 9 typ host tcptype active generation 0 network-id 1
a=candidate:3179889176 2 tcp 1518083838 192.168.1.10 9 typ host tcptype active generation 0 network-id 2
a=ice-ufrag:8hGn
a=ice-pwd:7nXTzHnYYJqjFn/PuIQs0M74
a=ice-options:trickle
a=fingerprint:sha-256 BC:82:61:35:EA:5B:A5:26:05:82:04:D8:59:4C:38:5D:C9:2A:A2:FB:3C:D1:4D:B3:F0:30:51:15:12:35:09:53
a=setup:actpass
a=mid:1
a=extmap:14 urn:ietf:params:rtp-hdrext:toffset
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:13 urn:3gpp:video-orientation
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
a=extmap:8 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07
a=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/color-space
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendrecv
a=msid:WUvtnpqd3NIpvzakhMqR4QQ308BUCsNHi75U 654d0876-4021-4443-924c-80a0a5395492
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 goog-remb
a=rtcp-fb:96 transport-cc
a=rtcp-fb:96 ccm fir
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=rtpmap:97 rtx/90000
a=fmtp:97 apt=96
a=rtpmap:98 VP9/90000
a=rtcp-fb:98 goog-remb
a=rtcp-fb:98 transport-cc
a=rtcp-fb:98 ccm fir
a=rtcp-fb:98 nack
a=rtcp-fb:98 nack pli
a=fmtp:98 profile-id=0
a=rtpmap:99 rtx/90000
a=fmtp:99 apt=98
a=rtpmap:100 VP9/90000
a=rtcp-fb:100 goog-remb
a=rtcp-fb:100 transport-cc
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=fmtp:100 profile-id=2
a=rtpmap:101 rtx/90000
a=fmtp:101 apt=100
a=rtpmap:102 H264/90000
a=rtcp-fb:102 goog-remb
a=rtcp-fb:102 transport-cc
a=rtcp-fb:102 ccm fir
a=rtcp-fb:102 nack
a=rtcp-fb:102 nack pli
a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
a=rtpmap:122 rtx/90000
a=fmtp:122 apt=102
a=rtpmap:127 H264/90000
a=rtcp-fb:127 goog-remb
a=rtcp-fb:127 transport-cc
a=rtcp-fb:127 ccm fir
a=rtcp-fb:127 nack
a=rtcp-fb:127 nack pli
a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f
a=rtpmap:121 rtx/90000
a=fmtp:121 apt=127
a=rtpmap:125 H264/90000
a=rtcp-fb:125 goog-remb
a=rtcp-fb:125 transport-cc
a=rtcp-fb:125 ccm fir
a=rtcp-fb:125 nack
a=rtcp-fb:125 nack pli
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:108 H264/90000
a=rtcp-fb:108 goog-remb
a=rtcp-fb:108 transport-cc
a=rtcp-fb:108 ccm fir
a=rtcp-fb:108 nack
a=rtcp-fb:108 nack pli
a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f
a=rtpmap:109 rtx/90000
a=fmtp:109 apt=108
a=rtpmap:124 H264/90000
a=rtcp-fb:124 goog-remb
a=rtcp-fb:124 transport-cc
a=rtcp-fb:124 ccm fir
a=rtcp-fb:124 nack
a=rtcp-fb:124 nack pli
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 goog-remb
a=rtcp-fb:123 transport-cc
a=rtcp-fb:123 ccm fir
a=rtcp-fb:123 nack
a=rtcp-fb:123 nack pli
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=rtpmap:114 red/90000
a=rtpmap:115 rtx/90000
a=fmtp:115 apt=114
a=rtpmap:116 ulpfec/90000
a=ssrc-group:FID 1470715227 2811192556
a=ssrc:1470715227 cname:YJ7EvDTAqjZBMG5q
a=ssrc:1470715227 msid:WUvtnpqd3NIpvzakhMqR4QQ308BUCsNHi75U 654d0876-4021-4443-924c-80a0a5395492
a=ssrc:1470715227 mslabel:WUvtnpqd3NIpvzakhMqR4QQ308BUCsNHi75U
a=ssrc:1470715227 label:654d0876-4021-4443-924c-80a0a5395492
a=ssrc:2811192556 cname:YJ7EvDTAqjZBMG5q
a=ssrc:2811192556 msid:WUvtnpqd3NIpvzakhMqR4QQ308BUCsNHi75U 654d0876-4021-4443-924c-80a0a5395492
a=ssrc:2811192556 mslabel:WUvtnpqd3NIpvzakhMqR4QQ308BUCsNHi75U
a=ssrc:2811192556 label:654d0876-4021-4443-924c-80a0a5395492

如果您希望与SIP代理进行互操作,则此SIP代理必须与SDP中的大多数功能兼容。

解决办法是,在没有所有功能的情况下调用基本的SIP用户代理是在中间有一个网关(例如星号或freeswitch?)。然而,这种解决方案并不是最好的,因为您将失去SDP中所有功能的好处(端到端加密、最佳媒体路径、实时带宽协商、视频丢失管理等)。

票数 2
EN

Stack Overflow用户

发布于 2020-01-04 11:25:13

SIP和WebRTC是不同的协议(或者在WebRTC的例子中是不同系列的协议)。WebRTC不包括WebRTC,因此您无法直接将SIP连接到WebRTC服务器,反之亦然。

您可以做的是使用一个能够理解这两种协议的服务器,例如星号或FreeSWITCH,充当桥梁。

票数 1
EN

Stack Overflow用户

发布于 2020-01-07 21:23:37

使用Janus WebRTC Server -janus-webrtc-网关-as-as网关

如何使用Janus for SIP到WEBRTC

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59588308

复制
相关文章
如何实现WebRTC协议与SIP协议互通
目前在国内需要WebRTC协议与SIP协议互通的场景主要集中在应用程序(App/Web)对接企业呼叫中心系统客服坐席、音视频会议对接PSTN/SIP音视频通话、企业内部App移动工作台(智能办公电话)、CRM系统集成电话呼叫功能、智能硬件(如:智能门禁设备、电梯救援设备、智能陪伴机器人)对接PSTN通话等落点电话场景。
qzlink.com
2020/08/04
8.2K0
如何实现WebRTC协议与SIP协议互通
WebRTC学习笔记——建立连接
1.WebRTC简介 WebRTC是一个开源的项目,可以提供浏览器,手机应用之间实时通信能力。 同时,这一功能已经内置于现代浏览器中,所以它可以做到无须借助第三方软件或插件便可以在开发网络中传输高质量
IMWeb前端团队
2017/12/29
2K0
WebRTC学习笔记——建立连接
WebRTC学习笔记——建立连接
WebRTC是一个开源的项目,可以提供浏览器,手机应用之间实时通信能力。 同时,这一功能已经内置于现代浏览器中,所以它可以做到无须借助第三方软件或插件便可以在开发网络中传输高质量音视频流。
IMWeb前端团队
2019/12/04
8460
SIP协议笔记
SIP(SessionInitiationProtocol,会话发起协议)是由IETF提出的IP电话信令协议.它的主要目的是为了解决IP网中的信令控制,以及同软交换的通信,从而构成下一代的增值业务平台,对电信、银行、金融等行业提供更好的增值业务。
billchan
2018/08/11
6K0
SIP协议笔记
将SIP Trace放入日志文件(mod_logfile)
今天,看大家在QQ群中聊到不知道如何在FreeSWITCH中将SIP Trace的结果放入日志文件中。我便答应大家我今晚研究一下。 事情的起因是这样的。FreeSWITCH内置了SIP Trace,可以很方便的在控制台或fs_cli中抓到SIP消息,配合日志调试起来非常方便。以前我应该也讲过,在FreeSWITCH中开启SIP Trace的命令是: sofia global sip trace on 当然,也可以单独针对某个Profile开启或关闭日志,如: sofia profile internal siptrace on sofia profile internal siptrace off 问题时,开启日志后SIP消息只能在控制台上显示,但不会同时进入日志文件中,显然,如果想从日志文件中同时看到SIP就比较麻烦了。因而,便出现了今天的主题:如何将SIP Trace放入日志? 首先,我想,提到该问题的人可能一般的是Windows用户吧。因为一般来说,我在Mac上(或Linux)上,Shell足够好用,因而,可以毫不费力的在Shell窗口(即FreeSWITCH控制台上)中将带有SIP消息的日志一块Copy出来粘贴到其它文件中。但在Windows上就没有那么方便了,因为Windows的命令行窗口出奇的烂,从里面Copy个文字特别麻烦。而且,有很多人根本不知道如何Copy(虽然确实有办法可以做到)。因而,常见的做法是直接用QQ抓屏,但很显然,抓屏是有限制的,那就是,一屏能显示的信息实在是太短了,如果要抓到SIP消息,那简直是个累死人的活。 而且,在此我也想插一句,我在帮人看日志时是非常讨厌抓屏的。因为看起来其实不直观,而且,没法搜索,没法Copy,没法引用…,总之,不爽。可能光说不爽有人觉得我矫情,那就说一下为什么不爽吧。比如有人在QQ群中问了个问题,我问他打的是什么命令,它将他打的命令抓了个图片发到QQ群中,我一眼就发现他的命令该怎么改成正确的方式,只要我将它的命令复制一遍,改几个字即可,但是,由于他是抓屏,因此我没法修改... 言归正传,所以,特别是Windows用户,一般是到日志文件中去找到相应的日志再复制出来,并且,有时候他们也希望SIP Trace出来的消息也同时在日志文件里面。 当然,既然我答应大家研究,就一定要出结果的(为什么要研究呢?因为我一直不用,所以没试过)。通过研究我发现,写日志文件的功能是在mod_logfile中实现的。里面有这么一行配置: <map name="all" value="debug,info,notice,warning,err,crit,alert"/> 到这里科普一下。在FreeSWITCH中,日志是有级别的,一般来说就是上面列的一些级别。当然,上面没有包括一个特殊的级别,那就是 console 级别。而SIP Trace的消息正是在 console 级别的,因而,它只有控制台上显示,而不会在日志文件中显示。明白了这个道理,想办法将console级别的日志放入日志文件就简单了,修改配置如下: <map name="all" value="console,debug,info,notice,warning,err,crit,alert"/> 然后,重新加载模块即可: reload mod_logfile 再看SIP Trace的结果,都写到日志文件中去了,Bingo! 当然,任何事情并不只有一种办法,第二种办法是什么呢?留点引子,明天再讲。 既然今天说到mod_logfile,就索性把这一模块也讲了吧。其实,有了上面的,也没什么好讲的。mod_logfile的作用就是将系统日志写到日志文件中去,并有相应的参数配置文件的路径以及文件的最大长度。如果文件写到一定的大小,则会自动发生轮转(rotate),以防止在长期运行过程中产生巨大无比的日志文件。 ---------------------------------------- 题图:Log 来自 Google Log本来是「圆木」的意思,但我们这些程序员们都将Log译为「日志」。 ---------------------------------------- FreeSWITCH-CN是什么? FreeSWITCH-CN是FreeSWITCH中文社区,我们的官方网站是 http://www.freeswitch.org.cn 。FreeSWITCH-CN同时也是一个微信公共账号,可以通过点击本页最顶端的“FreeSWITCH中文社... ”,或在通迅录->订阅号中搜索“FreeSWITCH-CN”来订阅,也可以到官方网站上扫描二维码。当然,不管是新用户还是老用户,随时都可以输入m或1显示本账号的主菜单。 FreeSWITCH-
杜金房
2020/12/21
2.1K0
将Git与Github进行SSH连接
<!--more--> <a href="https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=112763915,265947675&fm=26&gp=0.jpg" class="highslide" onclick="return hs.expand(this,{slideshowGroup:'images'})"><img src="https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=112763915,265947675&fm=26&gp=0.jpg"></a> # Githu与Github 首先, - `Git`是一款免费、开源的分布式版本控制系统; - `Github`是用`Git`做版本控制的代码托管平台; 用一句话形容这二者的关系:Git是弓,你的代码是箭,Github是靶子。 Git是软件,它可在本地建立仓库,你写的代码的各个版本都可以存着 Github是网上仓库,你写的代码的各个版本都可以存着。 # 安装使用 ## 安装Git 1. 到[Git官网](https://git-scm.com/downloads)下载与你正在使用的操作系统(本文以`windows`为例)相对应的文件。一般地,选择`64-bit Git for Windows Setup`。 2. 安装时注意:勾选添加git到`环境变量`;在Windows Explorer Integration中勾选`Git Bash Here`。其余配置默认即可。 3. 安装完成后(可能需要**注销或重启**),在任意一个文件夹空白处右键,检查是否有`Git Bash Here`的选项。 ## 注册GitHub 到[GitHub官网](https://sqdxwz.com)注册一个账号。这里我以我的Github账号:`WangRongsheng` 为例进行演示。 ## 配置git与github关联 ### 设置邮箱和用户名 打开`Git Bash`(输入命令**均在Git Bash中进行**,以后不再声明),分别输入下列命令(输入一行命令后需要回车,以后不再声明): ```html git config --global user.name "WangRongsheng" git config --global user.email "603329354@qq.com" ``` 下面这一行设置可以增强输出命令的可读性: ```html git config --global color.ui auto ``` ### 用ssh生成公钥 输入: ```html ssh-keygen -t rsa -C "603329354@qq.com" ``` 回车之后会出现如下所示的输出,直接按回车即可: ```html Generating public/private rsa key pair. Enter file in which to save the key (/Users/your_user_directory/.ssh/id_rsa): (按回车键) Enter passphrase (empty for no passphrase): (按回车键) Enter same passphrase again: (按回车键) ``` 这样密钥文件就生成了,默认在用户目录下,如:`C:\User\xxx\.ssh\` 这个文件夹中。其中的xxx是你的windows用户名。 ### 将公钥添加到`github`中 1. 在`C:\user\xxx\.ssh\`文件夹中找到`id_rsa.pub`这个文件,用文本编辑器(如记事本)打开,复制里面的所有内容。 2. 登陆`github账号`,点击头像旁的`小三角`展开,点击`settings`-`SSH and GPG keys`-`New SSH key`,在`Title`中取一个名字(任意),`key`中粘贴你刚刚复制的内容。然后点击`Add SSH key`即可。 ### 测试是否关联成功 输入: ```html ssh -T git@github.com ``` 出现以下结果即为成功: ```html Hi WangRongsheng! You've successfully authenticated, but GitHub does not provide shell access. ```
王荣胜
2020/03/13
7000
SIP菜鸟如何学SIP
SIP是一个应用层的控制协议,可以用来建立、修改、和终止多媒体会话(或者会议)例如Internet电话。SIP在建立和维持终止多媒体会话协议上,支持5个方面:
杜金房
2022/12/12
2.9K0
SIP菜鸟如何学SIP
java实现sip(1)---sip介绍
比较详细的介绍请见sip协议官方文件https://www.rfc-editor.org/rfc/rfc3261.html 国内有一篇文章写得比较好适合新手查看https://blog.csdn.net/huangyifei_1111/article/details/122865544 这里简单介绍一下
东营浪人
2023/03/23
2.4K0
NAT Slipstreaming攻击使防火墙形同虚设
2020年10月31日安全研究员Samy Kamka发布了一种被称为NAT Slipstreaming的攻击颠覆了人们对防火墙中NAT安全性认知。
IRTeam-工业安全
2022/05/10
8370
NAT Slipstreaming攻击使防火墙形同虚设
WebRTC Insertable Stream 初探与 WebRTC"管道化"
在"WebRTC的现状与未来"(https://webrtchacks.com/webrtc-today-tomorrow-bernard-aboba-qa/)这篇文章中讲述了WebRTC要带来的一些新的特性, 这里我们重点探索一下WebRTC Insertable Streams。
刘连响
2022/03/30
2.6K0
基于声网的音视频SDK和FreeSWITCH开发WebRTC2SIP Gateway 方案和思路(一)
今年初接到一个项目任务,客户要求在自己的音视频平台系统中集成webrtc功能(原系统是基于SIP协议开发的,已经稳定运行多年,有很多客户)。在比对了多家RTC产品的效果后,。他们对声网音视频DEMO效果后非常满意,指定要求用声网的SD-RTN传输网络,全面改造客户端软件。据客户实测,在某些国家和地区,同样网络环境下比微信要好很多,比如在东非和中国之间语音通话,延迟很小、声音也更清晰。
qzlink.com
2020/07/01
3K0
从通信到AI FreeSWITCH与WebRTC
大家好,我是杜金房,此次分享和双向通讯服务器FreeSWITCH以及WebRTC有关。首先我会为大家简单介绍FreeSWITCH,鉴于FreeSWITCH主要用于通信领域,我也会介绍WebRTC并阐述FreeSWITCH与WebRTC的关系,同时结合FreeSWITCH的其他功能和使用场景与其功能以及所使用的多媒体库,进一步探索AI技术加持下FreeSWITCH的未来发展。
LiveVideoStack
2019/07/01
4.8K1
从通信到AI FreeSWITCH与WebRTC
mod_verto
前一阵,我们讲了mod_rtc。mod_rtc是一个纯媒体的模块,目的是为了支持WebRTC。然而,任何的通信都需要一定的信令支持,mod_verto就是配合mod_rtc的信令模块。 众所周知,WebRTC从诞生的第一天起就只定义了媒体的交互和传输,而把信令留给大家自己实现,以便有更大的自由度。最初,大部分WebRTC的例子都是基于GAE的,但在电信的VoIP领域,SIP还是占统治地位的,因而,包括FreeSWITCH在内,又有一些SIP代理和软交换设备实现了配合WebRTC使用的SIP信令,这但是SIP over WebSocket。FreeSWITCH对SIP over WebSocket的支持是直接扩展了Sofia-SIP协议栈。 但无论如何,虽然SIP与传统的VoIP协议如H323相比,脱离了老式的电信信令思维,采用了类似HTTP协议的文本协议,但,它从电信领域诞生的基因决定了它还是很难融入互联网,退一步讲,人们还是认为SIP通信专业性太强了,SIP就是SIP,互联网就是互联网。 单从协议内容角度讲,SIP对于浏览器尤其是对于移动浏览器来说,还是有些庞大了。而基于文本的SIP协议解析起来对浏览器来说,即使不是一种负担,也不是非常的优雅。对浏览器来说,最适合的数据格式是JSON已是不争的事实。 我们很高兴地看到,FreeSWITCH团队开放了mod_verto。它采用了JSON及JSON-RPC相关的信令协议,非常优雅的与mod_rtc相配合,将热闹的互连网与冷冰冰的SIP通信结合在了一起。也就是说,FreeSWITCH不再是互联网从业者眼里专业的运动员,而跟MySQL,Apache一样,可以实实在在的融入互联网了。 在在WebRTC设计之初,就非常重视安全问题,因而,一切都是加密的,不管是在媒体层还是在信令层,这是个好事,唯一比较麻烦的是,对于没有耐心的实践者来说,你在跑通mod_verto前要设置好你的Web服务器以及证书。 笔者经过测试,顺利的跑通了该模块。有兴趣的读者也可以试试啊,步骤有些复杂,点击下面的「阅读原文」原文可以看到详细的Wiki说明。 https://confluence.freeswitch.org/display/FREESWITCH/mod_verto
杜金房
2020/12/21
1.2K0
SIP代理、SIP集群和媒体集群调研
最近在调研SIP代理、SIP集群和媒体集群的能力,了解到OV500这个项目,对理解Freeswitch的能力,Kamailio作为信令代理的配置等实现的学习还是很有帮助的,这个GITHUB项目地址:OV500 , 架构模型如图:
呱牛笔记
2023/05/02
4.2K0
SIP代理、SIP集群和媒体集群调研
OWT基于TCP以及QUIC的级联方案
 点击上方“LiveVideoStack”关注我们 ▲扫描图中二维码或点击阅读原文▲ 了解音视频技术大会更多信息   //   编者按:随着音视频领域业务的蓬勃发展,越来越多的业务场景需要大规模甚至超大规模部署支撑。不同的用户分布在不同的区域,甚至出现跨国或跨省传输,在这种情况下OWT如何高效分发媒体数据,实现集群内以及跨集群的高质量扩散?LiveVideoStackCon2022上海站大会我们邀请到了英特尔 高级工程师 吴秋娇详细介绍了OWT基于TCP的集群内媒体分发,以及基于QUIC的跨集群媒体级联。
LiveVideoStack
2023/04/04
9760
OWT基于TCP以及QUIC的级联方案
JavaScript 是如何工作的:WebRTC 和对等网络的机制!
WebRTC,名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的API。
前端小智@大迁世界
2019/03/15
2.4K0
JavaScript 是如何工作的:WebRTC 和对等网络的机制!
WebRTC 成为 W3C 和 IETF 正式标准
WebRTC 由用于 Web 实时通信的 JavaScript API 和一组通信协议构成,支持网络上的任何已连接设备成为 Web 上潜在的通信端点。WebRTC 已成为线上通信及协作服务的基石。
Tinywan
2021/02/25
1.2K0
WebRTC 成为 W3C 和 IETF 正式标准
SBC,sip介绍[通俗易懂]
1 SBC:IMS网络边缘用于实现IP接入,互通和安全保护的网元,存在于接入网络与IMS网络之间或不同IMS网络之间,是用户接入IMS的入口点。SBC作为B2BUA将用户和IMS核心网进行隔离。
全栈程序员站长
2022/10/03
2.1K0
SBC,sip介绍[通俗易懂]
结合 AppRTC 源码分析 WebRTC 建立连接的过程
这两年来,WebRTC 越来越多地出现在人们的视野,在在线教育,在线医疗等领域的应用也越来越多。大家研究 WebRTC 的热情也越来越高涨,不过 WebRTC 的入门门槛个人觉得稍微有些高,特别是各种概念,比如 NAT 穿越,ICE,STUN,TURN,Signaling server等等,刚开始可能会觉得比较繁杂,不易理解。然后建立连接的整个过程,异步调用比较多,很容易搞混。那么这篇文章里我们会根据 WebRTC 的官方 demo AppRTC 的 iOS 版本来分析一下 WebRTC 从进入房间到建立音视频连接的过程,为了便于了解,我们本次的讨论不涉及到底层的具体实现。
JoeyBlue
2021/09/07
1.7K0
如何构建分布式SFU/MCU媒体服务器?
大家好,我是来自英特尔上海研发中心的段先德。从2014年开始主要做基于WebRTC的实时通信和统一通信解决方案。对于实时通讯来说WebRTC技术是一个革命性的存在。2014年4月英特尔发布了Intel® Collaboration Suite for WebRTC,这是一款可免费使用的包含服务器侧程序和客户端SDK的完整解决方案。经过多年的迭代更新,当前最新发布的是4.2版本。
LiveVideoStack
2019/08/01
3K0
如何构建分布式SFU/MCU媒体服务器?

相似问题

SIP与Webrtc集成iOS

26

可以将简单的webrtc流连接到sip webrtc客户端吗?

15

Sip到WebRTC呼叫

25

webrtc与SIP通信,如何获取流、冰?

11

我是否需要SIP + WebRTC

127
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文