0.1.7 • Published 6 years ago
rtmp-swarm v0.1.7
rtmp-swarm
Publish, consume, and discover RTMP streams in a network swarm.
Install
$ npm install rtmp-swarm
Example
Start a RTMP network daemon belonging to a network swarm specified by a key.
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:
$ 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
:
$ mpv 'rtmp://localhost:42583/rtmp-stream'
API
const swarm = discovery(opts)
where opts
is
{
id: cuid(), // id for this peer
net: require('net') // network interface
maxConnections: 0, // max peering connections
}
which are passed directly to 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
usage: rtmp-stream [-hV] [--help] [--version]
[-k|--key|--key=<key>]
options:
-k, --key=<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