介绍
本node.js服务通过获取来自Web客户端采集的实时原始音/视频数据,再将这些数据进行处理后持续推流到RTMP服务器上。实现H5直播推流到RTMP服务器,不再让页面依赖Flash!
- 本项目需要与前端页面建立websocket连接,由于本服务端中使用了socket.io。如需进行二次开发希望你在客户端中使用socket.io-client来进行开发。
服务端接受的接口 | 服务端响应接口 |
---|---|
客户端与服务端连接后 | socket.emit('connected') //websocket连接成功 |
socket.on("start", url) url:推流地址 | socket.emit('started') //ffmpeg指令发送成功 socket.emit('startError',message)ffmpeg出错 |
socket.on("sendBlob", blob) blob:音视频blob对象 | socket.emit('sent') //blob对象推流成功 |
socket.on('end') | socket.emit('ended') //推流结束成功 |
提供一个与该Node服务衔接的Vue前端项目,以帮助你测试与参考WebPushMedia
默认启动端口为8090,如需修改请在index.js中,更改server.listen方法中的参数。
最终生成的镜像大小约445MB
-
在你的系统环境中安装
Docker
引擎,并使其开始工作 -
将
Docker镜像源
设置为国内源 (海外用户忽略) -
安装git
-
将该项目clone到本地
git clone https://gitee.com/JackyM06/NodePushToRTMPServer.git
-
进入
NodePushToRTMPServer
文件夹下cd NodePushToRTMPServer
-
根据项目中已编写的
Dockerfile
生成一个Docker
镜像,并命名为node-push-image
## 构建镜像(请耐心等待) docker build -t node-push-image . ## 查看是否成功完成构建 docker images node-push-image
-
运行生成的镜像,与外部容器的
8090
端口形成映射docker run -p 8090:8090 --restart=always --name="node-push" node-push-image
-
运行环境需要具备 Node.js V8及以上版本 和 NPM V6及以上版本
1. 获取Nodejs资源 curl --silent --location https://rpm.nodesource.com/setup_10.x | bash - 2. 安装Node.js yum install -y nodejs
-
NPM使用cnpm淘宝镜像
1. 安装cnpm npm install -g cnpm --registry=https://registry.npm.taobao.org
-
安装Node服务进程管理工具
cnpm install pm2 -g
-
安装git
yum -y install git
-
安装FFmpeg应用
1. 安装镜像 yum install epel-release 2. 安装nux存储库 rpm -v --import https://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro rpm -Uvh https://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm 3. 安装ffmpeg yum install ffmpeg ffmpeg-devel 4. 检查版本 ffmpeg -version
-
将项目clone到本地中
git clone https://gitee.com/JackyM06/NodePushToRTMPServer.git
-
进入
NodePushToRTMPServer
文件夹下cd NodePushToRTMPServer
-
安装依赖
cnpm install
-
PM2 启动守护进程,并命名进程为
NodePush
- 启动服务 (正常部署时仅启动服务即可,下面的命令可作为维护使用) pm2 start index.js --name NodePush ## PM2 更多维护命令: - 查看服务状态 pm2 status NodePush - 查看服务日志 pm2 log NodePush - 重启服务 pm2 restart NodePush - 停止服务 pm2 stop NodePush - 停止并删除服务 pm2 delete NodePush
-
运行环境需要具备 Node.js V8及以上版本 和 NPM V6及以上版本
-
NPM使用cnpm淘宝镜像
1. 安装cnpm npm install -g cnpm --registry=https://registry.npm.taobao.org
-
安装Node服务前台进程守护工具
cnpm install nodemon -g
-
安装git客户端
-
安装FFmpeg应用
- 去到ffmpeg官网 ,将安装包下载后解压 - 将解压后的文件夹下的bin目录添加到系统环境变量Path中 - 终端命令行中输入`ffmpeg -version `检测是否安装成功
-
将项目clone到本地中
git clone https://gitee.com/JackyM06/NodePushToRTMPServer.git
-
进入
NodePushToRTMPServer
文件夹下cd NodePushToRTMPServer
-
安装依赖
cnpm install
-
Nodemon
前台运行nodemon index.js
-
运行环境需要具备 Node.js V8及以上版本 和 NPM V6及以上版本
1. 更新软件源 # Ubuntu 16.04 TLS,执行以下命令: sudo apt-get update sudo apt-get install -y python-software-properties software-properties-common sudo add-apt-repository ppa:chris-lea/node.js sudo apt-get update # Ubuntu 18.04 TLS,执行以下命令: sudo apt-get update sudo apt-get install -y software-properties-common sudo add-apt-repository ppa:chris-lea/node.js sudo apt-get update 2. 安装NodeJS和NPM # Ubuntu 16.04 TLS,执行以下命令: sudo apt-get install nodejs sudo apt install nodejs-legacy sudo apt install npm # Ubuntu 18.04 TLS,执行以下命令: sudo apt-get install nodejs sudo apt install libssl1.0-dev nodejs-dev node-gyp npm 3. 安装n管理器(用于管理nodejs版本) sudo npm install n -g # 安装最新的nodejs(stable版本) sudo n stable 4. 验证安装 sudo node -v sudo npm -v
-
NPM使用cnpm淘宝镜像
1. 安装cnpm npm install -g cnpm --registry=https://registry.npm.taobao.org
-
安装Node服务进程管理工具
cnpm install pm2 -g
-
安装git
yum -y install git
-
安装FFmpeg应用
- 依次执行一下命令以完成安装 sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next sudo apt-get update sudo apt-get install ffmpeg - 执行 ffmpeg -version 检测是否安装成功
-
将项目clone到本地中
git clone https://gitee.com/JackyM06/NodePushToRTMPServer.git
-
进入
NodePushToRTMPServer
文件夹下cd NodePushToRTMPServer
-
安装依赖
cnpm install
-
PM2 启动守护进程,并命名进程为
NodePush
- 启动服务 (正常部署时仅使用该命令启动服务即可) pm2 start index.js --name NodePush # PM2 其他更多日常维护命令: - 查看服务状态 pm2 status NodePush - 查看服务日志 pm2 log NodePush - 重启服务 pm2 restart NodePush - 停止服务 pm2 stop NodePush - 停止并删除服务 pm2 delete NodePush