Android 实时RTSP流不会与VideoView一起播放;没有内容提供程序错误

Android 实时RTSP流不会与VideoView一起播放;没有内容提供程序错误,android,android-mediaplayer,rtsp,http-live-streaming,live-streaming,Android,Android Mediaplayer,Rtsp,Http Live Streaming,Live Streaming,我是Android开发的新手,开发一个应用程序,从ip摄像头实时传输RTSP提要,似乎没有什么进展。虽然我可以从一个RTSP地址为.mov文件的网站获取流式传输的代码,但我无法从我的ip摄像头的RTSP地址获取流式传输的代码。我们使用的是VideoView,因此我们可以支持android 4.0,因为我们的目标是在Epson Moverio BT-200视频眼镜中显示它 下面是我现在拥有的代码,以及我可以从相机中获得的两条流的行注释。未注释掉的行是一个在线测试流,运行良好 VideoView v

我是Android开发的新手,开发一个应用程序,从ip摄像头实时传输RTSP提要,似乎没有什么进展。虽然我可以从一个RTSP地址为.mov文件的网站获取流式传输的代码,但我无法从我的ip摄像头的RTSP地址获取流式传输的代码。我们使用的是
VideoView
,因此我们可以支持android 4.0,因为我们的目标是在Epson Moverio BT-200视频眼镜中显示它

下面是我现在拥有的代码,以及我可以从相机中获得的两条流的行注释。未注释掉的行是一个在线测试流,运行良好

VideoView videoView;
@Override public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

    //Create a VideoView widget in the layout file
    //use setContentView method to set content of the activity to the layout file which contains videoView
    this.setContentView(R.layout.activity_full_screen_video);
    videoView = (VideoView)this.findViewById(R.id.video_player_view);

    //Set the path of Video or URI
    //videoView.setVideoPath("rtsp://192.168.1.122/h264");
    //videoView.setVideoPath("http://192.168.1.122/ipcam/mjpeg.cgi");
    videoView.setVideoPath("rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov");

    //Set the focus
    videoView.requestFocus();
    videoView.start();
}
当使用从ip摄像头拉出的任一线路运行时,我们会得到以下错误:

'setDataSource IOException happend :
java.io.FileNotFoundException: No content provider: http://192.168.1.122/ipcam/mjpeg.cgi'
来自相机的RTSP流已经通过另一个RTSP android应用程序验证,所以我知道它还不错


是否必须采取措施以允许缓冲?最终目标是让应用程序尽可能接近实时直播,以便在眼镜中进行视频叠加。然而,我们甚至不能得到一个基本的流来显示。欢迎您提供任何建议

我可以确认我遇到了类似的问题

在我的例子中,我使用一个本地网络RTSP服务器为名为
camera.ts
的文件提供以下RTSP URL:

rtsp://macpro.local:8554/camera.ts
它会产生一个
无法播放此视频
错误:

我想看看是否有权限问题,所以我尝试了测试RTSP url

rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov
很好

这意味着这不是权限问题。可能是网络问题,让我们看看是否可以通过我的RTSP服务器播放相同的BigBuckBunny电影文件

我下载了那部Bigbuckbuny电影,把它转换成
.mkv
,然后试了一下

rtsp://macpro.local:8554/big_buck_bunny.mkv
很好

这样就排除了权限问题,排除了网络问题或我的服务器问题

我的猜测是开始磨练文件类型。可能是
.ts
文件类型给它带来了麻烦

.ts
文件扩展名。 这是我在日志中看到的错误消息:

D/MediaPlayer: setDataSource IOException happened : 
    java.io.FileNotFoundException: No content provider: rtsp://macpro.local/camera.ts
但是,这可能是在转移注意力,因为如果我在尝试播放测试文件时查看日志,我会得到同样的结果:

D/MediaPlayer: setDataSource IOException happend : 
    java.io.FileNotFoundException: No content provider: rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov
所以,让我们排除这种可能性,继续寻找


更新:我从未找到解决方案。我放弃了查看RTSP流的尝试,只使用
ffmpeg
录制它,这就是演示演示所需的全部内容。如果您找到了合适的解决方案,或者Android增加了更好的支持,请在这里发布。

您是否尝试过提供Uri而不是字符串作为路径?我已经完成了这两项工作,尽管我还没有对这两项都做过广泛的测试。它可以很好地处理演示BigBuckBunny流中现在显示的字符串,因此我无法想象该流和ip摄像头流(注释掉)之间会发生变化并导致此类问题。请尝试“localhost”。从错误中可以看出,本地网络上的环回可能存在一些问题。(没有内容提供商?)或使用IP cam对本地流进行SDP实验。您能否构造SDP文件来表示来自摄影机的流,并在该文件上启动view/mediaPlayer?关于SDP列表的更多信息,请想一想:来自IP Cam的流是否需要身份验证?摄像机上的rtsp是否可能位于不同的端口上?通常是554等(或者在您的情况下可能是
)rtsp://192.168.1.122:554/h264“
,…。@user1761017您是否解决了此问题?我在我的应用程序中看到了与内容提供商相关的相同消息。