2010-02-15 5 views
0

SDP 메시지를 구성하는 방법에 대한 좋은 자습서를 가르쳐 줄 수 있는지 궁금합니다.SDP 메시지 구성?

필자는 기본 사항을 읽고 매개 변수를 구성하고 이해할 수 있지만 작동시키지 못하는 것 같습니다.

내가 받아 들일 수없는 답장 또는 전혀 답장을받지 못한다. 이것은 100 회 시도하고 180 회 울린 후의 것이다.

내 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 클라이언트에서 "오디오 장치 오류"를 얻습니다.

누구나 아이디어가 있으십니까?

+1

406 불가 "의 VoIP SIP에 SDP 작업하는 호출은"_supposed_입니다 "Accept 헤더에있는 것이 마음에 들지 않습니다." 하지만 적어도 100 & 180 응답을 받는다는 것은 네트워크 연결이 대부분 OK라는 것을 의미합니다. –

+0

문제는 PC 클라이언트에서 실행할 오디오 장치가 없다는 것을 의미합니다. –

답변

2

문제 일 수 있습니다. "a = sendrecv"다음에 줄 바꿈을 잊어 버린 것 같습니다. :-)

어쨌든 다음은 조언입니다. 테스트 목적으로 프로토콜의 일부를 작성하거나 작성하는 대신 도구를 사용하는 것이 좋습니다. 이 목적으로 sipp을 사용할 수 있으므로 SIP 네트워크를 테스트하는 데 훌륭한 도구입니다. 그 외에는 작동하는 두 개의 SIP 장치 사이의 네트워크 트래픽을 감지하고 트래픽과 다른 점을 확인할 수 있습니다.

편집 :

내가 전에 이것을 놓친

: 세션 설명이 방법으로 무효로 당신은 a=fmtp:97 mode=20을 생략한다 : 당신은 미디어 라인에 언급 된 코덱의 형식 매개 변수 속성을 사용할 수 있습니다. 코덱은 페이로드 유형 번호 (0 = PCMU, 8 = PCMA, 18 = G723, ...)를 통해 식별됩니다. 일부 코덱에는 공식적으로 할당 된 번호가 없기 때문에 동적 범위 96-127을 사용해야합니다. 사용자 에이전트는 rtpmap 속성을 통해이 범위의 번호를 할당 할 수 있습니다. 따라서 97을 의미하는 코덱을 지정하지 않으면 다른 사용자 에이전트가 형식 매개 변수를 적용해야하는 코덱을 알 수있는 방법이 없습니다.

+0

고마워요. 문제는 아니 었습니다. 네트워크 트래픽이 있고 모든 것이 내 SDP 데이터와 같아서 뭐가 잘못 되었나요? –

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는 = 라인 RFC 4566에서 사양 당 잘못된 것입니다 : 작업

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

얻기 VoIP를 RFC의 또는 요리 책의 설명이 의미하는 것처럼 간단하지 않습니다. ...

1

SDP (Session Description Protocol)를 다루는 좋은 기사를 찾았습니다.또한 Ozeki VoIP SIP SDK라고하는 SDK와 관계가 있습니다. 이러한 것들을 결합하면 예를 들어 소프트 폰을 만들 수 있습니다.

SDP에 대한 전반적인 간략한 내용도 있습니다.

VoIP에서 SDP로 작업하기 SIP 통화는 자신의 소프트 폰이나 웹폰 응용 프로그램 또는 원하는 것을 개발하려는 사람들에게 흥미로운 주제입니다.

SDP는 세션 알림, 세션 초대 및 매개 변수 협상을 위해 멀티미디어 통신 세션을 설명합니다.

어깨의 부채로 인해 SDK 사용에 많은 부담이 따르고 높은 호환성이 보장됩니다. 당신이 구글 경우 당신이 언급 한 글을 살펴 수 있습니다 자신의 애플리케이션을 구축 할 수있는 SDK와 관련하여 SDP에 대한 자세한 내용은

: 여기

+0

불행히도 Ozeki SDK는 .NET 플랫폼 용으로 보이므로 Java 기반 솔루션에서는 쉽게 사용할 수 없습니다 . 답안에서 언급 한 기사에 대한 링크를 제공해주십시오. –