Internet Pocket Radio Casting Studio

August 9, 2018

Note: the ISO distro has been removed due time required for maintence. Contact me directly if you need the last copy of it.

Internet Broadcasting & Remote Presentation Automation and Encoding Toolkit is a package to automate and broadcast on the Internet. It manages playlists, video, audio and encodes. It is new and will change frequently. It has been tested mainly on Linux Mint 19 Tara but may work with related systems with appropriate adjustments to the window manager theme (see documentation).

Internet Radio Automation and Encoding Toolkit PDF


Video Demo.
Video shows several quick scene and background transitions. Video clip is from the opera Orpheus in the Underworld by Jacques Offenbach where the Can-Can originated.


A low resource internet desktop casting/radio system. Permits you to stream to an RTMP server (such as YouTube, iVlog, VaughnLive, etc) with minimal hardware resources. Requires Linux. Based on ffmpeg:

Code: DeskTopCast.003.tgz

Configuration Notes

  1. The studio software should work with any late model computer but OBS may not be compatible with systems with older graphics cards. If you have an older system, testing it first with the live DVD or flash drive would be advisable.
  2. If you want to install the studio software on an existing Linux system, you need the .tgz file. It contains the directory Jack-OBS-Studio which should be decompressed into your home directory. This directory contains the Bash script and configuration files needed to install, configure, and run the studio.

    To make the script files executable, type:

      chmod u+x *.script

    To install on your existing system the software only, your distro of Linux must be Ubuntu compatible. It has been tested with Lubuntu 16.10 and Mint 18.1. Other recent similar versions of Linux should work as well. The installation relies on .deb packages and the apt-get package. If your system does not use these, the install will not work in its present form. The installation script performs a number of apt-get installs, copies files to configuration directories, adds your username to some software groups (created by the installations), and adds lines at the end of two files in /etc.

    • To run the install script on an existing Linux installation, open a terminal window in the Jack-OBS-Studio directory. Become root, and run the script install.script (note: you may need to make it executable as shown above).
    • The install.script will attempt to install several software packages, and configure your system. It has been tested only on Lubuntu 16.10 and Mint 18.1 but it will probably work on most Ubuntu based distros. Besides installing software, the script will add some settings in /etc and add you to some groups that were created by software installations. You will be asked questions in the script. When it asks for username, that should be the username that you logged in as (that is, you name, not root or any other name). The install script will generate a lot of messages and take some time. You must be connected to the Internet for this to work as it will download and install several packages.
    • Once the software has installed, re-boot to be sure all the changes have taken place and the correct daemons have been started.
    • To run the studio, enter the Jack-OBS-Studio directory, open a terminal window, and run, as yourself, NOT as root, startStudio.script (you may need to make this executable as shown above.) The startStudio.script will start the components which have been previously installed and you will see a display similar to the demo below.
  3. The startup script and demo. The startup script is startStudio.script and it is located in the Jack-OBS-Studio directory.

    The startup script starts the JACK daemons and other software. You may modify it.

    Once all the tasks have started and the windows have finished repositioning themselves, you will see the Jack Audio Master (jamin) interface in the upper left, Jmeters center left, the Qjackctl lower left, SMPlayer lower center, the Qjackctl patch bay lower right and Open Broadcast Studio upper right. A brief video will be playing, with sound, in the SMPlayer window. The meters and green bars (in jamin) should be moving and a copy of the video should be playing in OBS. When the video finishes, you may restart it or load another audio or video file.

    To begin casting, click the Start Streaming button in OBS but only if you have first configured OBS with the casting site's URL and streaming key (see below).

    If you wish to shut down, click the X boxes in each window as per normal EXCEPT: do not click the X box in the patch bay, click the X box in Qjackctl instead. Killing Qjackctl will close the patchbay as well. Note: if you decide to kill the patchbay itself first, you will not see it the next time you start up but can bring it back by clicking the patchbay button in Qjackctl.

      Note: input audio is probably enabled (depends on your system settings). That is, your Line In or Mic may be active. Consequently, if you are on a laptop, your microphone may cause feedback. Mute it.


Demo of the studio in action. Recorded at 720 so enlarge to full screen for best view. Note that I adjusted the audio (follow the cursor) early on. The demo was created using OBS in record mode. What you are seeing could have been the stream.

    "... A webcast is a media presentation distributed over the Internet using streaming media technology to distribute a single content source to many simultaneous listeners/viewers. A webcast may either be distributed live or on demand. Essentially, webcasting is "broadcasting" over the Internet.

    The largest "webcasters" include existing radio and TV stations, who "simulcast" their output through online TV or online radio streaming, as well as a multitude of Internet only "stations". Webcasting usually consists of providing non-interactive linear streams or events. Rights and licensing bodies offer specific "webcasting licenses" to those wishing to carry out Internet broadcasting using copyrighted material.

    Webcasting is used extensively in the commercial sector for investor relations presentations (such as annual general meetings), in e-learning (to transmit seminars), and for related communications activities. However, webcasting does not bear much, if any, relationship to web conferencing, which is designed for many-to-many interaction.

    The ability to webcast using cheap/accessible technology has allowed independent media to flourish. There are many notable independent shows that broadcast regularly online. Often produced by average citizens in their homes they cover many interests and topics. Webcasts relating to computers, technology, and news are particularly popular and many new shows are added regularly.

    Webcasting differs from podcasting in that webcasting refers to live streaming while podcasting simply refers to media files placed on the Internet. ..."

Webcasting is a growing hobby and business interest for many people and there are a number of free and pay sites that host casting services. Among those that support audio and video streaming are:

  1. Ustream
  2. Vaugnlive
  3. iVlog
  4. YouNow
  5. Facebook
  6. YouTube
  7. Twitch
  8. Hitbox
  10. Livestream
There are several software encoding packages used to implement streaming. Some of these are proprietary, such as those from YouTube, Facebook, and Skype, and some are more general purpose such as Xsplit, VLC, FFsplit, Flash Media Encoder (Adobe), and Open Broadcast Studio and others. Some are free, some are open sources, some have both free and paid versions.

The streaming software most used in Linux is Open Broadcast Studio (OBS), a re-write of Open Broadcaster (which is still available) (
OBS supports multiple scenes, audio sources, broadcast settings (frame rate, resolution, compression, audio and video bit rates, sample rates, as well as a recording mode where the contents are saved to disk rather than broadcast.

A scene in OBS can consist of multiple elements including realtime screen capture direct media embedding, text, cameras, images, slide shows, and audio sources. Multiple scenes can be organized and saved and scenes can be changed in real time, with a preview mode and special effects (e.g. fade, swipe, slide, luma Wide and fade to color).

In Linux, the most advanced sound server is JACK (see below), a low-latency audio server which provides a large professional features not available in the more commonly used PulseAudio sound system. Also, experience indicates that OBS stability is enhanced when using JACK rather than PulseAudio. However, JACK, while is compatible with OBS and related clients, setup can be challenging.

PocketRadio Toolkit


The component software packages pre-installed and configured in the distribution are:

  1. OBS (Open Broadcast Studio).
      OBS is the casting software. With it you assemble a scenes consisting of fixed images, live camera feeds, audio inputs, the content of windows from your desktop, and so forth. The contents of the active scene may be encoded and sent to a streaming server where the stream is then distributed to viewers on the Internet. There is also the option to record your program for possible streaming or other use at a later date.
  2. The Jack Audio Connection Kit (JACK)
    • "... JACK is a low-latency audio server, written for any operating system that is reasonably POSIX compliant. It currently exists for Linux, OS X, Solaris, FreeBSD and Windows. It can connect several client applications to an audio device, and allow them to share audio with each other. Clients can run as separate processes like normal applications, or within the JACK server as "plugins". ..."
    • "... JACK was designed from the ground up for professional audio work, and its design focuses on two key areas: synchronous execution of all clients, and low latency operation. ..."
      "...JACK Audio Connection Kit (or JACK; a recursive acronym) is a professional sound server daemon that provides real-time, low-latency connections for both audio and MIDI data between applications that implement its API. JACK has been developed by a community of open-source developers led by Paul Davis (who won an Open Source Award in 2004 for this work) and has been a key piece of infrastructure and the de facto standard for professional audio software on Linux since its inception in 2002. The server is free software, licensed under the GNU GPL, while the library is licensed under the more permissive GNU LGPL. ..."
      See also:
  3. Supporting components include:
    1. JAMin - the Jack Audio Master Interface.
        JAMin is the JACK Audio Connection Kit (JACK) Audio Mastering interface. JAMin is an open source application designed to perform professional audio mastering of stereo input streams. It uses LADSPA for digital signal processing (DSP). JAMin is licensed under the GPL.
      • JAMin features:
      • Linear filters
      • JACK I/O
      • 30 band graphic EQ
      • 1023 band hand drawn EQ with parametric controls
      • Spectrum analyzer
      • 3 band peak compressor
      • Lookahead brick wall limiter
      • Multiband stereo processing
      • Presets and scenes
      • Loudness maximizer
    2. QjackCtl JACK Audio Connection Kit - Qt GUI Interface
        Provides a simple GUI dialog for setting several JACK daemon parameters, which are properly saved between sessions, and a way control of the status of the audio server daemon. With time, this primordial interface has become richer by including an enhanced patchbay and connection control features.
    3. Jmeters and Meterbridge that provide graphical VU and other audio metering and displays.
    4. Mixxx an open source, GPL audio mixing and DJ studio, configured for JACK output.
        Mixxx is free DJ software for Windows, Mac OS X and Linux. It’s easy to use so you can start mixing your favorite songs in no time, even if you’ve never DJed before. Mixxx offers a variety of features for experienced DJs and beginners alike, such as automatic beat and key detection, master sync, hotcues, looping, 4 decks, effects and many more. You can perform with Mixxx using MIDI and HID controllers, CD players, vinyl turntables or even just your computer’s keyboard and mouse.
    5. SMPlayer & mpv - a video and audio player configured for JACK
        SMPlayer is a free media player for Windows and Linux with built-in codecs that can play virtually all video and audio formats. It doesn't need any external codecs. Just install SMPlayer and you'll be able to play all formats without the hassle to find and install codec packs.

        SMPlayer is a graphical user interface (GUI) for the award-winning MPlayer, which is capable of playing almost all known video and audio formats. But apart from providing access for the most common and useful options of MPlayer, SMPlayer adds other interesting features like the possibility to play Youtube videos or download subtitles.

    6. JackEQ Audio equalizer
        JackEQ is intended to provide an accessible method for tweaking the treble, mid and bass of any JACK aware applications output. Designed specifically for live performance, it is modeled on various DJ mixing consoles which the main author Patrick Shirkey (aka DJ Kotau) has worked with live.

        JackEQ is a tool for routing and manipulating audio from/to multiple input/output sources. It runs on the JACK audio system, and uses the DJ EQ swh ladspa plugin created by Steve Harris, also one of jackEQ's major contributors along with Jack O'Quin who crafted the majority of the JACK ports menu code.

    7. PulseAudio Volume Control
        PulseAudio Volume Control (pavucontrol) is a simple GTK+ based volume control tool (mixer) for the PulseAudio sound server. In contrast to classic mixer tools this one allows you to control both the volume of hardware devices and of each playback stream separately. It also allows you to redirect a playback stream to another output device without interrupting playback.
    8. guvcview A software package to control video capture devices used with OBS.
        The guvcview project aims at providing a simple interface for capturing and viewing video from v4l2 devices, with a special emphasis for the linux uvc driver.
        The project provides a control interface based on Gtk3 or Qt5, depending on the build configuration. A console only option is also available.
        You can also use guvcview has a control window only, (from console: guvcview --control_only), this allows image control on other apps, like ekiga, cheese, mplayer, skype, ...
    9. OpenShot Video Editor
        Simple. Powerful. OpenShot Video Editor is a free, open-source video editor for Linux, Mac, and Windows licensed under the GPL version 3.0.
        OpenShot can take your videos, photos, and music files and help you create the film you have always dreamed of. Easily add sub-titles, transitions, and effects, and then export your film to DVD, YouTube, Vimeo, Xbox, PlayStation, and many other common formats.
    10. RecordMyDesktop An application to create a video and audio record of a desktop session.
    11. QJackRcd An application to record Jack audio.
    12. JackMixer An application to mix Jack input and output.

How It Works

When you click the ‘Run Jack OBS’ icon, a Bash script file is initiated. The script, in turn, starts the several programs ans services needed to begin an Internet streaming cast. The script file, jack.script, at present, is shown below. It does the following:

  1. Enters the directory containing the demo code and video.
  2. Names the current window “studio start”
  3. Checks that it is not being run as root.
  4. Terminates any current instances of daemons jackd and jackdbus
  5. Sets the Jack Server name
  6. starts the jackd daemon
  7. Pauses one second to allow the software to initiate.
  8. Clears the desktop.
  9. Starts jmeters
  10. Starts jamin
  11. Starts OBS
  12. Starts SMPlayer playing a short video clip
  13. Starts qjackctl which, in turn, establishes the audio connections.
  14. Re-arranges the desktop for maximum visibility
  15. Waits until all tasks have finished.
If you look at the Patchbay connections in the lower right, you will see the Jack audio connections that are being used. Patchbay is part of qjackctl which is labeled as Jack Connection Kit in the display in the lower left box.

  1. Output from mpv and system are routed to jamin input (right hand box).
    1. Mpv is the the actual video player being used by SMPlayer. So, audio from the video is being routed to jamin. The regular expression after mpv is used to take the output from any instance of mpv. If you play more than one video, the second video will be a second instance of mpv and it will, unless captured, connect to both system and jamin and this will produce an echo. The regular expression prevents this from happening.
    2. System is any input arriving at the audio card’s Line In or Microphone, depending on your systems settings. This input is likewise sent to jamin.
  2. Jamin processes the audio. Jamin has equalizers, compressors, limiters and other tools. The output of jamin (left hand box) is routed
    1. to system (your audio card output),
    2. processed (the name given to the instance of the jmeters) and
    3. JACK Input Client (the input of OBS).
You may add additional sources (such as Mixxx) and targets (equalizers, other meters, etc). If you add an equalizer (in which case you’ll probably want to remove jamin, the equalizer will have two entries: a set of input sockets (right box) and a set of output sockets (left box). If you alter the patchbay configuration, you should save it.

OBS takes images and audio from several sources and assembles them on the screen. The screen and audio will be sent to the streaming server (or, you may record the cast to disk). A given assembly of input sources is called a scene. In the demo, there are two scenes (lower right OBS box).

In the scene shown by default, video insert, there are five sources of audio and video:

  1. meter processed. This is the display of the meters.
  2. JACK Input Client. This is the audio coming from JACK. There is a volume control and mute button for the audio in the box under the label ‘Mixer’.
  3. The video from SMPlayer (mpv, actually).
  4. The display from jamin.jam
  5. a static image of a road named Nebraska (photo is actually from Iowa).
The size and position of the elements on the screen may be adjusted by drag and drop with your mouse. Additional elements, for example a camera, may be added by clicking the large plus sign. Element layers can be moved up or down by the up and down arrows. If a higher display element overlaps a lower element, parts of the lower element will be obscured. You can switch scenes by clicking on a selection in the Scenes box. You may control the transition (fade, etc).

If you want to begin streaming, you need to provide a streaming key and URL. Click Settings:

In the picture, the URL for Vaughn Live is shown (substitute the URL for your server and the stream key (provided by your streaming service).

Other options allow you to set the audio bit rate, number of frames per second, video resolution and so on. Generally, you want to set the bit rates, frame rates and resolutions as low as possible consistent with content goals in order that your overall stream rate will be attractive. High stream rates tend to discourage viewership on tablets and cell phones. A 'good' bit rate is one not higher than 1 megabit per second.

Once you have established your settings and streaming key, on the main screen, click “Start Streaming” and you’ll be an Internet sensation in no time....

Audio from non-compatible systems

In the case where where audio output from a non-compatible software package must be used (such as Firefox or Chrome, at present), an inexpensive (about $8.00) USB audio card can be used to take audio from the package and, usually by means of a mixer which you will probably want for your microphone anyway, routed back into the system as input to JACK (see below for details).

hardware level audio control in most Linux systems is handled by ALSA (Advanced Linux Sound Architecture). It interacts with the actual audio hardware. ALSA typically can support up to eight sound cards, each capable of input and output.

ALSA is not accessed directly by programs. Instead, programs access a sound server. In most systems, the default audio server is PulseAudio. PulseAudio permits multiple audio sources and targets to connect concurrently. It is PulseAudio that interacts with the hardware level audio server ALSA.

In this configuration, JACK replaces PulseAudio and manages the connection to ALSA. Thus, software connects to JACK and JACK connects to ALSA.

However, if you start PulseAudio software prior to starting JACK and configure your system such that PulseAudio will interact with ALSA to use the added audio device, PulseAudio-only compatible software will work. PulseAudio Volume Control can be used to select the device that PulseAudio will interact with (via ALSA).The output from an added USB device may be routed back into the main JACK controlled device directly via a cable or a combination of mixer and cable.

Video Players

SMPlayer is essentially a wrapper for mpv. Mpv may be initiated directly from a command line with a command of the form:

mpv --audio-delay=0.06 --msg-level=ffmpeg=fatal --no-osc --volume=100 --ao jack \
--shuffle --geometry=450x315+650+700 --playlist=PlayList.m3u


  • The backslash at the end of the first line indicates that it is continued on the next line. You may want to mit it and place the contents of the second line at the end of the first.
  • --audio-delay=0.06 is used to sync the final audio and video. Because the audio passes through more steps, it reaches the encoder (OBS) later than the video. This adjustment can compensate for the delay. The amount of delay will be machine Dependant. This value will not be suitable for all.
  • --msg-level=ffmpeg=fatal prevents warnings from ffmpeg from being displayed. Other message levels are available.
  • --no-osc turns of the on screen display - a graphical area that shows progress and allows for start, pause, etc. on screen mouseover.
  • --volume=100 sets the volume output at max. The volume can be controlled be better controlled in jamin.
  • --ao jack tell mpv to route audio output to JACK.
  • --shuffle causes mpv to shuffle the play list.
  • --geometry=WidthxHeight+Hor+Ver determines the placement and size of the video player window. A consistent video player window size is usually desired when using OBS. Note: --autofit may also be used to create more dynamic but still size restricted player windows (see below).
  • --playlist=PlayList.m3u is the name of the playlist of audio or video recordings. Most common playlist formats are accepted.
In the terminal window from which the above command was launched will appear a synopsis of the recording being played. The contents of this window may be captured by OBS for a title display.

Because Jamin introduces delay in the audio stream, you may want to delay the video as well. This can be done in mpv with a command of the form:

mpv --audio-delay=.1 --no-osc --volume=100 --ao jack --shuffle --autofit=450 \

You will may need to change this depending on your system hardware.

You may launch mpv from the startStudio.script by the command:

mate-terminal --working-directory=/media/joeuser/VideoClips -e ./abc.script &


  • --working directory identifies the director containing the script file with the mpv command from above.
  • -e ./abc.script is the bash script file containing the mpv command from above.

iVlog OBS Settings

OBS has many settings that affect the stream data rates. These include frames per second, video resolution, compression, maximum bit rates and so forth. Experience indicates that the same setting do not always produce the same results on different streaming services. The following settings for iVlog appear to produce a good quality audio and video stream at a low bit rate (rate will vary depending upon the amount of motion in the video).

  • Under the Video tab: resolution 960x540. Common FPS Values: 30. Downscale Filter Bicubic (Sharpened scaling, 16 samples).
  • Under the tab Output Advanced: Rate control: CRF. CRF: 29
  • Under the tab Output Simple: Video bitrate 689. Audio bitrate 192. Enable advanced Encoder settings. Enforce streaming service bitrate limits.

The above settings resulted in a full motion video stream running between approximately 500 and 800 kilobits per second.