是SDP sendonly意味着在这种情况下打开一个RTP音频流?

时间:2012-06-29 05:09:50

标签: sip sdp freeswitch

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

在我的情况下,我听不到任何声音,并且有一个RTP流来上传音频。注意:我正在使用多播地址。

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


    SIP/2.0 200 OK
    Via: SIP/2.0/UDP 192.168.8.219:5060;branch=z9hG4bK-d8754z-b394381274917501-1---d8754z-;rport=5060
    From: ;tag=d67855ee
    To: ;tag=KQQHgQ93Sjg1F
    Call-ID: YTExMzkwZDdhMGM1NTJmMDJlMGFiYjgxMGI1ZDNmMDI.
    CSeq: 2 INVITE
    Contact: 
    User-Agent: FreeSWITCH-mod_sofia/1.2.0-rc2+git~20120623T054003Z~65b2f2d2e7+unclean~20120623T083401Z
    Accept: application/sdp
    Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, UPDATE, INFO, REGISTER, REFER, NOTIFY, PUBLISH, SUBSCRIBE
    Supported: timer, precondition, path, replaces
    Allow-Events: talk, hold, presence, dialog, line-seize, call-info, sla, include-session-description, presence.winfo, message-summary, refer
    Content-Type: application/sdp
    Content-Disposition: session
    Content-Length: 265

    v=0
    o=FreeSWITCH 1340907341 1340907343 IN IP4 224.168.168.168
    s=FreeSWITCH
    c=IN IP4 224.168.168.168
    t=0 0
    a=sendonly
    m=audio 34567 RTP/AVP 0 101
    a=rtpmap:0 PCMU/8000
    a=rtpmap:101 telephone-event/8000
    a=fmtp:101 0-16
    a=silenceSupp:off - - - -
    a=ptime:20

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

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

2 个答案:

答案 0 :(得分:5)

正如您所怀疑的那样,

a=sendonly是一个单向流。服务器说它将发送数据而不会接收数据,因此客户端必须打开一个监听端口。你正在做正确的事。

如果您没有收到音频,可能需要赶快运行像Wireshark这样的分析工具来查看服务器是否实际发送了任何RTP数据。

答案 1 :(得分:0)

是否有为此通信配置多播地址的具体原因?

多播传送取决于您的网络如何为此做好准备。此外,如果本地以太网交换机配置为IGMP侦听,则除非客户端显示明确的IGMP加入消息,否则它们不会传递任何多播流量。此外,客户端应具有多播功能,以便能够开始接收特定多播组中的多播流量。