首先,對不起我的語法,我不是原生的!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!!!
謝謝,我明白你的答案,但錯誤發生在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
@heinekenB ..作爲一個實驗,您可以將RTSP/1.0字符串硬編碼到您的'snprintf'語句中,而不是使用'RTSP_VERSION'。這有幫助嗎? – Ganesh
感謝Ganesh,硬編碼是我之前嘗試過的很多方法中的第一種,但沒有什麼不同。對於新信息,我使用Nexus 4(4.3),它在M4上表示__RTSP/1.0 400 Bad Request__,但繼續向我發送M5。但是,它要求在PLAY命令後觸發TEARDOWN? – heinekenB