A light-weight native gStreamer GUI for screencast, webcam, and audio streaming https://notabug.org/bill-auger/av-caster

bill auger ee98706bd5 add CONTRIBUTING.md and update README.md 8 years ago
Assets 61cf87edfe refactor for new GUI layout 8 years ago
Builds 693530cc6a enable tracing in release build 8 years ago
JuceLibraryCode d0426e5854 disable runtime features via cli args (issue #34) 8 years ago
Source 693530cc6a enable tracing in release build 8 years ago
.gitignore 31ce20fdb1 update packaging files 8 years ago
.travis.yml d0426e5854 disable runtime features via cli args (issue #34) 8 years ago
AvCaster.jucer d0426e5854 disable runtime features via cli args (issue #34) 8 years ago
CONTRIBUTING.md ee98706bd5 add CONTRIBUTING.md and update README.md 8 years ago
LICENSE 01e58bdfb4 add LGPL 8 years ago
README.md ee98706bd5 add CONTRIBUTING.md and update README.md 8 years ago

README.md

AvCaster
Gitter

Build Status
Release release build status
Development development build status
Lint static analysis status

*A light-weight native gStreamer GUI for screencast, webcam, and audio streaming*

AvCaster is a native GNU/linux appliction built with the JUCE framework and using gStreamer as the media backend. It is currently capable of recording to file or streaming to an RTMP server with screen capture, webcam, and stereo audio. This initial implementation is specialized for full-screen screencast with webcam overlay. It is moderately configurable, with a preset configuration for streaming via livecoding.tv, and allows custom user-defined configurations to be stored as additional presets. If one is handy with bits it could be easily customized for webcam-only, screencap-only, audio-only, or for any streaming server. Also, it has been designed for portability, anticipating Windows and Mac ports. These and more are planned to become standard features along with presets for other hosts.

Motivation

The motivation behind this project is that streaming with a feature-rich, bleeding-edge client such as OBS and FMLE is very CPU intensive even on reasonably capable machines. In situations such as live code streaming, where the broadcast is an auxiliary concern, there is more utility in reserving those extra cycles for primary development tasks.

A command-line solution is the obvious choice for such scenarios but obviously lacks real-time control and preview. This project was created to mark a reasonable balance between headless performance and a graphical feature set. Initially a simple ffmpeg command-line launcher GUI; it has since become a gStreamer native library implementation.

Get AvCaster

NOTE: AvCaster requires gStreamer >= v1.6.0 and the non-free 'ugly' plugins which may not be available in your standard main/free repository (see "runtime dependencies" for your distro below)

AvCaster Package Repositories

The OpenSUSE Build Service hosts AvCaster x86 and x86-64 binary package repositories for the following distributions:

  • Fedora 23
  • OpenSuse Tumbleweed , Suse SLE 12
  • Ubuntu 15.10

Follow the instructions there to subscribe your package manager or download the latest package for your distribution directly. Let us know if you would like packaging for another architecture.

Other GNU/Linux:

Refer to "Building from Source" below.

Community Support

AvCaster is a free and open-source community project and is still very much in its infancy; so testers, comments, and suggestions are appreciated. Pull requests are quite welcomed and any submissions that advance the project toward is proposed milestones will be accepted. If there is significant community support for this project, it could be transfered to a github organization, an IRC and/or gitter chat could be established, a website could be created, an so on. Let us hear your ideas. If you would like to help to improve AvCaster, we could especially use your help in the following areas:

  • developers/consultants (especially with gStreamer expertise)
  • designers (logo , website , GUI graphics/layout)
  • beta testers (anyone who streams regularly)
  • HOWTO documentation and screencasts

In any case you can "Star" this repo above if you like this project or "Watch" the repo or visit the home page of the AvCaster Wiki for updates.

Getting Help / Bug Reporting

If AvCaster refuses to launch after changing some parameters in the GUI you can try deleting the persistent configuration file in your AppData dir (e.g. ~/.av-caster/av-caster.bin).

Please report any problems on the AvCaster Issue Tracker.

Feel free join the Gitter Chat to post any questions or comments or, well ... just chat.

Building from Source

NOTE: AvCaster requires gStreamer >= v1.6.0

ArchLinux:

### build and install via makepkg ###
$ wget https://raw.githubusercontent.com/bill-auger/av-caster/master/Builds/Packaging/PKGBUILD
$ makepkg --install ./PKGCONFIG

Debian/Ubuntu:

### build dependencies ###
$ sudo apt-get install build-essential libfreetype6-dev libgstreamer-plugins-base1.0-dev \
                       libx11-dev libxcursor-dev libxinerama-dev
### runtime dependencies (Debian 'unstable' , Ubuntu 'wily universe') ###
$ sudo apt-get install freeglut3 gstreamer1.0-plugins-bad gstreamer1.0-plugins-good \
                       gstreamer1.0-plugins-ugly libfreetype6 libgl1-mesa-glx       \
                       libx11-6 libxcomposite1 libxcursor1 libxext6                 \
                       libxinerama1 libxrender1
### compile ###
$ cd Builds/Makefile
$ make CONFIG=Release
$ ./build/av-caster

Suse:

### build dependencies ###
$ sudo zypper install gcc-c++ libX11-devel freetype2-devel libXinerama-devel \
                      libXcursor-devel gstreamer-plugins-base-devel
### runtime dependencies ###
$ sudo zypper install gstreamer-plugins-good gstreamer-plugins-bad-free \
                      gstreamer-plugins-ugly
### compile ###
$ cd Builds/Makefile
$ make CONFIG=Release
$ ./build/av-caster

Fedora:

### build dependencies ###
$ sudo dnf install gcc-c++ libX11-devel freetype-devel libXinerama-devel \
                   libXcursor-devel gstreamer1-plugins-base-devel
### runtime dependencies (rpmfusion repositories) ###
$ RPMFUSION_URL=http://download1.rpmfusion.org
$ FEDORA_VERSION=$(rpm -E %fedora)
$ REPO1=$RPMFUSION_URL/free/fedora/rpmfusion-free-release-$FEDORA_VERSION.noarch.rpm
$ REPO2=$RPMFUSION_URL/nonfree/fedora/rpmfusion-nonfree-release-$FEDORA_VERSION.noarch.rpm
$ sudo dnf install $REPO1 $REPO2
$ sudo dnf install gstreamer1-plugins-good gstreamer1-plugins-bad-free \
                   gstreamer1-plugins-ugly
### compile ###
$ cd Builds/Makefile
$ make CONFIG=Release
$ ./build/av-caster

Other GNU/Linux:

Install the corresponding libraries as above for your system and compile similarly.

Developers and Designers

Please read the contribution guidelines in CONTRIBUTING.md.

Similar Projects

There were several similar projects considered for expansion before this project was launched fresh. They all can capture and mux in audio but they capture screen only (no webcam/text/logo) and only two of them feature a real-time preview. They are ordered roughly by feature-set from most to least capable in terms of the AvCaster project's feature requirements.

Also, the original ffmpeg bash script with all of the features that this project has since re-implemented is in this gist if an ultra-lightweight command-line webcasting tool is more suitable. It requires some manual configuration o/c, but is approximately twice as nice.