【发布时间】:2014-08-09 06:03:52
【问题描述】:
我的新监控摄像头刚到货,所以我正在尝试编写一个应用程序来直播视频。
由于它基本上没有文档,我安装了“onvifer”安卓应用程序,它允许您浏览相机的功能。此应用程序运行良好 - 获取视频并允许 PTZ 控制等。它将流式传输 url 报告为:
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
我搜索了所有我能想到的东西,但没有发现任何有用的东西。
有什么想法吗?
【问题讨论】:
-
因为它是一个媒体播放器,所以我在 start() 之前的某个地方错过了 preprare 或 prepareasync。我一直需要它。
-
@SatelliteSD,感谢您的回复。我正在使用 MediaPlayer 的 VideoView 包装器,据我所知,它负责prepare()。 stackoverflow.com/questions/18598675/…
-
看到这个答案了吗? stackoverflow.com/questions/13291632/… 这里解释了这个问题以及 VLC 如何克服它。 fabiensanglard.net/mobile_progressive_playback/index.php
-
再次感谢@SatelliteSD。我已经看到提到过这个问题,但是如果没有您的第二个链接,它就没有任何意义。我将不得不看看我是否能弄清楚如何自己诊断/编码所述的解决方法。我知道后会回复。
-
@SatelliteSD,这篇文章指出 MOOV 标头是流式传输 files 时的问题,而不是实时流式传输(这就是我正在做的)。想法? “在 RTSP 流的情况下,与服务器有一个 SDP 事务,它提供播放器开始播放所需的元数据。” mail-archive.com/android-framework@googlegroups.com/…
标签: android android-videoview onvif