我正在使用Android应用程序从使用DSS的服务器播放rtsp流。 它大部分时间都有效,但有时候我无法正常工作。我测试了wireshark并看到UDP请求继续发送但没有响应,原因可能是防火墙阻止了UDP数据包,我想。当我使用VLC打开相同的RTSP流时,我得到使用TCP的RTP响应。
目前因为我无法更改防火墙状态,我想更改我的应用程序以使用TCP接收RTSP流,我认为使用内置MediaPlayer / VideoView是不可能的。那我怎么能这样做?
有什么建议吗?
提前致谢。
博尔顿答案 0 :(得分:0)
如果内置媒体播放器不支持它,那么您需要实现自己的RTSP客户端,并且在RTSP设置请求中,您需要指定TCP作为传输。
标准RTSP设置:
第1道:
SETUP rtsp://146.64.28.137/TheItCrowd.mm1/track1 RTSP/1.0
CSeq: 3
Transport: RTP/AVP;unicast;client_port=4116-4117
User-Agent: openRtsp (LIVE555 Streaming Media v2010.04.09)
磁轨2:
SETUP rtsp://146.64.28.137/TheItCrowd.mm1/track2 RTSP/1.0
CSeq: 4
Transport: RTP/AVP;unicast;client_port=4118-4119
Session: 6B8B4567
User-Agent: openRtsp (LIVE555 Streaming Media v2010.04.09)
RTSP / TCP上交错的RTSP设置:
TRACK1:
SETUP rtsp://146.64.28.137/TheItCrowd.mm1/track1 RTSP/1.0
CSeq: 3
Transport: RTP/AVP/TCP;unicast;interleaved=0-1
User-Agent: openRtsp (LIVE555 Streaming Media v2010.04.09)
磁轨2:
SETUP rtsp://146.64.28.137/TheItCrowd.mm1/track2 RTSP/1.0
CSeq: 4
Transport: RTP/AVP/TCP;unicast;interleaved=2-3
Session: 35B9387A
User-Agent: openRtsp (LIVE555 Streaming Media v2010.04.09)