到Android的IP摄像头rtsp流失败

时间:2017-12-06 05:30:05

标签: android android-mediaplayer h.264 rtsp

所以我有一个RTSP流我试图在D-Link936L和三星Galaxy Tab S之间设置。我已经验证了codecs(a / v)匹配并且是兼容。我已经验证了ip camera使用VLC连接到我的桌面。

我所做的,我还没有看到其他人做的是深入研究平板电脑和相机之间共享的RTSP网络数据包。我最终找到了一些有趣的东西。

注意:我也收到错误:

D/MediaPlayer: setDataSource IOException | SecurityException happend : 
                                                                            java.io.FileNotFoundException: No content provider: rtsp://

以及0x8000000000(或许多0' s)错误类似

error (1, -2147483648)

我正在处理一个处理不当的超时/错误传达错误。

我是如何得出这个结论的?我使用wireshark一个良好的连接(从谷歌播放商店运行RTSP Player到ip camera EDIT )的平板电脑以及连接不良(平板电脑到ip相机)。下面你可以看到我发现的东西。

良好的联系:

Good connection

连接不好:

Bad connection

您会注意到在良好连接中有一个命令后跟一个ACK。但是,您也会注意到连接错误,接收DESCRIBE数据包的ACK大约需要2.2秒。这导致android端发送TEARDOWN,在此之后不久发送一个DESCRIBE_ACK被接收。因此,试图变得聪明,Android设备发送一个SETUP ...但它不能匹配它接收的TEARDOWN_ACK,很快就会收到它。

最后: 所以我的问题是什么(?!?!?!?!)导致这2秒的延迟......哦,我需要在12/8/17之前解决这个问题....哦,男孩...... < / p>

修改: 有一件事我忘了提及,它适用于rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov 但不是我的IP摄像头。

我做的事情只是注意到,当我运行我在Android设备上使用数据包捕获的软件时,上面的链接失败并显示错误(1,-214 #### #)代码。

1 个答案:

答案 0 :(得分:0)

如果有其他人遇到这个,我会回答这个问题。

我无法找到根本原因,因为我的开发很快,我没有时间调试问题。

我的第一个解决方案是使用VXG api,但这只允许每个应用程序运行3个流,流长度上限为2分钟,每个视频上有一个水印...... GROSS!

我的第二个也是最后一个解决方案是使用VLC api,这有点古怪,但我能够在一个工作日进行设置,让它工作超过3个流,无限时间,没有水印。 ..AWESOME!

我的建议是使用VLC api。我唯一的问题是它只能在一个表面视图中工作,所以这给了我一些问题,它似乎使用TCP,因为它比VXG api更潜在(但我没有通过检查通信是什么正在使用)。因此,基本上准备不到实时视频,可能是0.5-1秒的延迟是我在私有WLAN上经历的。