Node-Media-Server开源流行Nodejs流媒体服务器
简介
Node-Media-Server一个 Node.js 实现的RTMP/HTTP/WebSocket/HLS/DASH流媒体服务器。
开源github地址:
https://github.com/illuspas/Node-Media-Server
github star: 3100+, MIT 协议
主要技术栈
nodejs, HLS,RTMP,DASH
特性
- 跨平台支持 Windows/Linux/Unix
- 支持的音视频编码 H.264/H.265/AAC/SPEEX/NELLYMOSER
- 支持缓存最近一个关键帧间隔数据,实现RTMP协议秒开
- 支持RTMP直播流转LIVE-HTTP-FLV流,支持 flv.js 播放
- 支持RTMP直播流转LIVE-WebSocket-FLV,支持 flv.js 播放
- 支持星域CDN风格的鉴权
- 支持事件回调
- 支持https/wss加密传输
- 支持服务器和流媒体信息统计
- 支持RTMP直播流转HLS,DASH直播流
- 支持RTMP直播流录制为MP4文件并开启faststart
- 支持RTMP/RTSP中继
- 支持API控制中继
用法
docker 版本
docker run --name nms -d -p 1935:1935 -p 8000:8000 illuspas/node-media-server
git 版本
mkdir nmscd nmsgit clone https://github.com/illuspas/Node-Media-Servernpm inode app.js
使用多核模式运行
node cluster.js
npm 版本(推荐)
mkdir nmscd nmsnpm install node-media-servervi app.js
const NodeMediaServer = require('node-media-server');const config = { rtmp: { port: 1935, chunk_size: 60000, gop_cache: true, ping: 30, ping_timeout: 60 }, http: { port: 8000, allow_origin: '*' }};var nms = new NodeMediaServer(config)nms.run();
直播发布
使用 FFmpeg 推流
如果你有一个音视频编码为H.264+AAC的视频文件转为直播:
ffmpeg -re -i INPUT_FILE_NAME -c copy -f flv rtmp://localhost/live/STREAM_NAME
或者有个其他编码格式,需要转为h.264+AAC的编码再转直播:
ffmpeg -re -i INPUT_FILE_NAME -c:v libx264 -preset veryfast -tune zerolatency -c:a aac -ar 44100 -f flv rtmp://localhost/live/STREAM_NAME
使用 OBS 推流
Settings -> Stream
Stream Type : Custom Streaming Server
URL : rtmp://localhost/live
Stream key : STREAM_NAME
播放直播流
RTMP 流格式
ffplay rtmp://localhost/live/STREAM_NAME
http-flv 流格式
ffplay http://localhost:8000/live/STREAM_NAME.flv
使用 flv.js 播放 http-flv 流格式
<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://localhost:8000/live/STREAM_NAME.flv' }); flvPlayer.attachMediaElement(videoElement); flvPlayer.load(); flvPlayer.play(); }</script>
使用 flv.js 播放 websocket-flv 流格式
<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: 'ws://localhost:8000/live/STREAM_NAME.flv' }); flvPlayer.attachMediaElement(videoElement); flvPlayer.load(); flvPlayer.play(); }</script>
赞 (0)