All Projects → streamwall → streamdelay

streamwall / streamdelay

Licence: MIT License
A delay + dump button for live streams, allowing screening and redaction of explict content.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to streamdelay

Rtmp Rtsp Stream Client Java
Library to stream in rtmp and rtsp for Android. All code in Java
Stars: ✭ 1,338 (+4216.13%)
Mutual labels:  stream, rtmp
rtmp-social-multicast
Want to stream to Twitch, YouTube, Facebook, and/or Periscope at the same time? That's what this project allows you to do!
Stars: ✭ 42 (+35.48%)
Mutual labels:  stream, rtmp
Multi Streaming Server
A NGINX server with RTMP module to send video streaming to multiple services simultaneously (Youtube, Twitch, Dailymotion, Hitbox, Beam, etc...).
Stars: ✭ 132 (+325.81%)
Mutual labels:  stream, rtmp
Rtspallthethings
Deprecated RTSP media server -- Use github.com/aler9/rtsp-simple-server instead.
Stars: ✭ 258 (+732.26%)
Mutual labels:  stream, gstreamer
sms
rtmp server and super media server whith golang.
Stars: ✭ 65 (+109.68%)
Mutual labels:  stream, rtmp
Multistreamer
[discontinued] A webapp for publishing video to multiple streaming services at once.
Stars: ✭ 281 (+806.45%)
Mutual labels:  stream, rtmp
gstreamer-rtc-streamer
webrtc streamer based on gstreamer
Stars: ✭ 65 (+109.68%)
Mutual labels:  gstreamer, rtmp
Srs
SRS is a simple, high efficiency and realtime video server, supports RTMP, WebRTC, HLS, HTTP-FLV, SRT and GB28181.
Stars: ✭ 16,734 (+53880.65%)
Mutual labels:  rtmp, srt
yangwebrtc
Webrtc SDK for C++
Stars: ✭ 257 (+729.03%)
Mutual labels:  rtmp, srt
tms
tms(toy media server) is a toy media server for myself learning media develop. Just for fun.
Stars: ✭ 29 (-6.45%)
Mutual labels:  rtmp, srt
k8s-openresty-streaming
Full-fledged media streaming server with OpenResty and rtmp module
Stars: ✭ 37 (+19.35%)
Mutual labels:  stream, rtmp
auteur
Live GStreamer node compositor service, implemented in rust
Stars: ✭ 24 (-22.58%)
Mutual labels:  gstreamer, rtmp
Brave
Basic Real-time AV Editor - allowing you to preview, mix, and route live audio and video streams on the cloud
Stars: ✭ 474 (+1429.03%)
Mutual labels:  gstreamer, rtmp
Nginx Rtmp Docker
Docker image with Nginx using the nginx-rtmp-module module for live multimedia (video) streaming.
Stars: ✭ 506 (+1532.26%)
Mutual labels:  stream, rtmp
Dockerfiles
Optimized media, analytics and graphics software stack images. Use the dockerfile(s) in your project or as a recipe book for bare metal installation.
Stars: ✭ 98 (+216.13%)
Mutual labels:  gstreamer, rtmp
Subtitle.js
Stream-based library for parsing and manipulating subtitle files
Stars: ✭ 234 (+654.84%)
Mutual labels:  stream, srt
ZLMediaKit
WebRTC/RTSP/RTMP/HTTP/HLS/HTTP-FLV/WebSocket-FLV/HTTP-TS/HTTP-fMP4/WebSocket-TS/WebSocket-fMP4/GB28181/SRT server and client framework based on C++11
Stars: ✭ 7,790 (+25029.03%)
Mutual labels:  rtmp, srt
wsa
WSA(Websocket Streaming Agent) is a stream server target for mp4/h264 streaming over websocket
Stars: ✭ 35 (+12.9%)
Mutual labels:  stream, rtmp
livego
直播服务器 hls stream online RTMP AMF HLS HTTP-FLV
Stars: ✭ 30 (-3.23%)
Mutual labels:  stream, rtmp
mongoose-gridfs
mongoose gridfs on top of new gridfs api
Stars: ✭ 79 (+154.84%)
Mutual labels:  stream

Streamdelay

A pixelated stream filtered using streamdelay

Streamdelay enables streams to have "broadcast delay" for content redaction/filtering. Stream upload is delayed by a customizable duration, allowing a pixelization and audio blocking filter to be applied ahead of sensitive content being broadcast.

Streamdelay accepts an input stream using the SRT protocol (supported by OBS and ffmpeg), and can output to either an SRT or RTMP endpoint (such as twitch.tv or restream.io).

A UI is currently not provided. The streamdelay package is designed to run as a local service, controlled via its built-in API server. This is meant to be integrated into a larger stream management dashboard, such as streamwall.

Setup

Binaries

Binaries may be available via the releases page. You will need to install the GStreamer runtime for your platform.

Source

  1. Ensure you have the buildchain for your platform installed necessary to build binary node modules using node-gyp.
  2. Install GStreamer. You will need both the runtime and development headers installed.
  3. Run npm install. This will install dependencies and build the node-gstreamer-superficial library.

Usage

Starting Streamdelay

  1. Copy example.config.toml to config.toml and customize to suit your needs.
  2. Configure your streaming software to output to the SRT endpoint specified in "srtInUri".
  3. Run (binary) streamdelay --config=config.toml or (development) npm start -- --config=config.toml.
  4. Start streaming.

HTTP API

Streamdelay runs an HTTP server on the hostname and port you configure.

Authentication

Requests must either contain:

  • a Streamdelay-API-Key header equal to the apiKey value configured
  • a ?key=API_KEY query param equal to the apiKey value configured

All responses are Content-Type: application/json.

Get current status

GET /status

returns:

{
  isCensored: bool,
  isStreamRunning: bool,
  startTime: number?,
  state: {... full state object ...}
}

The state object can be matched using xstate's State.from constructor:

// Check if the stream is waiting for a connection
State.from(state).matches('stream.running.waiting')

// Check if the stream is connected and rolling
State.from(state).matches('stream.running.started')

// Check if we're in the process of deactivating the censorship mode
State.from(state).matches('censorship.censored.deactivating')

Start/stop the stream

Start / stop the streaming pipeline. When stopped, streamdelay disconnects from its input and output endpoints.

PATCH /status
Content-Type: application/json
{isStreamRunning: false} or {isStreamRunning: true}

returns: same as /status

Set status

Set the stream status to censored (redacted) or not. When transitioning from censored to uncensored status, Streamdelay will wait the configured delaySeconds before turning off the censored status. This helps prevent early release of the censored mode before the delayed content has been broadcast.

PATCH /status
Content-Type: application/json
{isCensored: false} or {isCensored: true}

returns: same as /status

WebSocket API

GET /ws?key=API_KEY
Upgrade: websocket

Upon initial connection, the current status will be sent in JSON format. It will be sent again whenever the status or state changes.

Sending a JSON message has the same behavior as PATCH /status.

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].