Attach HTML Video with RTSP URL
<video id="test_video" controls autoplay src="rtsp://your_rtsp_stream/url"></video>
Setup player in your js:
import * as rtsp from 'rtsp_player'; rtsp.RTSP_CONFIG['websocket.url'] = "ws://websocket_proxy_address/ws"; // You should specify address of proxy described below let player = rtsp.attach(document.getElementById('test_video'));
ES6 Modules support is required. You can use webpack with babel loader to build this script: webpack.config.js
const PATHS = { src: { test: path.join(__dirname, 'test.js') }, dist: __dirname }; module.exports = { entry: PATHS.src, output: { path: PATHS.dist, filename: '[name].bundle.js' }, module: { loaders: [ { test: /\.js$/, loader: 'babel', query: { presets: ['es2015', 'stage-3', 'stage-2', 'stage-1', 'stage-0'] } } ] }, resolve: { alias: { rtsp: path.join(__dirname,'node_modules/html5_rtsp/src') } } };
> npm install bp_event bp_log bp_statemachine > webpack --config webpack.config.js
Include compiled script into your HTML:
<script src="test.bundle.js"></script>
- Install websocket proxyFor Debian-based systems:
curl -o- http://repo.tom.ru/rpm/websockrtsprepo-1-0.deb | dpkg --install apt install websockrtspproxy # Debian-based systems
or Fedora:dnf install http://repo.tom.ru/rpm/websock_rtsp_repo-1-0.noarch.rpm dnf install websock_rtsp_proxy
- Configure port in /etc/ws_rtsp.ini This port should be open in your firewall. Also you can pass request to this port from your proxy. (for example: http://nginx.org/en/docs/http/websocket.html)
- Run it
> service ws_rtsp start
RTSP player establish connection with proxy with following protocol:
- Connect to RTSP channel by connecting websocket with "rtsp" protocol
specified and get connection id
c>s: WSP 1.0 INIT\r\n host <RTSP stream host>\r\n port <RTSP stream port>\r\n\r\n s>c: INIT <connection_id>\r\n\r\n conection_id = -1 means error
- Connect to RTP channel by connecting websocket with "rtp" protocol
c>s: WSP 1.0 INIT\r\n RTSP <connection_id achieved from RTSP socket initialization>\r\n\r\n s>c: INIT <connection_id>\r\n\r\n conection_id = -1 means error
- RTP channel should send interleaved data with 4 byte header ($<channel> <size>). Separate RTP is not supported at this moment
You can download this project on GitHub
Have any suggestions to improve our player? Feel free to leave comments or ideas