2014-07-08 52 views
1

首先,對不起我的語法,我不是原生的!Miracast與Nexus 10(stagefright 1.2):505不支持RTSP版本

我嘗試在接收設備上開發Miracast應用程序。這是用一些Android手機(LG G,華碩...)完成的,它不基於像Nexus 10這樣的Stagefright(也是Nexus 4,HTC One ...)。

當我嘗試建立WFD會話時,Nexus 10會在我回復消息M3後說:「不支持RTSP/1.0 505 RTSP版本」。我GOOGLE了,知道問題可能源設備無法在消息響應中找到「RTSP/1.0」。我定義了RTSP_VERSION並將其用於所有消息(包括M1和M2,但仍然可以)。

#define RTSP_VERSION "RTSP/1.0" 

問題是:爲什麼手機回覆我那樣(錯誤505)?有什麼建議可以解決這個問題?

的RTSP消息日誌的樣子:

!!! 
OPTIONS * RTSP/1.0 
Date: Wed, 02 Jul 2014 08:21:50 +0000 
Server: stagefright/1.2 (Linux;Android 4.4.4) 
CSeq: 1 
Require: org.wfa.wfd1.0 

!!! 
*** 
RTSP/1.0 200 OK 
CSeq: 1 
Public: org.wfa.wfd1.0, GET_PARAMETER, SET_PARAMETER 

*** 
*** 
OPTIONS * RTSP/1.0 
CSeq: 0 
Require: org.wfa.wfd1.0 

*** 
!!! 
RTSP/1.0 200 OK 
Date: Wed, 02 Jul 2014 08:21:50 +0000 
Server: stagefright/1.2 (Linux;Android 4.4.4) 
CSeq: 0 
Public: org.wfa.wfd1.0, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER 

!!! 
!!! 
GET_PARAMETER rtsp://localhost/wfd1.0 RTSP/1.0 
Date: Wed, 02 Jul 2014 08:21:50 +0000 
Server: stagefright/1.2 (Linux;Android 4.4.4) 
CSeq: 2 
Content-Type: text/parameters 
Content-Length: 83 

wfd_audio_codecs: 
wfd_video_formats: 
wfd_content_protection: 
wfd_client_rtp_ports 
*** 
RTSP/1.0 200 OK 
CSeq: 2 
Content-Type: text/parameters 
Content-Length: 210 

wfd_audio_codecs: AAC 00000001 00 
wfd_video_formats: 28 00 02 02 00000020 00000000 00000000 00 0000 0000 00 none none 
wfd_content_protection: none 
wfd_client_rtp_ports: RTP/AVP/UDP;unicast 6500 0 mode=play 
!!! 
SET_PARAMETER rtsp://localhost/wfd1.0 RTSP/1.0 
Date: Wed, 02 Jul 2014 08:21:50 +0000 
Server: stagefright/1.2 (Linux;Android 4.4.4) 
CSeq: 3 
Content-Type: text/parameters 
Content-Length: 246 

wfd_video_formats: 00 00 02 02 00000020 00000000 0000 
<missing log but don't care about that, it's fine> 
*** 
RTSP/1.0 200 OK 
CSeq: 3 

*** 
!!! 
RTSP/1.0 505 RTSP Version not supported 
Date: Wed, 02 Jul 2014 08:21:50 +0000 
Server: stagefright/1.2 (Linux;Android 4.4.4) 
CSeq: 3 

!!! 

##MIRA Break!!!! 

##MIRA EndClient!!! 

回答

0

您報告即將從onReceiveClientDatahere錯誤。由於控制來自這裏,顯然響應不是以RTSP開始。請檢查響應字符串中是否有拼寫錯誤或空格。

+0

謝謝,我明白你的答案,但錯誤發生在M4(CSeq:3),我的迴應字符串是:** snprintf(res,MESSAGE_BUFF_LEN,「%s 200 OK \ r \ nCSeq:%d \ r \ n \ r \ n「,RTSP_VERSION,CSeq_Source); ** 我的代碼可以與LG G,Zenfone,Sony Z ..等一些手機一起工作,沒有任何錯誤。 – heinekenB

+0

@heinekenB ..作爲一個實驗,您可以將RTSP/1.0字符串硬編碼到您的'snprintf'語句中,而不是使用'RTSP_VERSION'。這有幫助嗎? – Ganesh

+0

感謝Ganesh,硬編碼是我之前嘗試過的很多方法中的第一種,但沒有什麼不同。對於新信息,我使用Nexus 4(4.3),它在M4上表示__RTSP/1.0 400 Bad Request__,但繼續向我發送M5。但是,它要求在PLAY命令後觸發TEARDOWN? – heinekenB

0

即使我面臨同樣的問題。 這是因爲內容長度值錯誤。 嘗試用211而不是210來回答GET_PARAMETER請求