Miracast 与 Nexus 10 (stagefright 1.2):不支持 505 RTSP 版本

问题描述 投票:0回答:3

首先,对不起我的语法,我不是母语!

我正在尝试在 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!!!
android rtsp wifi-direct stagefright nexus-10
3个回答
0
投票

您报告的错误来自

onReceiveClientData
,如这里。由于控件来到这里,显然响应不是以
RTSP
开头。请检查回复字符串中是否有拼写错误或空格。


0
投票

即使我也面临着同样的问题。 这是因为内容长度值错误。 回复 GET_PARAMETER 请求时尝试使用 211 而不是 210


0
投票

因为你在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;
                    } 
© www.soinside.com 2019 - 2024. All rights reserved.