利用Node Media Server搭建直播平台

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 参考了一些资料。

作者:小老外

我还需要不断地学习。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据