龙空技术网

Node-Media-Server开源流行Nodejs流媒体服务器

码码与共 193

前言:

眼前同学们对“nodejsws”可能比较注重,同学们都想要分析一些“nodejsws”的相关知识。那么小编也在网上网罗了一些有关“nodejsws””的相关知识,希望同学们能喜欢,同学们一起来学习一下吧!

简介

Node-Media-Server一个 Node.js 实现的RTMP/HTTP/WebSocket/HLS/DASH流媒体服务器。

开源github地址:

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  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 
使用 flv.js 播放 http-flv 流格式
<script src=";></script><video id="videoElement"></video><script>    if (flvjs.isSupported()) {        var videoElement = document.getElementById('videoElement');        var flvPlayer = flvjs.createPlayer({            type: 'flv',            url: ';        });        flvPlayer.attachMediaElement(videoElement);        flvPlayer.load();        flvPlayer.play();    }</script>
使用 flv.js 播放 websocket-flv 流格式
<script src=";></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>

标签: #nodejsws #js流媒体播放