2014-09-24 42 views
0

我建立一個android應用程序,應該能夠與建立在libjingle上的另一個客戶端進行音頻通信。LibJingle在Android上的SRTP錯誤CreateAnswer

我試圖做的第一件事是建立「其他」客戶端和我的Android應用程序之間的調用。我們使用XMPP作爲信令服務。

所以在此之後:

peerConnectiobObj.setRemoteDescription(sdp) 

我得到的successcallback(所以我想遠程描述是罰款?) 然後根據是什麼,我想我已經找到了它的時間爲我創造我的答案。

@Override 
public void onCreateSuccess(SessionDescription sessionDescription) 
{ 
    peerConnectiobObj.createAnswer(theSDPobserver, MediaConstraints); 
} 

但我錯誤回調:(

@Override 
public void onSetFailure(String s) 
{ 

} 

其中s告訴我

Failed to set local answer sdp: Session error code: ERROR_CONTENT. Session error description: Failed to setup SRTP filter.. 

林感覺最終丟了,我甚至不知道這意味着什麼。如果任何人都可以點我在正確的方向我會是一個更快樂的開發者

其實我一般我覺得有點失落當談到這個.. :)

編輯:

這是我的本地SDP看起來,當我到達OnSetFailure(字符串s)

v=0 
o=- 8493684831531207397 2 IN IP4 127.0.0.1 
s=- 
t=0 0 
a=group:BUNDLE audio 
a=msid-semantic: WMS 
m=audio 1 RTP/SAVPF 0 
c=IN IP4 0.0.0.0 
a=rtcp:1 IN IP4 0.0.0.0 
a=ice-ufrag:kOkIsQjMk2B0a9U4 
a=ice-pwd:tofHiOCYA8vxc6RhGijvAJhD 
a=mid:audio 
a=recvonly 
a=rtcp-mux 
a=crypto:0 AES_CM_128_HMAC_SHA1_80 inline:CuhhoTjgAvZWACKU0enZ6JkBOOtm1XcILVU1kgha 
a=rtpmap:0 PCMU/8000 

編輯,如: 我更新了我設的Libjingle .jar和.so,與當前主幹重新編譯。 不是可以成功createAnswer()

但是當我做

setLocalDescription() 

我得到的公共無效onSetFailure(String s)將CB

這是我的本地SDP當我到達那個狀態:

v=0 
o=- 5609339699751423572 2 IN IP4 127.0.0.1 
s=- 
t=0 0 
a=group:BUNDLE audio 
a=msid-semantic: WMS fAy0FNrYIDVfeRwX5X0IK5TOCVTNJOXt4Cdb 
m=audio 1 RTP/SAVPF 0 
c=IN IP4 0.0.0.0 
a=rtcp:1 IN IP4 0.0.0.0 
a=ice-ufrag:HvkTUFYLQHFQYV1a 
a=ice-pwd:OtBToOqg56IROXkI1zpljupo 
a=mid:audio 
a=sendrecv 
a=rtcp-mux 
a=crypto:0 AES_CM_128_HMAC_SHA1_80 inline:hMJUMLPuM1zYuIaUCEjr46aMsMwfc+MHjBM6PDES 
a=rtpmap:0 PCMU/8000 
a=ssrc:4099416672 cname:DO5g7daVh6dqHm/E 
a=ssrc:4099416672 msid:fAy0FNrYIDVfeRwX5X0IK5TOCVTNJOXt4Cdb fAy0FNrYIDVfeRwX5X0IK5TOCVTNJOXt4Cdb00 
a=ssrc:4099416672 mslabel:fAy0FNrYIDVfeRwX5X0IK5TOCVTNJOXt4Cdb 
a=ssrc:4099416672 label:fAy0FNrYIDVfeRwX5X0IK5TOCVTNJOXt4Cdb00 

有沒有人知道最新的錯嗎? :(

+0

你當地的SDP是什麼樣的?你可以發佈嗎? – 2014-09-24 18:18:21

+0

我認爲createanswer會創建我的本地sdp。所以也許我應該在創建答案之前自己設置本地sdp? – PvPlatten 2014-09-24 18:22:03

+0

不,請設置遠程sdp,然後創建您的答案sdp,然後將剛剛在本地創建的sdp(答案)設置爲本地sdp。所有這些都必須在冰球候選人交換之前完成。 – 2014-09-24 19:34:30

回答

0

你SDP是不完整的。應該有幾個冰候選人,其將被用於建立連接時,您應該添加冰塊考生到您等連接對象這樣的方式:。

@Override 
public void onIceCandidate(IceCandidate iceCandidate) { 
    peerConnection.addIceCandidate(iceCandidate); 
} 

併發送至SDP當PeerConnection.IceGatheringState在onIceGatheringChange方法成爲完成後,其他客戶端這不是唯一的方法,但它的做工和非常簡單的完成SDP的下面的例子是:

offer=v=0 
o=- 8080295062834070855 2 IN IP4 127.0.0.1 
s=- 
t=0 0 
a=group:BUNDLE audio video 
a=msid-semantic: WMS ARDAMS 
m=audio 13491 RTP/SAVPF 111 103 9 102 0 8 106 105 13 127 126 
c=IN IP4 54.77.231.253 
a=rtcp:18373 IN IP4 54.77.231.253 
a=candidate:1858001140 1 udp 2122260223 10.215.226.16 40647 typ host generation 0 
a=candidate:1858001140 2 udp 2122260222 10.215.226.16 51975 typ host generation 0 
a=candidate:540877828 1 tcp 1518280447 10.215.226.16 54789 typ host tcptype passive generation 0 
a=candidate:540877828 2 tcp 1518280446 10.215.226.16 60723 typ host tcptype passive generation 0 
a=candidate:4025933376 1 udp 1686052607 217.118.93.137 49688 typ srflx raddr 10.215.226.16 rport 40647 generation 0 
a=candidate:4025933376 2 udp 1686052606 217.118.93.137 49689 typ srflx raddr 10.215.226.16 rport 51975 generation 0 
a=candidate:4025933376 2 udp 1686052606 217.118.93.137 53707 typ srflx raddr 10.215.226.16 rport 51975 generation 0 
a=candidate:4025933376 1 udp 1686052607 217.118.93.137 53709 typ srflx raddr 10.215.226.16 rport 40647 generation 0 
a=candidate:1718996300 1 udp 41885439 54.77.231.253 13491 typ relay raddr 217.118.93.137 rport 53710 generation 0 
a=candidate:1718996300 2 udp 41885438 54.77.231.253 18373 typ relay raddr 217.118.93.137 rport 53711 generation 0 
a=ice-ufrag:vveSvzaR39lenaX1 
a=ice-pwd:g7ouF2sZNGOh5Y7O42HaV+a2 
a=fingerprint:sha-256 7D:E2:C3:49:0E:33:81:E8:1A:24:44:A2:FB:D9:E0:D9:BA:2A:40:B0:9E:BA:B1:BE:ED:EF:22:E0:F6:54:39:F3 
a=setup:actpass 
a=mid:audio 
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level 
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time 
a=sendrecv 
a=rtcp-mux 
a=rtpmap:111 opus/48000/2 
a=fmtp:111 minptime=10; useinbandfec=1 
a=rtpmap:103 ISAC/16000 
a=rtpmap:9 G722/8000 
a=rtpmap:102 ILBC/8000 
a=rtpmap:0 PCMU/8000 
a=rtpmap:8 PCMA/8000 
a=rtpmap:106 CN/32000 
a=rtpmap:105 CN/16000 
a=rtpmap:13 CN/8000 
a=rtpmap:127 red/8000 
a=rtpmap:126 telephone-event/8000 
a=maxptime:60 
a=ssrc:3583862867 cname:ily01dbTSMDARdSy 
a=ssrc:3583862867 msid:ARDAMS ARDAMSa0 
a=ssrc:3583862867 mslabel:ARDAMS 
a=ssrc:3583862867 label:ARDAMSa0 
m=video 16750 RTP/SAVPF 100 116 117 96 
c=IN IP4 54.77.231.253 
a=rtcp:10591 IN IP4 54.77.231.253 
a=candidate:1858001140 1 udp 2122260223 10.215.226.16 36169 typ host generation 0 
a=candidate:1858001140 2 udp 2122260222 10.215.226.16 55549 typ host generation 0 
a=candidate:540877828 1 tcp 1518280447 10.215.226.16 33189 typ host tcptype passive generation 0 
a=candidate:540877828 2 tcp 1518280446 10.215.226.16 40769 typ host tcptype passive generation 0 
a=candidate:4025933376 1 udp 1686052607 217.118.93.137 49687 typ srflx raddr 10.215.226.16 rport 36169 generation 0 
a=candidate:4025933376 2 udp 1686052606 217.118.93.137 49690 typ srflx raddr 10.215.226.16 rport 55549 generation 0 
a=candidate:4025933376 1 udp 1686052607 217.118.93.137 53714 typ srflx raddr 10.215.226.16 rport 36169 generation 0 
a=candidate:4025933376 2 udp 1686052606 217.118.93.137 53708 typ srflx raddr 10.215.226.16 rport 55549 generation 0 
a=candidate:1718996300 1 udp 41885439 54.77.231.253 16750 typ relay raddr 217.118.93.137 rport 53713 generation 0 
a=candidate:1718996300 2 udp 41885438 54.77.231.253 10591 typ relay raddr 217.118.93.137 rport 53712 generation 0 
a=ice-ufrag:vveSvzaR39lenaX1 
a=ice-pwd:g7ouF2sZNGOh5Y7O42HaV+a2 
a=fingerprint:sha-256 7D:E2:C3:49:0E:33:81:E8:1A:24:44:A2:FB:D9:E0:D9:BA:2A:40:B0:9E:BA:B1:BE:ED:EF:22:E0:F6:54:39:F3 
a=setup:actpass 
a=mid:video 
a=extmap:2 urn:ietf:params:rtp-hdrext:toffset 
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time 
a=extmap:4 urn:3gpp:video-orientation 
a=sendrecv 
a=rtcp-mux 
a=rtpmap:100 VP8/90000 
a=rtcp-fb:100 ccm fir 
a=rtcp-fb:100 nack 
a=rtcp-fb:100 nack pli 
a=rtcp-fb:100 goog-remb 
a=rtpmap:116 red/90000 
a=rtpmap:117 ulpfec/90000 
a=rtpmap:96 rtx/90000 
a=fmtp:96 apt=100 
a=ssrc-group:FID 382374264 1436972716 
a=ssrc:382374264 cname:ily01dbTSMDARdSy 
a=ssrc:382374264 msid:ARDAMS ARDAMSv0 
a=ssrc:382374264 mslabel:ARDAMS 
a=ssrc:382374264 label:ARDAMSv0 
a=ssrc:1436972716 cname:ily01dbTSMDARdSy 
a=ssrc:1436972716 msid:ARDAMS ARDAMSv0 
a=ssrc:1436972716 mslabel:ARDAMS 
a=ssrc:1436972716 label:ARDAMSv0 

希望這有助於!

0

嘗試改變約束在創建等連接到

MediaConstraints pcConstraints =新MediaConstraints(); (新的KeyValuePair(「DtlsSrtpKeyAgreement」,「true」)); (新的KeyValuePair(「RtpDataChannels」,「true」)); peerConnectionFactory.createPeerConnection(config,pcConstraints,new PcObserver());