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

boyanx2个月前技术教程8

简介

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 nms
cd nms
git clone https://github.com/illuspas/Node-Media-Server
npm i
node app.js

使用多核模式运行

node cluster.js

npm 版本(推荐)

mkdir nms
cd nms
npm install node-media-server
vi 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>
标签: aplayer.js

相关文章

Wordpress建站教程:Slider Revolution插件导致后台慢,怎么解决

作者:悦然wordpress建站(悦然建站)(此处已添加小程序,请到今日头条客户端查看) 继续分享wordpress建站教程。Slider Revolution插件的幻灯动画功能非常强大,它基本上就是...

我的世界死亡次数统计板制作攻略

小编今天给大家带来我的世界死亡次数统计板制作攻略,我的世界死亡次数统计板怎么制作呢?希望这篇我的世界死亡次数统计板制作攻略能够帮助到大家!计分板的用途:计分板系统可以统计玩家的死亡次数deathCou...

一款优秀、开源的 HTML5 视频播放器

简介MuiPlayer 是一款 HTML5 视频播放插件,其默认配置了精美可操作的的播放控件,涉及了常用的播放场景,例如全屏播放、播放快进、循环播放、音量调节等功能。支持 mp4、m3u8、flv 等...

推荐 9 个 yyds 前后端分离项目

前后端分离是现在主流的架构设计模式,它初衷是用「单一职责」原则把代码质量提上去从而达到节省人力和减少沟通时的信息损失的目的。本文推荐九个前后端分离的开源项目,都是采用最流行的技术栈。本文推荐的开源项...

无汉化不音乐,foobar2000 v1.3.4汉化版下载

IT之家(www.ithome.com):无汉化不音乐,foobar2000 v1.3.4汉化版下载五天之前,免费音乐播放器foobar2000正式更新至v1.3.4 Final正式版本。该版本带来了...

tvOS真的代表了应用的未来吗?

CSDN移动将持续为您优选移动开发的精华内容,共同探讨移动开发的技术热点话题,涵盖移动应用、开发工具、移动游戏及引擎、智能硬件、物联网等方方面面。如果您想投稿,或寻求《近匠》报道,请发送邮件至tang...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。