All Projects → mwunsch → overscan

mwunsch / overscan

Licence: LGPL-3.0 license
A live coding environment for live streaming video

Programming Languages

racket
414 projects
Makefile
30231 projects

Projects that are alternatives of or similar to overscan

Pragha
Pragha is a Lightweight Music Player for GNU/Linux.
Stars: ✭ 136 (+277.78%)
Mutual labels:  gstreamer
vimix
Live Video Mixer
Stars: ✭ 172 (+377.78%)
Mutual labels:  gstreamer
obplayer
📻 OBPlayer Streaming Automation Playout with CAP EAS Alerting
Stars: ✭ 93 (+158.33%)
Mutual labels:  broadcasting
Stb Tester
Automated Testing for Set-Top Boxes and Smart TVs
Stars: ✭ 148 (+311.11%)
Mutual labels:  gstreamer
tgAds
TeleGram Advrtising
Stars: ✭ 24 (-33.33%)
Mutual labels:  broadcasting
parlatype
GNOME audio player for transcription
Stars: ✭ 151 (+319.44%)
Mutual labels:  gstreamer
Glide
Linux/macOS media player based on GStreamer and GTK+
Stars: ✭ 123 (+241.67%)
Mutual labels:  gstreamer
APStreamline
Live Video Streaming Made Easy!
Stars: ✭ 98 (+172.22%)
Mutual labels:  gstreamer
Smart-City-Sample
The smart city reference pipeline shows how to integrate various media building blocks, with analytics powered by the OpenVINO™ Toolkit, for traffic or stadium sensing, analytics and management tasks.
Stars: ✭ 141 (+291.67%)
Mutual labels:  gstreamer
gstreamer-rtc-streamer
webrtc streamer based on gstreamer
Stars: ✭ 65 (+80.56%)
Mutual labels:  gstreamer
Gaupol
Editor for text-based subtitle files
Stars: ✭ 159 (+341.67%)
Mutual labels:  gstreamer
Buildopencvtx2
Build and install OpenCV for the NVIDIA Jetson TX2
Stars: ✭ 249 (+591.67%)
Mutual labels:  gstreamer
kms-filters
Filter elements for Kurento Media Server
Stars: ✭ 15 (-58.33%)
Mutual labels:  gstreamer
Openob
The Open Outside Broadcast project for radio contribution links and studio-transmitter links.
Stars: ✭ 140 (+288.89%)
Mutual labels:  gstreamer
subtitleeditor
Subtitle Editor is a GTK+3 tool to create or edit subtitles for GNU/Linux/*BSD.
Stars: ✭ 79 (+119.44%)
Mutual labels:  gstreamer
Meta Gstreamer1.0
OpenEmbedded layer for GStreamer 1.0
Stars: ✭ 134 (+272.22%)
Mutual labels:  gstreamer
gobject-example-rs
Example for exporting a GObject/C API from Rust
Stars: ✭ 31 (-13.89%)
Mutual labels:  gobject-introspection
AACS
Android Auto Server encapsulates communication with modern car infotainment system
Stars: ✭ 138 (+283.33%)
Mutual labels:  gstreamer
telecarla
TELECARLA: An Open Source Extension of the CARLA Simulator for Teleoperated Driving Research Using Off-the-Shelf Components
Stars: ✭ 34 (-5.56%)
Mutual labels:  gstreamer
node-gstreamer-superficial
Superficial gstreamer binding
Stars: ✭ 111 (+208.33%)
Mutual labels:  gstreamer

Overscan

A study in live video broadcasting with the Racket programming language.

The goal of this project is to learn Racket and to better understand the problems involved in:

  • The Real-Time Messaging Protocol (RTMP) and constructing and streaming unbounded audio and video feeds.
  • The Twitch and Facebook Live API's, for authentication, broadcasting live video streams, and gathering audience data.
  • Video compositing in software.

Originally, the end-goal was to build a toolkit like that found in StreamPro or Streamlabs (née TwitchAlerts) but using a Racket DSL for on-the-fly compositing and graphics.

Now, this project's ambition is to provide a comprehensive live-coding environment for video compositing and broadcasting. This project is inspired by other live-coding environments like Impromptu/Extempore and Overtone.

It is split into three parts:

  1. The ffi/unsafe/introspection module. This module provides dynamic Racket bindings to GObject Introspection, allowing interaction with C GObject libraries using common Racket idioms (i.e. providing racket/class forms such as send and get-field for GObjects).
  2. The gstreamer collection. Using the aforementioned Introspection module, this collection provides Racket bindings for GStreamer, the open source multimedia framework.
  3. The overscan collection and language. This provides a DSL for building a GStreamer pipeline for capturing common video sources (cameras and screens), compositing multiple sources, including generated graphics, and then encoding them and pushing them along to an RTMP server (like Twitch). All of this is designed to happen within a Racket REPL session, allowing the broadcaster full control over the stream by evaluating S-expressions. That's the idea, at least.

You can follow the development along at http://tinyletter.com/wunsch. Read archives of previous weekly devlogs at http://www.markwunsch.com/tinyletter/.

Installation

Overscan has been tested on macOS Sierra with Racket v6.12 and GStreamer v1.14.0. With a working Racket installation you can install with raco:

raco pkg install overscan

For Overscan to do anything meaningful, you also need to install GStreamer and necessary plugins. Using homebrew:

brew install gstreamer

This will install gstreamer along with dependencies glib and gobject-introspection, all of which are required.

You also need to install GStreamer plugins:

brew install gst-plugins-base --with-pango

brew install gst-plugins-good

brew install gst-plugins-bad --with-rtmpdump --with-fdk-aac

brew install gst-plugins-ugly --with-x264

Copyright © 2017 - 2018 Mark Wunsch

This package is distributed under the GNU Lesser General Public License (LGPL). This means that you can link overscan into proprietary applications, provided you follow the rules stated in the LGPL. You can also modify this package; if you distribute a modified version, you must distribute it under the terms of the LGPL, which in particular means that you must release the source code for the modified software. See http://www.gnu.org/copyleft/lesser.html for more information.

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