node-media-server 是基于 node.jsRTMP/HTTP-FLV/WS-FLV/HLS/DASH 流媒体服务器三方库

环境配置

npm install node-media-server
下载到的 mode-media-server 是最新版本 v4.0.7

样例运行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// app.js
const NodeMediaServer = require('node-media-server');

const config = {
rtmp: {
port: 1935,
chunk_size: 60000,
gop_cache: true,
ping: 60,
ping_timeout: 30
},
http: {
port: 8000,
allow_origin: '*'
}
};

var nms = new NodeMediaServer(config)
nms.run();
1
2
3
4
5
6
7
PS D:\Course\master\node\server> node app.js
[2024/12/9 15:24:22] [INFO] Node-Media-Server v4.0.7
[2024/12/9 15:24:22] [INFO] Homepage: https://github.com/illuspas/Node-Media-Server
[2024/12/9 15:24:22] [INFO] License: Apache-2.0
[2024/12/9 15:24:22] [INFO] Author: Chen Mingliang
[2024/12/9 15:24:22] [INFO] HTTP server listening on port undefined:8000
[2024/12/9 15:24:22] [INFO] Rtmp Server listening on port undefined:1935

打开 localhost:8000/admin 时失败:

Get /admin 不成功

原因及解决办法

可以看到 port 前的 IP 地址是 undefined 的,默认应为 0.0.0.0

可以猜测,Node-Media-Server v4.0.7v2 大不相同,可能把默认的 host 删掉了,网上的教程都是基于 v2的。许多模块诸如 node-media-server-admin 甚至可能尚未并入。


1
2
3
4
v4 is design to implement enhanced RTMP FLV v1 support for native HEVC, VP9, AV1.
v4 is no longer compatible with the cn_cdn extension id flv_265 standard.
v4 is no longer compatible with flashplayer's rtmp protocol.
v4 is incompatible with v2. Do not upgrade across major versions.

因此,解决方案很明确: 使用 v2 版本

v2 仓库中配置依赖的过程和 v4 相同,但由于 npm 中的默认版本已经是 v4, 所以还要更改项目本身的配置文件以限制版本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
// package.json
"name": "server",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"node-media-server": "^2.7.4" // 不是 4.0.7 !
}
}

再次 npm install node-media-server

1
2
3
4
5
6
PS D:\Course\master\node\server> node app.js
2024/12/9 17:12:40 19772 [INFO] Node Media Server v2.7.4
2024/12/9 17:12:40 19772 [INFO] Node Media Rtmp Server started on port: 1935
2024/12/9 17:12:40 19772 [INFO] Node Media Http Server started on port: 8000
2024/12/9 17:12:40 19772 [INFO] Node Media WebSocket Server started on port: 8000
...

localhost:8000/admin截图