0

SDP メッセージの作成方法に関する優れたチュートリアルを誰かに教えてもらえないだろうかと思っていました。

私は基本を読んで、パラメータを構築して理解することができますが、それを機能させることができないようです.

ここで受け入れられない応答を受け取るか、まったく応答がありません。これは、100 Trying と 180 ringing back を取得した後です。

したがって、SIP は機能しますが、SDP データが気に入りません。

現在、次のように構築されています。

String sdpData = "v=0\r\n"
            + "o=- 019078020 0"
            + " IN IP4  sip.ciceronetworks.com\r\n" + "s=MySession\r\n"
            + "c=IN IP4  sip.ciceronetworks.com\r\n"
            + "t=0 0\r\n" + "m=audio 6002 RTP/AVP 0\r\n"
            + "a=sendrecv\r\n" + "a=rtpmap:0 PCMU/8000\r\n" + "a=ptime:20\r\n"+ "a=fmtp:97 mode=20\r\n";


    byte[] contents = sdpData.getBytes(); 

    request.setContent(contents, contentTypeHeader); 

そして、そのように100を試してから180の呼び出し音を鳴らしますが、相手側で通話を受け入れると、何も返されません。クラッシュしたようです。また、鳴らそうとしているPCクライアントで「オーディオデバイスエラー」が発生します.

誰でもアイデアはありますか?

4

3 に答える 3

1

パプリカは正しいです:a = fmtp:97 mode = 20は単に間違っています(そしてそれはiLBCコーデックオファーの一部のように見えます)。あなたはコーデック97を提供しませんでした、あなたはコーデック0(PCMU)を提供しました。

a = fmtp:97はあなたを傷つけるべきではないことに注意してください、それはただ偽物です。

最も可能性の高い問題は、あなたがsip.ciceronetworks.comではないことです。つまり、c =行(およびm =行)が「メディアをsip.ciceronetworks.comのポート6002に送信する」と言っていました。PCのIPアドレスがsip.ciceronetworks.comと同じではないか、ファイアウォール/NATが相手側にあると思われます。

それはおそらくあなたの問題ではありませんが、o=行は仕様に従って間違っていますRFC4566から:

o=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address>

VoIPを機能させることは、RFCやクックブックの説明が示唆するほど単純ではありません。

于 2010-02-26T21:31:45.407 に答える
1

SDP (Session Description Protocol) を扱った良い記事を見つけました。また、Ozeki VoIP SIP SDK と呼ばれる SDK とも関係があります。これらを組み合わせると、たとえばソフトフォンを作成できます。

SDP についての全体的な概要もあります。

VoIP SIP 通話で SDP を使用することは、独自のソフトフォンまたは Web フォン アプリケーションを開発したい人、またはあなたが望むものを開発したい人にとって興味深いトピックです。

SDP は、セッション アナウンス、セッション招待、およびパラメータ ネゴシエーションを目的としたマルチメディア通信セッションを記述します。

SDK の使用には肩の荷がかかりますが、その柔軟性と高い互換性が保証されています。

独自のアプリケーションを構築するための SDK に関連する SDP の詳細については、次の記事を参照してください。

于 2012-04-17T06:42:05.920 に答える