Giter VIP home page Giter VIP logo

rtmp-swarm's Introduction

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

rtmp-swarm's People

Contributors

jwerle avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.