打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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>
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
海康RTSP流转RTMP并推送至Web端展示
一、fckEditor的使用。 2009
在服务器上实现对YouTube低延迟的缓冲以方便转播
flv网页播放器代码
网页中播放FLV视频文件
通过node.js进行前后端分离
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服