1

我是 sip/sdp 世界的新手。
根据我对 SDP 协议的理解,如果我们定义 a=sendonly 从 sip 服务器到客户端软电话,软电话应该打开一个 RTP 会话进行监听,但它不应该向目的地发送任何 RTP 数据包。我对么?

就我而言,我听不到任何声音进来,并且有一个 RTP 流可以上传音频。注意:我使用的是多播地址。

这是一个 SIP/SDP 转储(从服务器到客户端软电话):

    SIP/2.0 200 正常
    通过:SIP/2.0/UDP 192.168.8.219:5060;branch=z9hG4bK-d8754z-b394381274917501-1---d8754z-;rport=5060
    来自:;tag=d67855ee
    收件人:;tag=KQQHgQ93Sjg1F
    呼叫 ID:YTExMzkwZDdhMGM1NTJmMDJlMGFiYjgxMGI1ZDNmMDI。
    CSeq: 2 邀请
    接触:
    用户代理:FreeSWITCH-mod_sofia/1.2.0-rc2+git~20120623T054003Z~65b2f2d2e7+unclean~20120623T083401Z
    接受:申请/sdp
    允许:邀请、确认、再见、取消、选项、消息、更新、信息、注册、参考、通知、发布、订阅
    支持:定时器、前置条件、路径、替换
    允许事件:talk、hold、presence、dialog、line-seize、call-info、sla、include-session-description、presence.winfo、message-summary、refer
    内容类型:应用程序/sdp
    内容处置:会话
    内容长度:265

    v=0
    o=FreeSWITCH 1340907341 1340907343 IN IP4 224.168.168.168
    s=自由开关
    c=IN IP4 224.168.168.168
    t=0 0
    a=只发送
    m=音频 34567 RTP/AVP 0 101
    a=rtpmap:0 PCMU/8000
    a=rtpmap:101 电话事件/8000
    a=fmtp:101 0-16
    a=silenceSupp:off - - - -
    a=ptime:20

我使用另一个软件电话在该地址和端口上多播声音(通过wireshark验证)。为什么我听不到声音?

顺便说一句,我使用的是 xlite 软件电话,服务器是 freeswitch。

4

2 回答 2

5

a=sendonly正如您所怀疑的那样,是单向流。服务器说它会发送数据,不会接收数据,所以客户端必须打开一个监听端口。你在做正确的事。

如果您没有收到音频,可能是时候拿出像Wireshark这样的分析工具来查看服务器是否真的在发送任何 RTP 数据。

于 2012-06-29T20:51:30.520 回答
1

您为此通信配置多播地址是否有特定原因?

多播交付取决于您的网络如何为此做好准备。此外,如果您的本地以太网交换机配置为使用 IGMP Snooping,它们将不会传递任何多播流量,除非有来自客户端的显式 IGMP 加入消息。此外,客户端应该具有多播功能,以便能够开始接收特定多播组中的多播流量。

于 2012-06-30T18:07:04.950 回答