直播RTSP流不能与VideoView一起播放; 没有内容提供商错误

kfi*_*run 11 android rtsp live-streaming http-live-streaming android-mediaplayer

我是Android开发的新手,似乎无法通过开发应用程序来从ip摄像头直播RTSP源.虽然我可以从具有.mov文件的RTSP地址的网站流式传输代码,但我无法从我的ip camera的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();
}
Run Code Online (Sandbox Code Playgroud)

当使用从ip camera中提取的任一行运行时,我们会收到以下错误:

'setDataSource IOException happend :
java.io.FileNotFoundException: No content provider: http://192.168.1.122/ipcam/mjpeg.cgi'
Run Code Online (Sandbox Code Playgroud)

来自相机的RTSP流已经使用另一个rtsp android应用程序进行了验证,所以我知道它并不坏.

是否必须采取措施才能进行缓冲?最终目标是尽可能接近实时直播到应用程序,在眼镜中进行视频叠加.但是,我们甚至无法获得显示的基本流.欢迎任何和所有建议!

Jos*_*ter 2

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

camera.ts就我而言,我使用本地网络 RTSP 服务器来提供使用以下 RTSP URL调用的文件:

rtsp://macpro.local:8554/camera.ts

它产生一个Can't play this video错误:

无法播放该视频错误。

我想看看是否存在权限问题或其他问题,因此我尝试了测试 RTSP url。

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

工作正常。

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

我下载了那部 BigBuckBunny 电影,将其转换为.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
Run Code Online (Sandbox Code Playgroud)

但是,这可能是一个红鲱鱼,因为如果我在尝试播放测试文件时查看日志(该文件有效),我会得到同样的结果:

D/MediaPlayer: setDataSource IOException happend : 
    java.io.FileNotFoundException: No content provider: rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov
Run Code Online (Sandbox Code Playgroud)

因此,让我们排除这一点并继续寻找......

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