首先,对不起我的语法,我不是母语!
我正在尝试在 Sink 设备上开发 Miracast 应用程序。它是在一些 Android 手机(LG G、华硕...)上完成的,这些手机不像 Nexus 10(还有 Nexus 4、HTC One...)那样基于怯场。
当我尝试建立 WFD 会话时,Nexus 10 在我回复消息 M3 后显示:“RTSP/1.0 505 RTSP 版本不支持”。我用谷歌搜索并知道问题可能是源设备在消息响应中找不到“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!!!
即使我也面临着同样的问题。 这是因为内容长度值错误。 回复 GET_PARAMETER 请求时尝试使用 211 而不是 210
因为你在M3结尾多加了” “,把” “去掉就行了
case "CSeq: 2": {
// 告诉Source端自身支持的属性及能力
String body = "wfd_content_protection: none\r\n"
+ "wfd_video_formats: 00 00 02 04 00000080 00000000 00000000 00 0000 0000 00 none none\r\n"
+ "wfd_audio_codecs: AAC 00000001 00\r\n"
+ "wfd_client_rtp_ports: RTP/AVP/UDP;unicast 20011 0 mode=play\r\n";
String optionsRequest = "RTSP/1.0 200 OK\r\n"
+ "CSeq: 2\r\n"
+ "Content-type: text/parameters\r\n"
+ "Content-length: "+body.length()+"\r\n"
+ "\r\n"
+ body
+ "\r\n"; \***去掉这一行***\
OutputStream out = socket.getOutputStream();
out.write(optionsRequest.getBytes());
out.flush();
break;
}