强制安卓使用RTSP/AVP/TCP交错传输

35

我在Galaxy S3上使用Android 4.1.2。目前,Android MediaPlayer始终尝试使用RTSP UDP(RTP/AVP/UDP)方法与RTSP服务器连接。

如果Android MediaPlayer未在其UDP端口接收数据,则会超时,然后尝试使用RTSP TCP interleaved(RTP/AVP/TCP)。这很好,但会引入约10秒钟的延迟。我想避免这种延迟,并强制Android MediaPlayer始终对所有或特定URL使用RTSP TCP交错(RTP/AVP/TCP)。

我尝试了此处给出的建议,发送461或400错误响应代码来响应SETUP请求。但似乎mediaplayer并不关心响应,并发送SETUP命令以获取两个跟踪,然后只是挂起连接。

我该如何解决这个问题?


你曾经解决过这个问题吗? - Marcel
为什么不自己初始化一个UDP套接字连接,并相应地处理数据流。这样可以避免Android代替你处理它。 - nathansizemore
我有相同的问题,你解决了吗? - tulkas85
1
虽然我不是专家,但如果您的API级别为16或更高,则ExoPlayer(http://developer.android.com/guide/topics/media/exoplayer.html)可能是一种替代方案。 - peterkuterna
ExoPlayer不支持RTSP,详见:https://github.com/google/ExoPlayer/issues/55 - lxgr
2个回答

1
我正在使用VLC而不是本机播放器。 请阅读Living555源代码。 您可以在SETUP请求中指定Transport: RAW/RAW/UDP字段以选择要使用的协议。

0

我可能错了,但据我所知,Android MediaPlayer不支持RTP over TCP。


目前还不支持;类似的问题请参考http://stackoverflow.com/questions/20676092/does-android-4-x-support-streaming-rtsp-over-tcp - Paul Gregoire

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接