rtsp2web 1.1.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -6
- package/dist/rtsp2web.js +34 -6
- package/dist/rtsp2web.js.map +1 -1
- package/dist/rtsp2web.min.js +2 -2
- package/dist/rtsp2web.min.js.map +1 -1
- package/package.json +5 -3
package/README.md
CHANGED
|
@@ -6,8 +6,12 @@
|
|
|
6
6
|
[refer](./refer) 是一个小的独立的 `demo` 程序,学习它对你有很大的帮助(都有注释的)。
|
|
7
7
|
|
|
8
8
|
# how to use
|
|
9
|
-
|
|
9
|
+
1、 安装依赖
|
|
10
|
+
```
|
|
11
|
+
npm i rtsp2web
|
|
12
|
+
```
|
|
10
13
|
|
|
14
|
+
2、 创建一个新建 `js` 文件(例如:`main.js`)
|
|
11
15
|
```js
|
|
12
16
|
// main.js
|
|
13
17
|
const RTSP2web = require('rtsp2web')
|
|
@@ -19,8 +23,9 @@ new RTSP2web({
|
|
|
19
23
|
})
|
|
20
24
|
```
|
|
21
25
|
|
|
22
|
-
运行 `node main.js
|
|
26
|
+
3、 运行 `node main.js`,启动视频流转码服务
|
|
23
27
|
|
|
28
|
+
4、 在页面中播放视频
|
|
24
29
|
```html
|
|
25
30
|
// index.html
|
|
26
31
|
<!DOCTYPE html>
|
|
@@ -41,19 +46,20 @@ new RTSP2web({
|
|
|
41
46
|
var rtsp2 = 'rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mp4'
|
|
42
47
|
window.onload = () => {
|
|
43
48
|
// 将rtsp视频流地址进行btoa处理一下
|
|
44
|
-
new JSMpeg.Player("ws://localhost:9999/
|
|
49
|
+
new JSMpeg.Player("ws://localhost:9999/rtsp?url="+btoa(rtsp1), {
|
|
45
50
|
canvas : document.getElementById("canvas_1")
|
|
46
51
|
})
|
|
47
|
-
new JSMpeg.Player("ws://localhost:9999/
|
|
52
|
+
new JSMpeg.Player("ws://localhost:9999/rtsp?url="+btoa(rtsp2), {
|
|
48
53
|
canvas : document.getElementById("canvas_2")
|
|
49
54
|
})
|
|
50
55
|
}
|
|
51
56
|
</script>
|
|
52
57
|
</html>
|
|
53
58
|
```
|
|
54
|
-
打开 `index.html`。
|
|
55
59
|
|
|
56
|
-
|
|
60
|
+
> PS: 在页面中播放视频,需要依赖 `jsmpeg.js` 工具包
|
|
61
|
+
|
|
62
|
+
详细参考例子:[https://github.com/Neveryu/rtsp2web/tree/master/example](https://github.com/Neveryu/rtsp2web/tree/master/example)
|
|
57
63
|
|
|
58
64
|
# donate
|
|
59
65
|
If you think rtsp2web help you. maybe you can donate a litter. :beers::beers:
|
package/dist/rtsp2web.js
CHANGED
|
@@ -4762,7 +4762,7 @@ WebSocket.WebSocketServer = WebSocket.Server;
|
|
|
4762
4762
|
|
|
4763
4763
|
var ws = WebSocket;
|
|
4764
4764
|
|
|
4765
|
-
var version = "
|
|
4765
|
+
var version = "2.1.0";
|
|
4766
4766
|
|
|
4767
4767
|
/*!
|
|
4768
4768
|
* name: main.js
|
|
@@ -4780,7 +4780,13 @@ var child = require('child_process');
|
|
|
4780
4780
|
var events = require('events');
|
|
4781
4781
|
|
|
4782
4782
|
var url = require('url');
|
|
4783
|
-
var WebSocketServer = ws.Server;
|
|
4783
|
+
var WebSocketServer = ws.Server; // 默认的ffmpeg路径(一般正常安装的ffmpeg,名称(路径)是:ffmpeg)
|
|
4784
|
+
|
|
4785
|
+
var FFmpegPath = 'ffmpeg'; // 默认的端口
|
|
4786
|
+
|
|
4787
|
+
var defaultPort = 9999; // 默认的视频视口框架大小
|
|
4788
|
+
|
|
4789
|
+
var videoSize = '1920x1080';
|
|
4784
4790
|
/**
|
|
4785
4791
|
* 用于创建一个新的视频转码流类
|
|
4786
4792
|
*/
|
|
@@ -4790,6 +4796,7 @@ var Mpeg2Muxer = /*#__PURE__*/function (_events$EventEmitter) {
|
|
|
4790
4796
|
|
|
4791
4797
|
var _super = _createSuper(Mpeg2Muxer);
|
|
4792
4798
|
|
|
4799
|
+
// 额外的 ffmpeg 参数
|
|
4793
4800
|
function Mpeg2Muxer(options) {
|
|
4794
4801
|
var _this;
|
|
4795
4802
|
|
|
@@ -4806,7 +4813,7 @@ var Mpeg2Muxer = /*#__PURE__*/function (_events$EventEmitter) {
|
|
|
4806
4813
|
_defineProperty(_assertThisInitialized(_this), "inputStreamStarted", false);
|
|
4807
4814
|
|
|
4808
4815
|
_this.options = options;
|
|
4809
|
-
_this.ffmpegPath = options.ffmpegPath;
|
|
4816
|
+
_this.ffmpegPath = options.ffmpegPath || FFmpegPath;
|
|
4810
4817
|
_this.url = options.url;
|
|
4811
4818
|
_this.ffmpegOptions = options.ffmpegOptions;
|
|
4812
4819
|
|
|
@@ -4837,6 +4844,13 @@ var Mpeg2Muxer = /*#__PURE__*/function (_events$EventEmitter) {
|
|
|
4837
4844
|
this.stream = child.spawn(this.ffmpegPath, this.spawnOptions, {
|
|
4838
4845
|
detached: false
|
|
4839
4846
|
});
|
|
4847
|
+
this.stream.on('error', function (code, signal) {
|
|
4848
|
+
console.error('启动ffmpeg时出错,请确保你安装了ffmpeg,然后检查路径或者命令参数');
|
|
4849
|
+
});
|
|
4850
|
+
this.stream.on('close', function (code, signal) {
|
|
4851
|
+
console.log('ffmpeg关闭,code:', code);
|
|
4852
|
+
return _this2.emit('exitWithError');
|
|
4853
|
+
});
|
|
4840
4854
|
this.inputStreamStarted = true;
|
|
4841
4855
|
this.stream.stdout.on('data', function (data) {
|
|
4842
4856
|
return _this2.emit('mpeg2data', data);
|
|
@@ -4910,7 +4924,7 @@ var Channel = /*#__PURE__*/function () {
|
|
|
4910
4924
|
"-stats": "",
|
|
4911
4925
|
// 没有必要值的选项使用空字符串
|
|
4912
4926
|
"-r": 20,
|
|
4913
|
-
"-s":
|
|
4927
|
+
"-s": videoSize,
|
|
4914
4928
|
"-b:v": "2000k"
|
|
4915
4929
|
},
|
|
4916
4930
|
url: this.config.url,
|
|
@@ -4918,6 +4932,11 @@ var Channel = /*#__PURE__*/function () {
|
|
|
4918
4932
|
});
|
|
4919
4933
|
this.mpeg2Muxer.stream = this.mpeg2Muxer.instance.stream;
|
|
4920
4934
|
this.mpeg2Muxer.instance.on('mpeg2data', function (data) {
|
|
4935
|
+
/**
|
|
4936
|
+
* 【广播数据】
|
|
4937
|
+
* rtsp视频流实时转帧之后,当前视频流通道实时进行广播
|
|
4938
|
+
* 将图像数据广播给它的所有client(也就是它的每个ws句柄)
|
|
4939
|
+
*/
|
|
4921
4940
|
_this3.broadcast(data); // this.mpeg2Muxer.data = data
|
|
4922
4941
|
|
|
4923
4942
|
});
|
|
@@ -5015,7 +5034,7 @@ var RTSP2web = /*#__PURE__*/function () {
|
|
|
5015
5034
|
}, 10000); // 创建websocket服务器,监听在${port}端口
|
|
5016
5035
|
|
|
5017
5036
|
this.wss = new WebSocketServer({
|
|
5018
|
-
port: config ? config.port ||
|
|
5037
|
+
port: config ? config.port || defaultPort : defaultPort
|
|
5019
5038
|
});
|
|
5020
5039
|
/**
|
|
5021
5040
|
* Event: 'connection'成功握手连接时触发
|
|
@@ -5039,7 +5058,7 @@ var RTSP2web = /*#__PURE__*/function () {
|
|
|
5039
5058
|
});
|
|
5040
5059
|
}
|
|
5041
5060
|
|
|
5042
|
-
console.log('ws连接成功');
|
|
5061
|
+
console.log('一个新的client(ws句柄)连接成功');
|
|
5043
5062
|
});
|
|
5044
5063
|
}
|
|
5045
5064
|
/**
|
|
@@ -5080,6 +5099,15 @@ var RTSP2web = /*#__PURE__*/function () {
|
|
|
5080
5099
|
|
|
5081
5100
|
return null;
|
|
5082
5101
|
}
|
|
5102
|
+
/**
|
|
5103
|
+
* 创建一个视频通道
|
|
5104
|
+
* @Author Author
|
|
5105
|
+
* @DateTime 2022-05-06T14:40:28+0800
|
|
5106
|
+
* @param {[type]} data [description]
|
|
5107
|
+
* @param {[type]} ws [description]
|
|
5108
|
+
* @return {[type]} [description]
|
|
5109
|
+
*/
|
|
5110
|
+
|
|
5083
5111
|
}, {
|
|
5084
5112
|
key: "createChannel",
|
|
5085
5113
|
value: function createChannel(data, ws) {
|