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

bill-auger 3ecf50f4f6 housekeeping 5 years ago
Assets faa712a0c5 update docs and licenses 7 years ago
Builds 3ecf50f4f6 housekeeping 5 years ago
Documentation faa712a0c5 update docs and licenses 7 years ago
JuceLibraryCode 441fc5121c housekeeping and refactoring 7 years ago
Source 3ecf50f4f6 housekeeping 5 years ago
.gitignore 199a5392ac housekeeping 8 years ago
.travis.yml 7fe8ca5b06 store last viewed config pane per-preset 8 years ago
AvCaster.jucer 9ab0ab34c1 update JUCE to 4.2.4 7 years ago
CONTRIBUTING.md 3ecf50f4f6 housekeeping 5 years ago
COPYING faa712a0c5 update docs and licenses 7 years ago
LICENSES.md 93bbd4373b update license headers 5 years ago
README.md 3ecf50f4f6 housekeeping 5 years ago

README.md

AvCaster

Chat: Gitter
Issues: Issues

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

AvCaster is built upon the JUCE framework, utilizing gStreamer as the media backend and libircclient as the chat backend. It is currently capable of recording to file or streaming to an RTMP server with screen capture (full-screen), webcam (full-screen or overlay), and audio (mono or stereo). It is moderately configurable, with preset configurations for streaming via popular servers such as livecoding.tv, and allows custom user-defined configurations to be stored as additional presets. This initial target is GNU/Linux, but it has been designed for portability and includes starter projects for AndroidStudio, CodeBlocks, VisualStudio, and xCode IDEs. Let us know if it would interest you to see AvCaster ported to another platform (e.g. Windows, Mac, mobile) by leaving a note on the relevant Cross-platform Milestone issue. Feel free to open issues for other platforms if they are not yet listed.
Build Status
Release: release build status
Development: development build status
Lint: static analysis status

Motivation

The motivation behind this project is that streaming with a feature-rich, bleeding-edge client such as the OBS Open Broadcster Software and the classic FMLE Flash Media Live Encoder is a very CPU-demanding task even for reasonably capable computers. Those programs are well suited as a substitute for dedicated capture hardware in high-performance scenarios such as game-casting; but in the most common use-cases such as live performance, design-casting, and code-casting, there is more utility in reserving your CPU cycles for primary tasks such as audio processing, graphics rendering, and source code compiling. Another strong motivation is that most computers can not use either of those popular programs on GNU/Linux; which is the primary target platform for AvCaster.

A command-line solution is the obvious choice for such scenarios but is obviously not as user-friendly and lacking real-time control and preview. The primary design goal for AvCaster is to strike a reasonable balance between headless performance and full-featured graphical convenience. Ideally, AvCaster should be usable on the standard hardware of an Arm device or x86-32bit-era PC with libre drivers and well suited for lesser CPU-intesive tasks such as tutorial screencast recording and vlogging on a wide range of devices.

Get AvCaster

NOTE: AvCaster requires gStreamer >= v1.6.0 and the 'ugly' plugins set 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:

  • Arch
  • Debian 8, Debian 9
  • Fedora 24, Fedora 25
  • OpenSuse Leap 42.2, OpenSuse Tumbleweed
  • Ubuntu 16.04, Ubuntu 16.04

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

Arch:

There is also an AUR repo for AvCaster maintained by GitHub user fa7ad. Feel free to vote for AvCaster on AUR if you are an AUR user and would like to see AvCaster promoted to the 'community' binary repo.

The Arch PKGBUILD file is also included in the Builds/Packaging/ directory of this repo. Refer to the "Building from Source" section below.

Other GNU/Linux:

Refer to the "Building from Source" section below.

Getting Help / Bug Reporting

If AvCaster refuses to launch after changing some parameters in the GUI you can (as a last resort) try deleting the persistent configuration file in your user AppData dir (e.g. ~/.config/av-caster/av-caster.bin). Note that this will reset/clear all settings back to the initial state.

Please report any problems on the AvCaster Issue Tracker.

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

Building from Source

Arch:

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

Debian >= 9, Ubuntu >= 15.10:

### build dependencies ###
$ sudo apt-get install build-essential libfreetype6-dev libgstreamer-plugins-base1.0-dev \
                       libircclient-dev libx11-dev libxcursor-dev libxinerama-dev        \
                       libxrandr-dev

### runtime dependencies ###
$ sudo apt-get install freeglut3 gstreamer1.0-alsa gstreamer1.0-plugins-bad       \
                       gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly        \
                       gstreamer1.0-pulseaudio libfreetype6 libgl1-mesa-glx       \
                       libircclient1 libx11-6 libxcomposite1 libxcursor1 libxext6 \
                       libxinerama1 libxrender1

### compile ###
$ cd Builds/Makefile
$ make
$ sudo make install

### run ###
$ av-caster

Fedora >= 23 (plus rpmfusion repositories):

### build dependencies ###
$ su -c "dnf install freetype-devel gcc-c++ gstreamer1-plugins-base-devel               \
                     libircclient-devel libX11-devel libXcursor-devel libXinerama-devel \
                     libXrandr-devel"

### runtime dependencies ###
$ RPMFUSION_URL=http://download1.rpmfusion.org/free/fedora
$ FEDORA_VERSION=$(rpm -E %fedora)
$ REPO_PKG=$RPMFUSION_URL/rpmfusion-free-release-$FEDORA_VERSION.noarch.rpm
$ su -c "dnf install $REPO_PKG"
$ su -c "dnf install gstreamer1-plugins-bad-free gstreamer1-plugins-bad-freeworld \
                     gstreamer1-plugins-good     gstreamer1-plugins-good-extras   \
                     gstreamer1-plugins-ugly     libircclient"

### compile ###
$ cd Builds/Makefile
$ make
$ su -c "make install"

### run ###
$ av-caster

OpenSuse Leap >= 42, OpenSuse Tumbleweed, Suse SLE >= 12:

### build dependencies ###
$ sudo zypper install freetype2-devel gcc-c++ gstreamer-plugins-base-devel               \
                      libircclient-devel libX11-devel libXinerama-devel libXcursor-devel \
                      libXrandr-devel

### runtime dependencies ###
$ sudo zypper install gstreamer-plugins-bad gstreamer-plugins-good \
                      gstreamer-plugins-ugly libircclient1

### compile ###
$ cd Builds/Makefile
$ make
$ sudo make install

### run ###
$ av-caster

Other GNU/Linux:

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

Community

AvCaster is a free and open-source community project; 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. 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" the upstream repo to show your support for this project and you can "Watch" the repo or visit the home page of the AvCaster Wiki for updates.

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

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 ffmpeg shell script that AvCaster was originally conceived to wrap is in a separate repo if an ultra-lightweight command-line webcasting tool is more suitable. It is capable of recording to file or streaming to an RTMP server with screen capture, webcam, text overlay, and stereo audio. It requires some manual configuration o/c, but is approximately twice as nice.