IP 摄像机 rtsp 流到 Android 失败

IP camera rtsp stream to Android fails

所以我有一个 RTSP 流,我正在尝试在 D-Link936L 和 Samsung Galaxy Tab S 之间设置。我已经验证 codecs (a/v) 匹配并且兼容。我已经使用 VLC.

验证了网络摄像头连接到我的桌面

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

注意:我也收到错误:

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

以及 0x8000000000(或许多 0)之类的错误

error (1, -2147483648)

我认为这是一个处理不当的 timeout/miscommunication 错误。

我是怎么得出这个结论的?我用 wireshark 记录了良好的连接(平板电脑 运行ning RTSP Player 从 google play store 到 ip camera EDIT)和一个坏的连接(平板电脑到网络摄像机)。下面你可以看到我发现了什么。

连接良好:

连接不良:

您会注意到在良好的连接中有一条命令后跟一个 ACK​​。但是,您还会注意到,在连接不佳的情况下,大约需要 2.2 秒才能收到 DESCRIBE 数据包的 ACK。这导致 android 端发送一个 TEARDOWN,在发送后不久收到一个 DESCRIBE_ACK。因此,为了聪明,android 设备发送了一个 SETUP...但它与它不久后收到的 TEARDOWN_ACK 行为不匹配。

最后: 所以我的问题是到底是什么(?!?!?!?!)导致了这 2 秒的延迟……哦,我需要在 2017 年 12 月 8 日之前解决这个问题……天哪……

编辑: 我忘了提一件事,它适用于 rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov 但不是用我的网络摄像机。

我做的一件事 只是 注意,当我 运行 我用来在 android 设备上捕获数据包的软件时, link 上面也失败并出现错误 (1, -214#####) 代码。

我会回答这个问题,以防其他人遇到这个问题。

我一直找不到根本原因,因为我的开发是 rapid,我没有时间调试问题。

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

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

我的建议是使用 VLC api。我唯一的问题是它只能在表面视图中工作,所以这给了我一些问题并且它似乎使用 TCP 因为它比 VXG api 更潜在(但我没有 wireshark 到检查正在使用的通讯方式)。因此,基本上要为低于实时视频的情况做好准备,我在私人 WLAN 上可能会遇到 0.5-1 秒的延迟。