我的任务是在android中创建一个Android应用程序来检查该城市的一些IP摄像头 . 使用现有的 RTSP url是 rtsp://admin:pms7112@xxx.xx.xx.xxx:554/cam/realmonitor?channel=1&subtype=0 我可以在VLC播放器中获取流但在android中没有运气 . 我尝试过videoview原生播放器和 media player
.
几乎所有解决方案都给了我
MediaPlayer:setDataSource发生IOException:java.io.FileNotFoundException:没有内容提供者:rtsp:// ...
如果这个问题发生是因为用户名和密码在_2388019中?你如何添加用户名和密码作为查询 string
?
EDIT
媒体播放器版本
MediaPlayer mediaPlayer = new MediaPlayer();
try
{
mediaPlayer.setDataSource("rtsp://admin:pms7112@iphere:554/cam/realmonitor?channel=1&subtype=0");
mediaPlayer.prepare();
mediaPlayer.start();
}
catch (IOException ex)
{
ex.printStackTrace();
}
Update:
所以...似乎这是我可以使用网址的唯一方法......我不能以其他方式验证用户 . 拥有相机并为城市设置的公司不允许我们使用其他格式 . 他们说,vlc浏览器插件播放得很好,他们不会改变任何东西......所以有任何库通过身份验证实现rtsp流 . 我听说客户端和服务器之间的握手
3 回答
格式为
rtsp://[username[:password]@]ip_address[:rtsp_port]/server_URL[?param1=val1[¶m2=val2]...[¶mN=valN]]
另一种发送用户名和密码的方法:
只是一个建议和可选尝试调用
mediaplayer.prepareAsync()
而不是mediaplayer.prepare()
Reference Authentication-enabled
我刚刚找到this project o github,它使用vlc库打开rtsp streams.This解决了我的问题解决了我的问题
我建议使用这个库,它限制为2分钟的播放,但对我来说这不是一个问题 .
https://github.com/VideoExpertsGroup/MediaPlayerSDK
我测试了多个android libs,这个似乎在android中运行最好 . 我测试的其他一些在播放时非常不稳定或非常延迟 . 还有一个测试应用程序,因此您可以确认它将适用于您的流 .
https://play.google.com/store/apps/details?id=org.rtspplr.app