node.js创建流媒体服务器

系统:linux

一、npm安装

Ubuntu:

# 安装 npm
sudo apt-get install npm 
# npm 升级
sudo npm install -g npm
# 切换到淘宝镜像源
npm install -g cnpm --registry=http://registry.npm.taobao.org

二、安装express

# 先安装generator
sudo npm install -g express-generator
# 安装express
sudo npm instal -g express

三、通过express创建工程

# 新建工程
express --view=ejs nodeServer
# 进入到工程目录
cd nodeServer
 
{
  "name": "nodeServer",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "cookie-parser": "~1.4.3",
    "debug": "~2.6.9",
    "ejs": "~2.5.7",
    "express": "~4.16.0",
    "http-errors": "~1.6.2",
    "morgan": "~1.9.0",
    "node-media-server": "~1.4.3"
  }
}
# 利用npm安装所有依赖
npm install 
# 至此 node.js 环境配置完成

在NodeServer文件夹中新建js文件,如:nodeServerTest.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();

在该文件夹下终端运行如下指令:

# 以非严格模式运行
node --harmony nodeServerTest.js

得到结果如下: 
 
至此,node.js已创建服务器,相关端口参数如果后来者不明白,自己百度科普

四、安装ffmpeg并推送流数据

Ubuntu下安装ffmpeg比较方便:

sudo apt-get install ffmpeg

查找摄像头设备:

sudo ls /dev/video*
# 若只有一个摄像头,得到的一般是 /dev/video0

ffmpeg推送流

ffmpeg -f video4linux2 -i /dev/video0 -vcodec libx264 -acodec libvo_aacenc -b 1080k -r 33 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://localhost:1935/live/STREAM_NAME
# 附注:在Windows系统下,-f后面的参数多为dshow,-i后面的参数video="摄像头名":audio="麦克风名",在Windows系统中,多为虚拟设备

运行效果如下: 
 
参考链接 
链接备用:(https://oainin.wordpress.com/2018/06/09/nodejs%E5%88%9B%E5%BB%BA%E6%B5%81%E5%AA%92%E4%BD%93%E6%9C%8D%E5%8A%A1%E5%99%A8/) 
至此在其他主机上能够访问实时流

五、在网页上访问流数据

新建html文件,如:videoPlay.html





用浏览器打开该html文件即可实时查看流数据。 

1、视频延迟比较久,原因暂未知,貌似和缓冲区大小无关 
2、打开的浏览器用高端点的,需要能够支持html5,否则自己该页面代码 
3、视频未加载音频,若需加载详情百度ffserver.conf相关配置以及linux音频输入设备查找 

你可能感兴趣的:(linux,Node.js)