文档:https://github.com/illuspas/Node-Media-Server/blob/master/README_CN.md
安装 node-media-server
npm i node-media-server一. 创建推拉流服务器
1. 新建app.js文件
// app.js
const NodeMediaServer = require('node-media-server');
const config = {
rtmp: {
port: 19351,
chunk_size: 60000,
gop_cache: true,
ping: 30,
ping_timeout: 60
},
http: {
port: 19352,
allow_origin: '*'
}
};
var nms = new NodeMediaServer(config)
nms.run();
2. 启动app.js
node app.js
3. 推流地址和拉流地址
# 推流:
rtmp://localhost:19351/live/STREAM_NAME
# 拉流:
http://localhost:19352/live/STREAM_NAME.flvSTREAM_NAME 自定义名字。
二. 使用obs推流
安装obs软件:https://obsproject.com/
1. 添加采集目标
打开obs软件,添加显示器作为采集目标

2. 设置推流地址
点击软件左上角 文件->设置->推流,设置推流地址

3. 开始推流
- 点击开始推流

- 开启推流成功状态

三. 拉流
- 新建文件index.html
<script src="https://cdn.bootcss.com/flv.js/1.5.0/flv.min.js"></script>
<video id="videoElement"></video>
<script>
if (flvjs.isSupported()) {
var videoElement = document.getElementById('videoElement');
var flvPlayer = flvjs.createPlayer({
type: 'flv',
url: 'http://127.0.0.1:19352/live/hello.flv'
});
flvPlayer.attachMediaElement(videoElement);
flvPlayer.load();
flvPlayer.play();
}
</script>
- 通过浏览器打开编写的html,拉流成功

四. 鉴权验证
加密后的 URL 形式:
rtmp://hostname:port/live/hello?sign=expires-HashValue
http://hostname:port/live/hello.flv?sign=expires-HashValue
1.原始推流或播放地址:
rtmp://192.168.0.10/live/hello
2.配置验证秘钥为: 'nodemedia2017privatekey',同时打开播放和发布的鉴权开关
const config = {
rtmp: {
port: 1935,
chunk_size: 60000,
gop_cache: true,
ping: 30,
ping_timeout: 60
},
http: {
port: 8000,
allow_origin: '*'
},
auth: {
play: true,
publish: true,
secret: 'nodemedia2017privatekey'
}
}3.请求过期时间为: 2022/8/23 11:25:21 ,则请求过期时间戳为:
1661225121 单位为秒;
4.md5计算结合“完整流地址-失效时间-密钥”的字符串:
HashValue = md5("/live/hello-1661225121-nodemedia2017privatekey”)
HashValue = 80c1d1ad2e0c2ab63eebb50eed64201a
5.最终请求地址为
rtmp://192.168.0.10/live/hello?sign=1661225121-80c1d1ad2e0c2ab63eebb50eed64201a
注意:'sign' 关键字不能修改为其他的
例:
计算推拉流地址
function createSign(myKey){
const expireTime = parseInt((Date.now() + 100000000) / 1000)
const hashValue = md5(`/live/${myKey}-${expireTime}-${config.auth.secret}`)
return `${expireTime}-${hashValue}`
}
// 可以修改hello为其他名字生成不同直播间,这里写死了"hello"
const myKey = "hello"
console.log(createSign(myKey)); // 1641295664-36cb23cec1eafa8de108c6299f1f0d6e推流地址
rtmp://127.0.0.1:19351/live/hello?sign=1641295664-36cb23cec1eafa8de108c6299f1f0d6e
拉流地址
http://127.0.0.1:19352/live/hello.flv?sign=1641295664-36cb23cec1eafa8de108c6299f1f0d6e
Ценники на вывоз мусора сейчас космос, любые лайфхаки по экономии в тему.
1xbet onlayn kazino platforması ilə vaxtınızı daha səmərəli və maraqlı keçirin. Saytın canlı kazino bölməsi istifadəçilərə fərqli bir dünya təklif edir. Burada canlı dilerli kazino oyunlarının hər bir növünü sınaqdan keçirə bilərsiniz. Krupyelərin peşəkarlığı oyunun dinamikasını və marağını artırır. Müntəzəm olaraq yenilənən oyun siyahısı cansıxıcılığa yol vermir. Hesabınızı artırmaq üçün onlarla fərqli və etibarlı üsul mövcuddur. Qazanılan pullar cəmi bir neçə dəqiqə ərzində şəxsi hesabınıza köçürülür. Aktiv fəaliyyətinizə görə fərdi bonuslar və hədiyyələr qazana bilərsiniz. Dəstək xidməti həm çat, həm də e-poçt vasitəsilə kömək göstərir. 1xbet ailəsinə qoşulun və böyük uduşlar üçün ilk addımı atın. onlayn kazino
我一直梦想, 看到你们相册那样的地方。真棒。
我喜欢, 这里分享真实经验。你的项目 就是 属于这里的。请继续。
我热爱这样的想法, 去那么多国家。真的很鼓舞。
能感受到热爱。继续保持 感受。
我关注这样的资源, 写得很实在。你的网站 就是 属于这里的。加油。
1
1
1