https://github.com/illuspas/node-media-server
A Node.js implementation of RTMP/HTTP-FLV Media Server
https://github.com/illuspas/node-media-server
av1 flv h264 hevc livestream media-server nodejs rtmp vp9
Last synced: 6 days ago
JSON representation
A Node.js implementation of RTMP/HTTP-FLV Media Server
- Host: GitHub
- URL: https://github.com/illuspas/node-media-server
- Owner: illuspas
- License: apache-2.0
- Created: 2015-01-19T02:13:03.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2025-04-30T06:57:00.000Z (18 days ago)
- Last Synced: 2025-05-12T04:11:38.419Z (6 days ago)
- Topics: av1, flv, h264, hevc, livestream, media-server, nodejs, rtmp, vp9
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/node-media-server
- Size: 1.63 MB
- Stars: 6,114
- Watchers: 194
- Forks: 1,546
- Open Issues: 427
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# Node-Media-Server v4
[](https://nodejs.org/en/)
[](https://npmjs.org/package/node-media-server)
[](https://npmjs.org/package/node-media-server)
[](LICENSE)## Introduction
Node-Media-Server is a high-performance/low-latency/open-source Live Streaming Server developed based on Nodejs.
v4 is design to implement enhanced RTMP FLV v1 support for native HEVC, VP9, AV1.
v4 is no longer compatible with the cn_cdn extension id flv_265 standard.
v4 is no longer compatible with flashplayer's rtmp protocol.
v4 is incompatible with v2. Do not upgrade across major versions.## Installation
```
npm install node-media-server -g
```or run directly
```
npx node-media-server
```## Features
* HTTP/HTTP2-flv Push/Play
* RTMP/RTMPS Push/Play
* GOP cache
* Notification
* Authentication
* Static file server
* Record to flv file## Roadmap
* HTTP-API
* Rtmp Relay## Supported clients
|Client | H.264 | HEVC | VP9 | AV1|
| ------------ | ------------ |------------ |------------ |------------ |
| OBS_29.1+| ✅ | ✅ | ❌| ✅ |
| FFmpeg/FFplay_6.1+ | ✅ | ✅ | ✅ | ✅ |
| NodePlayer.js_1.0+ | ✅ | ✅ | ❌ | ❌ |
| NodeMediaClient_3.0+ | ✅ | ✅ | ❌ | ❌ |## Usage
* obs_29.1 or above is required
* ffmpeg_6.1 or above is required### Push Streaming
```
ffmpeg -re -i test_265.mp4 -c copy -f flv rtmp://localhost/live/test_265
``````
ffmpeg -re -i test_av1.mp4 -c copy -f flv http://localhost:8000/live/test_av1.flv
```### Play Streaming
```
ffplay http://localhost:8000/live/test_265.flv
```### [NodePlayer.js](https://www.nodemedia.cn/product/nodeplayer-js/) pure javascript implementation live streaming player
[Online Demo](http://demo.nodemedia.cn/)
- ASM.js, WASM, SIMD, WebWorker, WebCodecs, MediaSource multiple technical implementations
- H.264/H.265+AAC/G711 software and hardware decoder
- Ultra-low latency, Under extreme conditions less than 100 milliseconds
- Enhanced HTTP/WS-FLV Protocol, Natively support h.265
- Android/iOS/HarmonyOS/Chrome/Edge/Firefox/Safari, All modern browsers or platforms## Static file services
Node-Media-Server can provide static file services for a directory.
```
"static": {
"router": "/",
"root": "./html"
}
```## Record to flv file
Node-Media-Server can record live streams as FLV files.
When the static file server is enabled and recordings are saved in its directory.
It can provide video-on-demand services.```
"record": {
"path": "./html/record"
}
``````
http://server_ip:8000/record/live/stream/unix_time.flv
or
https://server_ip:8443/record/live/stream/unix_time.flv
```## License
Apache 2.0