A Node.js implementation of RTMP/HTTP-FLV Media Server
See the codeNode-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.
npm install node-media-server -g
or run directly
npx node-media-server
Options:
-c, --config <path> Path to the config file (default: bin/config.json)
-b, --bind <addr> Bind address, overrides the "bind" config value
--rtmp-port <n> RTMP port, overrides rtmp.port
--rtmps-port <n> RTMPS port, overrides rtmps.port
--http-port <n> HTTP/WebSocket port, overrides http.port
--https-port <n> HTTPS/WSS port, overrides https.port
--data-path <path> Runtime data directory, overrides store.path
--record-path <p> Record output directory, overrides record.path
--record-auto Enable auto recording, forces record.auto on
--notify-url <url> Event webhook URL, overrides notify.url
--auth-play Enable play authentication, forces auth.play on
--auth-publish Enable publish authentication, forces auth.publish on
--no-admin Disable the webadmin console (/admin), media only
-h, --help Show this help
Command line values take precedence over config file values and are
never written back to the config file.

Node-Media-Server can provide static file services for a directory.
"static": {
"router": "/",
"root": "./html"
}
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",
"auto": true
}
Set "auto": false to disable auto-recording of every published stream; streams can then be recorded on demand via the webadmin streams page or POST /api/v1/streams/{app}/{name}/record.
http://server_ip:8000/record/live/stream/unix_time.flv
or
https://server_ip:8443/record/live/stream/unix_time.flv
Node-Media-Server v4.2.0 provides a REST API system for server management and monitoring, featuring:
See the full API documentation in docs/api.md.
| Client | H.264 | HEVC | VP9 | AV1 |
|---|---|---|---|---|
| OBS_29.1+ | ✅ | ✅ | ❌ | ✅ |
| FFmpeg/FFplay_6.1+ | ✅ | ✅ | ✅ | ✅ |
| NodePlayer.js_1.0+ | ✅ | ✅ | ❌ | ❌ |
| NodeMediaClient_3.0+ | ✅ | ✅ | ❌ | ❌ |
Free Android Live Streaming App
Apache 2.0
Overall
Maintained
Code review
Latest release
Releases this year
26 followers · starred Jul 2021
477 followers · starred Jun 2022
690 followers · starred Oct 2020
62 followers · starred Mar 2019
A Node.js implementation of RTMP/HTTP-FLV Media Server
See the codeNode-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.
npm install node-media-server -g
or run directly
npx node-media-server
Options:
-c, --config <path> Path to the config file (default: bin/config.json)
-b, --bind <addr> Bind address, overrides the "bind" config value
--rtmp-port <n> RTMP port, overrides rtmp.port
--rtmps-port <n> RTMPS port, overrides rtmps.port
--http-port <n> HTTP/WebSocket port, overrides http.port
--https-port <n> HTTPS/WSS port, overrides https.port
--data-path <path> Runtime data directory, overrides store.path
--record-path <p> Record output directory, overrides record.path
--record-auto Enable auto recording, forces record.auto on
--notify-url <url> Event webhook URL, overrides notify.url
--auth-play Enable play authentication, forces auth.play on
--auth-publish Enable publish authentication, forces auth.publish on
--no-admin Disable the webadmin console (/admin), media only
-h, --help Show this help
Command line values take precedence over config file values and are
never written back to the config file.

Node-Media-Server can provide static file services for a directory.
"static": {
"router": "/",
"root": "./html"
}
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",
"auto": true
}
Set "auto": false to disable auto-recording of every published stream; streams can then be recorded on demand via the webadmin streams page or POST /api/v1/streams/{app}/{name}/record.
http://server_ip:8000/record/live/stream/unix_time.flv
or
https://server_ip:8443/record/live/stream/unix_time.flv
Node-Media-Server v4.2.0 provides a REST API system for server management and monitoring, featuring:
See the full API documentation in docs/api.md.
| Client | H.264 | HEVC | VP9 | AV1 |
|---|---|---|---|---|
| OBS_29.1+ | ✅ | ✅ | ❌ | ✅ |
| FFmpeg/FFplay_6.1+ | ✅ | ✅ | ✅ | ✅ |
| NodePlayer.js_1.0+ | ✅ | ✅ | ❌ | ❌ |
| NodeMediaClient_3.0+ | ✅ | ✅ | ❌ | ❌ |
Free Android Live Streaming App
Apache 2.0
Overall
Maintained
Code review
Latest release
Releases this year
26 followers · starred Jul 2021
477 followers · starred Jun 2022
690 followers · starred Oct 2020
62 followers · starred Mar 2019