RTSP 1080p直播Android客户端获取错误(100,0)

时间:2014-08-09 06:03:53

标签: android android-videoview onvif

我的新监控摄像头刚到,所以我正在尝试编写一个应用程序来直播视频。

由于它基本上没有文档,我安装了'onvifer'android应用程序,它允许您浏览相机的功能。此应用程序工作正常 - 获取视频并允许PTZ控件等。它将流式网址报告为:

 rtsp://192.1.0.193:554/mpeg4

我在VLC Windows客户端测试了流,它也可以从该URL流式传输视频。这让我觉得网络运行正常。

相机说明Feed为1920x1080; VLC证实了这一点。

我的活动中的基本代码:

VideoView videoView = (VideoView)this.findViewById(R.id.VideoView);
videoView.setVideoURI(Uri.parse("rtsp://192.1.0.193:554/mpeg4"));
videoView.requestFocus();
videoView.start();

我还在AndroidManifest.xml中给出了应用INTERNET权限,在相机上禁用了身份验证,并且在真实设备(而不是模拟器)上运行。

当我运行应用程序时,LogCat立即显示:

setDataSource IOException happend :
java.io.FileNotFoundException: No content provider: rtsp://192.1.0.193:554/mpeg4
at android.content.ContentResolver.openTypedAssetFileDescriptor (ContentResolver.java).

大约15秒后,应用程序显示“无法播放此视频”模式对话框,并将其添加到LogCat中:

MediaPlayer      error (100, 0)
AudioSystem      AudioFlinger server died!
MediaPlayer      error (100, 0)
VideoView        Error: 100,0

我用谷歌搜索了我能想到的一切,但没有找到任何有用的东西。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

对你的logcat进行疯狂猜测并且RC = 100 ...没有SDP文件或没有等效的'moov atom'块的RTSP来协商流/容器/编解码器/格式的详细信息...您可以获取mediaPlayer / videoView的AOSP代码,并在源代码中获取RC值。

RTSP很难调试(注意工具链接),并且由于UDP问题而无法确保在NAT'd网络内运行。因此,为了获得更好的结果,您可能需要考虑强制您的配置在TCP而不是UDP上执行数据通道。或者它可能是其他问题,其中有很多。

如果你真的想调查一下,可以使用下面的一些工具:

使用命令行和CURL client来请求您的信息流:

Android - Java RTSP会话管理包on Git

Protocol dumps用于与Youtube RTSP / SDP流的CLI RTSP会话

要解决这个问题,您可能需要使用调试工具进入杂草,这些工具会跟踪MediaPlayer实际开始在流上播放之前协议协商的详细信息。这将包括学习RFP和协议细节。

答案 1 :(得分:0)

  1. videoView.setVideoURI(“RTSP://192.1.0.193:554 / MPEG4”);
  2. 在另一部手机上试用您的应用 您可能会发现问题与移动设备有关。
  3. 试试这个 路径:" RTSP://218.204.223.237:554 /移动/ 1 / 4C024DFE77DC717D / onnuvesj43xj7t26.sdp&#34 ;.
    看看代码是否有问题。