2013-06-11 2 views
1

XMPP 서버에 연결된 다른 WebRTC 지원 장치에 음성/영상 전화를 허용하는 Android 기기 용 응용 프로그램을 개발하고 있습니다. 나는 이미 안드로이드 장치 간의 음성/영상 채팅에 응용 프로그램을 성공적으로 사용하고 있으며 이제는 WebRTC 지원 브라우저로 그 기능을 확장하려고합니다. 브라우저 음성/화상 통화에 브라우저를 성공적으로 사용했지만 시스템은 SDP 프로토콜에서 작동하지만 내가 만든 Android 애플리케이션은 Jingle 프로토콜에서 작동합니다. 이전에 해본 적이있는 것처럼 SDP 프로토콜에서 작동하도록 Android 애플리케이션을 다시 작성할 수 있다는 것을 알고 있습니다. 그러나, 내가 만든 응용 프로그램은 LibJingle 내의 Jingle 기반 코드에 크게 의존하는 많은 기능을 개발 했으므로 Android 장치에서 Jingle 프로토콜을 계속 사용하고 싶습니다.Chrome/Android Jingle-SDP ICE 연결 실패

이미 완료된 SDP/Jingle 번역기 설치 (특히 Phono library) 저는 현재 브라우저 클라이언트와 음성/영상 통화의 미디어 측면을 협상하는 Android 기기를 보유하고 있습니다. 그러나 한 쪽이 다른 쪽과 연결을 시도하는 동안 상황이 실패한 것처럼 보입니다. 일부는 ICE/JINGLE 번역에 오류가 있다고 생각합니다. "onicecandidate"를 통해 브라우저에 전달 된 얼음 후보가 사용자 이름과 암호 정보를 포함하지 않는다는 것을 알았습니다. 브라우저 클라이언트가 생성 한 원본 SDP 제안의 사용자 이름과 암호 정보를 적절한 얼음 후보 (음성 대 비디오)에 복사하려고 시도했지만 성공하지 못했습니다. 나는 또한 전송 단에서 어떤 사용자 이름과 암호 정보도 포함시키지 않으려 고 시도했지만 그 역시 아무 것도 산출하지 못했다.

전체 통신 중 브라우저 측면에서 wireshark를 실행했으며 Android 디바이스가 마침내 "세션 종료"신호를 보낼 때까지 브라우저와 Android 디바이스 간의 바인딩 오류를 계속 보았습니다.

STUN 158 바인딩 요청 사용자 : r8bGP7y5LklOOKEb : 특히, 나는 다음과 같은보고하고 IjgBbKgXQe9V8Pur을

부실 자격 증명 사용자 : r8bGP7y5LklOOKEb : IjgBbKgXQe9V8PurSTUN 130 바인딩 오류 응답 오류 코드 : 274 (알 수없는 오류 코드)

는 결국 오류 응답 게재 중지하고 다음 시작과 같은 메시지가 나타나지 :

심지어 나는 경우

ICMP (186) 연결할 수없는 대상 (포트에 연결할 수)

난 여전히 협상의 ICE/운송 부분에 아주 새로운 오전, 그래서 Wireshark와 로그의 관련 인 경우에 나는 확실하지 않다, 또는 문제를 올바르게 진단하십시오.

내가 잘못하고있는 사람이 누구인지 알고 있습니까? 또는 SDP 기반 클라이언트와 Jingle 기반 클라이언트가 작동하는 데 어떤 경험이 있습니까?

ICE 번역에서 내가하고있는 일을 명확히하기.

SDP 후보 :

A = 후보 : 파운데이션] 컴포넌트 ID [전송 유형 [순위] [연결 주소] [포트] 후보 입력] [이름] [암호] 세대]

징글 후보 :

<candidate component="[comp]" name="[name]" address="[ip]" port="[port]" 
protocol="[proto]" username="[uname]" password="[pass]" preference="[pref]" 
generation="[gen]"/> 

SDP에 딸랑 딸랑에서 가고, 나는 다음과 같은 매핑을 사용

foundation = randomly generated number 
component-id = comp 
transport type = udp 
priority = pref * 10000 
connection address = ip 
port = port 
candidate type = typ host 
username = uname 
password = pass 
sdpMLineIndex = 0 if audio, 1 if video 
sdpMid = audio/video 

징글에 SDP에서 갈 때, 나는 다음과 같은 매핑을 사용

comp = component-id 
name = event.candidate.sdpMid (with the adjustment of rtp and rtcp based on 
     component value) 
ip = connection address 
port = port 
proto = transport type 
uname = varies from being empty to being the respective one generated in the 
     original SDP media information 
pass = varies from being empty to being the respective one generated in the 
     original SDP media information 
pref = 0.99 
gen = 0 

내가 크롬에서 점점 오전 ICE 후보의 예 :

a=candidate:3376904655 2 udp 2113937151 192.168.1.144 46794 typ host generation 0 
a=candidate:1208975227 1 udp 1845501695 xxx.xxx.xxx.xxx 46794 typ srflx raddr 192.168.1.144 rport 46794 generation 0 

얼음의 예 징글에서 얻는 후보자 :

<candidate name="video_rtp" address="xxx.xxx.xxx.xxx" port="37275" preference="0.99" username="4XqIQDW4n9lJrIOM" protocol="udp" generation="0" password="F0Vc9tWo4S2/VhleJ/BdNOId" type="local" network="wlan0"/> 
<candidate name="video_rtp" address="xxx.xxx.xxx.xxx" port="54429" preference="0.86" username="0ftgSUZ0qRFXlMh5" protocol="udp" generation="0" password="lIyHJZuZt8L/wIZnnqfQfRED" type="stun" network="wlan0"/> 

답변