Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jwerle/rtmp-swarm
Publish, consume, and discover RTMP streams in a network swarm
https://github.com/jwerle/rtmp-swarm
decentralized dht distributed dns network rtmp rtmp-server
Last synced: 22 days ago
JSON representation
Publish, consume, and discover RTMP streams in a network swarm
- Host: GitHub
- URL: https://github.com/jwerle/rtmp-swarm
- Owner: jwerle
- License: mit
- Created: 2018-03-30T01:21:14.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2019-03-08T21:57:58.000Z (over 5 years ago)
- Last Synced: 2024-10-17T21:04:27.912Z (24 days ago)
- Topics: decentralized, dht, distributed, dns, network, rtmp, rtmp-server
- Language: JavaScript
- Size: 13.7 KB
- Stars: 12
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
rtmp-swarm
==========Publish, consume, and discover RTMP streams in a network swarm.
## Install
```sh
$ npm install rtmp-swarm
```## Example
Start a RTMP network daemon belonging to a network swarm specified
by a key.```js
const discovery = require('./')const port = process.argv[2] || 0
const key = process.argv[3] || 'rtmp-swarm'const node = discovery()
node.join(key).listen(port)
node.on('listening', () => {
const { port } = node.address()
console.log("onlistening: rtmp://localhost:%s/%s", port, key)
})node.on('peer', (peer) => {
console.log('onpeer:', peer);
})node.on('connection', () => {
console.log('onconnection');
})
```Publish video on demand with `ffmpeg` to the rtmp endpoint logged above:
```sh
$ ffmpeg -re -i 2k.mp4 \
-c:v libx264 \
-c:a aac \
-preset superfast \
-tune zerolatency \
-ar 44100 \
-f flv 'rtmp://localhost:40523/rtmp-stream'
```Start another network swarm with the same key, but with a different
port and then access the stream with `mpv` or `ffplay`:```sh
$ mpv 'rtmp://localhost:42583/rtmp-stream'
```## API
### `const swarm = discovery(opts)`
where `opts` is
```js
{
id: cuid(), // id for this peer
net: require('net') // network interface
maxConnections: 0, // max peering connections
}
```which are passed directly to
[discovery-channel](https://github.com/maxogden/discovery-channel).### `swarm.address()`
Returns the server address of this network swarm.
### `swarm.listen(port, address, cb)`
Bind a RTMP server to an optionally specified port and address. Will
call `cb(err)` when listening.### `swarm.join(key, cb)`
Join a network swarm by key. Will call `cb(err)` after joining.
### `swarm.destroy(cb)`
### `swarm.close(cb)`Close and destroy the network swarm.
## Command Line Usage
```sh
usage: rtmp-stream [-hV] [--help] [--version]
[-k|--key|--key=]options:
-k, --key= Discovery key for this RTMP stream.
-V, --version Output program version.
-h, --help Show this message.```
If you do not specify a `key`, one will be generated for you.
## License
MIT