Node Media Server是一个在Github上开源的简易直播平台,可以在里面创建1个或多个直播流。今天这篇文章为搭建教程以及测试。
安装
本文不使用Docker方式安装,所以基本上是一步一步来。文章所用系统为CentOS 7。
首先下载最新版Nodejs并安装,去https://nodejs.org/en/download/package-manager/ 下载针对你Linux系统的源。
以下是CentOS 7操作过程。
curl -sL https://rpm.nodesource.com/setup_12.x | bash - yum install nodejs -y
克隆源码
cd /opt git clone https://github.com/illuspas/Node-Media-Server.git nms cd nms
设置配置文件app.js
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: 'nodemedia2019privatekey' } }
如果你不需要流量加密直播就可以删掉app.js自带的https项,如果你需要那就得准备证书文件。
auth里面app.js自带有api的basic auth验证。建议开启。这样可以登录http://ip:8000/admin的管理页面就可以看到一些系统信息了。
secret改成自己的。
接下来执行
npm i
确保所有依赖都有安装
最后执行
node app.js启动程序
确保上述提到的端口在iptables里允许通过。
直播
由于我们开启了secret验证所以推送是需要通过推送验证的。首先你需要生成一个token,这个token在某个unix时间过期。https://www.epochconverter.com/ 这个网站可以帮助你生成过期日期。假如我们的secret是nodemedia2019privatekey,我们得unix time为1561081411,我们还需要决定一个“房间号”,比如test。然后把这一段文字送入md5计算器
/live/test-1577854799-nodemedia2019privatekey
得出值40ba2c17ab385af02e705d823d237770,那你的推送网址就是
rtmp://ip/live/test?sign=1561081411-40ba2c17ab385af02e705d823d237770
请替换IP到机器的实际IP
使用obs直播参数:
网址:rtmp://IP/live
流名称:test?sign=1561081411-40ba2c17ab385af02e705d823d237770
使用ffmpeg直播视频文件,这里就直接给命令行了:
ffmpeg -re -i movie.mkv -c:v libx264 -preset superfast -f flv rtmp://ip/live/test?sign=1561081411-40ba2c17ab385af02e705d823d237770
官方有要求音频是aac但我发现使用aac音频无法正常播放,所以我去掉了音频方面的选项。不然你可以在参数里添加-c:a aac的选项。视频流必须是x264否则直播极其不清晰。官方写了支持其他格式比如h265,请自行研究。
观看
VLC里打开网络流媒体,填入网址
http://ip:8000/live/test.flv
即可
鸣谢https://lala.im/5879.html 参考了一些资料。