All Projects → t-mullen → Web-Broadcasting-Software

t-mullen / Web-Broadcasting-Software

Licence: MIT license
Broadcasting software for the web. (WBS)

Programming Languages

javascript
184084 projects - #8 most used programming language
CSS
56736 projects
HTML
75241 projects

Projects that are alternatives of or similar to Web-Broadcasting-Software

nebula
Media asset management and broadcast automation system
Stars: ✭ 103 (-25.36%)
Mutual labels:  livestream, broadcast
UitzendingGemist
An *Unofficial* Uitzending Gemist application for Apple TV 4 (**deprecated, use TV Gemist ☝🏻**)
Stars: ✭ 48 (-65.22%)
Mutual labels:  livestream, broadcast
Pyinstalive
Python script to download Instagram livestreams and replays.
Stars: ✭ 336 (+143.48%)
Mutual labels:  livestream, broadcast
snowem
Snowem is a lightweight live streaming server, based on webrtc technology. Its design mainly focuses on simplicity, scalability and high performance.
Stars: ✭ 73 (-47.1%)
Mutual labels:  livestream, broadcast
TVGemist
An *Unofficial* Uitzending Gemist application for  TV
Stars: ✭ 23 (-83.33%)
Mutual labels:  livestream, broadcast
Abnormal event detection
Abnormal Event Detection in Videos using SpatioTemporal AutoEncoder
Stars: ✭ 139 (+0.72%)
Mutual labels:  livestream
Mediadevices
Go implementation of the MediaDevices API.
Stars: ✭ 197 (+42.75%)
Mutual labels:  livestream
Reflv
react component wrap flv.js
Stars: ✭ 122 (-11.59%)
Mutual labels:  livestream
Avideo Encoder
Encoder Server for AVideo Platform Open-Source
Stars: ✭ 116 (-15.94%)
Mutual labels:  livestream
laravel-broadcast-demo
Article: Laravel PWA to implement Broadcasting
Stars: ✭ 17 (-87.68%)
Mutual labels:  broadcast
dart vlc
🎞 Flutter audio / video playback, broadcast & recording library for Windows & Linux.
Stars: ✭ 439 (+218.12%)
Mutual labels:  broadcast
Live Stream Radio
24/7 live stream video radio station CLI / API 📹 📻
Stars: ✭ 175 (+26.81%)
Mutual labels:  livestream
Nile.js
Server
Stars: ✭ 1,757 (+1173.19%)
Mutual labels:  livestream
Rtsp.player.android
RTSP player for Android / IP camera viewer
Stars: ✭ 199 (+44.2%)
Mutual labels:  livestream
Oarplayer
Android Rtmp播放器,基于MediaCodec与srs-librtmp,不依赖ffmpeg
Stars: ✭ 124 (-10.14%)
Mutual labels:  livestream
vimeo-depth-viewer
OpenGL application for viewing depth and color video streams from Intel RealSense cameras
Stars: ✭ 49 (-64.49%)
Mutual labels:  livestream
Raspilive
📷 Stream video from the Raspberry Pi Camera Module to the web
Stars: ✭ 120 (-13.04%)
Mutual labels:  livestream
React Native Live Stream Rtmp Example
React native live stream using RTMP
Stars: ✭ 161 (+16.67%)
Mutual labels:  livestream
AAPB2
American Archive of Public Broadcasting
Stars: ✭ 17 (-87.68%)
Mutual labels:  broadcast
Streamwall
Display a mosaic of livestreams. Built for streaming.
Stars: ✭ 160 (+15.94%)
Mutual labels:  livestream

Web Broadcasting Software (WBS)

JavaScript Style Guide

screenshot

Try the Live Demo

Live broadcasting and recording software for the web, inspired by OBS. WBS allows broadcasters to record video and audio, create video composites, apply audiovisual effects and eventually output to a broadcast transport (which is not within the scope of this project)... all within the browser.

The UI and functionality of WBS is modeled around Open Broadcasting Software (OBS), but can be easily modified to suit less technical users.

If you've never used similar software:

  1. Click "+" on scenes.
  2. Click "+" on sources.
  3. Select a media device.
  4. You can then drag and resize that video, or add more videos to make a composite.
  5. Switch between scenes and active videos by click on them.
  6. "Start Streaming" emits an output MediaStream that can be used in other modules.

install

<script src="wbs.js"></script>

usage

<div></div>
<script>
  var wbs = new WBS('div') // Element or selector to place the UI
  
  wbs.on('stream', function (stream) {
    // fired when user presses "Start Streaming"
    // stream is the MediaStream output
  })
  wbs.on('stopstream', function () {
    // fired when the user presses "Stop Streaming"
  })
</script>

api

var wbs = new WBS(element, [opts])

element is a HTMLElement or CSS selector string. The display will attempt to fit inside this element.

This constructor must be wrapped in a user gesture like a "click" event listener.

Optional opts is a configuration object that will override the following defaults:

{
  output: {
    width: 1200,  // resolution of the output stream
    height: 900,
    fps: 40       // frames per second of the output stream
  },
  injectStyles: true, // whether to inject the WBS css
  inputs: [array of input devices - see below]
}

adding input devices

WBS automatically detects AV devices on the system. However, any method to get a MediaStream can be used as an input. To add your own, put an object inside the opts.inputs array that has the following format:

{
  name: 'Display Name of Device', // Can be anything, but it should be descriptive
  getStream: function (callback) {
    // This function should call "callback" with the following arguments
    callback(err, name, isVideo, stream)  
      - "err" is any error thrown, null otherwise
      - "name" is the name of the device, with the kind (Video/Audio Input/Ouput) in brackets
      - "isVideo" is true if the stream will have only video tracks, false if only audio tracks.
      - "stream" is the input MediaStream
  }
}

Here is an example device:

{
  name: 'Video Camera (Video Input)',
  hasVideo: true, // false for
  getStream: function (callback) {
    getusermedia({audio:false, video:true}, function (err, stream) {
      callback(err, 'Video Camera', true, stream)
    })
  }
}

notes

wbs does not broadcast your video, it simply gives you an output MediaStream to do with as you wish.

You could send it over a WebRTC connection, record it as a file, send to to a proxy RTMP server, pipe it through FFMPEG... anything.

For an example P2P transport using Dat and BeakerBrowser, see wbs-plus-hypercast. (Only works with Beaker Browser.)

Sponsors

Support this project by becoming a sponsor. Your logo will appear here with a link to your website. [Become a sponsor]

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].