Streamedian官网:https://streamedian.com/
我们下载 HTML5 RTSP streaming video player over WebSocket
相关配置可以参考官网说明:https://github.com/Streamedian/html5_rtsp_player
CentOS7
官方文档参考:https://streamedian.com/docs/#rpminstall
我是运行在CentOS7下的。下载的1.8.4
拷贝至虚拟机,解压 unzip 文件名.zip
安装那2个RPM文件(不过我的websock安装报错了,可能是错在这里)
sudo rpm -ivf websock_rtsp_proxy-1-8-4.el7.centos.x86_64.rpm
sudo rpm -ivf rtsp_ws_tunnel_client-1-8-4.el7.centos.x86_64.rpm
/etc/ 下的ws_rtsp.ini文件
根据官网文档说明,我安装过apache,那我试试看着2个命令
恩,不知道说啥
直接运行 index.html 可以看到
但是 没有 license key,只能识别localhost/127.0.0.1。
我们需要注册账号,登录后,可以看到官方提供了 在线激活和离线激活
根据index.html 下面的说明,我们访问/usr/bin/wsp下的activation_app。
sudo ./activation_app
运行程序,1,在线激活。需要登录刚刚注册的账号。
2,输入激活密钥
恩,我失败了。。。
我们换4,激活试试。需要选择一下,然后输入IP,成功激活。
运行websock_rtsp_proxy
在/usr/bin下 sudo ./websock_rtsp_proxy
如果报错,端口被占用
修改配置文件,在 /etc目录下的 ws_rtsp.ini
sudo vi ws_rtsp.ini
修改端口,我改成8088
再次运行 sudo ./websock_rtsp_proxy
输入rtsp地址,set报错 4000,无效域(Windows的VLC是可以获取到视频的,并且Windows可以成功set,请往下看)
4000 这个错误在Windows下出现是因为 没有在server下运行页面,而是直接打开压缩包下的index.html
正确应该访问 http://localhost:8088/
我们需要启动 service ws_rtsp start
然而虚拟机访问8088端口却是白屏(不知道错哪了,所以觉得换Windows)
VLC是可以获取到的
streamedian.min.js 下的源码中找到了这个错误
补充:
我们重启websock_rtsp_proxy sudo ./websock_rtsp_proxy
端口被占
ps -aux
找到websock的程序
kill掉它 sudo kill -9 31619
或使用命令 sudo lsof -i:8088
针对端口号查找。
实在不行只能重启了(再次kill成功杀死)。
重新运行 sudo ./websock_rtsp_proxy
当运行 service ws_rtsp start
还可能报错 1006 不明原因(真是头疼)
根据官网说明,这个许可证文件从哪来,我就很懵逼
Windows
官方文档参考:https://streamedian.com/docs/#wininstall
下面去Windows下测测看
都给他装上
C:\Users\Public\Documents\Streamedian
装完后桌面会多一个程序 Streamedian Player URL
双击 直接跳转到 http://127.0.0.1:8088/
还有开始界面的一个程序 server
我们运行 ,就是之前看到的激活程序(C:\Program Files\Streamedian\WS RTSP Proxy Server\activation_app)
同理,在Windows我们再次激活看看
先配置为 rtsp的ip看看
然后我们刷新下 http://127.0.0.1:8088/
set我们设备的rtsp地址,Windows居然成功了(不过没法播放视频)
点击播放,报错 方法在此状态下无效
很奇怪的是Windows我并没有修改配置文件
但Windows下却和虚拟机同步了(虚拟机已经关闭)
端口也是8088,而打开Windows 下C:\Users\Public\Documents\Streamedian\WS RTSP Proxy Server
中的ws_rtsp.ini,仍然是8080
而且对html文件进行修改,访问后还是没有修改的页面
因此我决定对虚拟机进行修改
然后并没有什么用
直接打开bat文件看看
迷~
奇迹出现
2019/12/09 下午,在出错455后,我发了这篇博客
神奇的事情发生了,我点击455的弹窗确认后
奇迹般的获取到了视频?!大概等了5/6分钟的样子
我看了下源码,发现之前的改动生效了(延迟?),在index.html下,我加入了一个js文件
<script src="my.js"></script>
js文件的内容来自官方GitHub提供的代码
下面我贴出js中的代码
my.js
import * as streamedian from 'streamedian/player.js';
// import WebsocketTransport from 'wsp/transport/websocket';
// import RTSPClient from 'wsp/client/rtsp/client';
let mediaElement = rtsp.attach(document.getElementById('test_video'));
let player = new streamedian.WSPlayer(mediaElement, {
// url: `${STREAM_URL}`, // overrides mediaElement's sources
modules: [
{
// client module constructor. Should be subclass or BaseClient. RTSPClient by default
// client: RTSPClient,
transport: {
// client module constructor. Should be subclass or BaseTransport. WebsocketTransport by default
// constructor: WebsocketTransport,
options: {
// address of websocket proxy described below. ws${location.protocol=='https:'?'s':''}://${location.host}/ws/ by default
socket: "ws://websocket_proxy_address/ws",
// function called player exceptions
errorHandler (e) {
alert(`Failed to start player: ${e.message}`);
},
// function to get credentials for protected streams
queryCredentials() {
return new Promise((resolve, reject)=>{
let c = prompt('input credentials in format user:password');
if (c) {
this.setCredentials.apply(this, c.split(':'));
resolve();
} else {
reject();
}
});
}
}
}
},
]
});
恩。当我刷新页面再来一次时,又是455
然后是无尽的转圈圈
RTSP参考:rtsp详解一
出错求教
4000
1006 不明原因
rtsp 455