<html><style> div.dokuwiki h2,div.dokuwiki h3{


} div.dokuwiki{


} </style></html>

Schedule switching between audio streams using Liquidsoap and optionally Google calendar

The scheduler can be used to dynamically switch between multiple audio input streams. Its designed to run without any user interaction except synchronization with an external calendar like Google's.

Audio processing is done using french-army knife for multimedia streaming: liquidsoap.




PACKAGE stream-schedule-gsync: Each google calendar event title contains either the source stream URL or an pre-defined keyword. Use to write a list of stream events to a CSV file. The output can be used by stream-schedule to switch between defined streams.

Configuration is to be done at /etc/stream-schedule/gsync.conf Place the google calendar url, your google service account and the path of your service account key at „sources“ section. Place the output file at „target“ section.

PACKAGE stream-schedule-liquidsoap: define a liquidsoap daemon with 2 predefined stations that will be used for fallback configuration. audio output, file archive and stream output can be defined at /etc/stream-config/liquidsoap/start.conf defines remote control via socket, that is used to set the streams and get RMS values

PACKAGE stream-scheduler: schedule the events from the gsync.conf output and make liquidsoap starting them. Creates RMS logs and plots at configured directory.

PACKAGE stream-schedule-webapp: web gui to see the current status of the scheduler and the liquidsoap instance. uses apache web server.


There are different components. Web interface and Google Synchronization are optional.

Scheduler Web Interface

  • The web interfaces shows you the current status of the scheduler
  • It provides a overview of the pre-configured stations
  • You can trigger a update of the events from Google calendar.
  • There should be warnings shown on invalid URLs, unknown station aliases, old synchronization files or if the scheduler or liquidsoap is not running.

Log Analysis

  • log analysis can be done voa GUI to check what happened during the last days.
  • Logs of scheduler, icecast and liquidsoap are merged and can be viewed by the web interfaces.
  • Redundant log entries are aggregated, so you can quickly see in 100 log lines what was logged in 10000.
  • Special events are marked by color. Now you can easily see when a connection broke down or came up again.
  • You can use the JQuery Datepicker to select the date you want to get the logs from.

Google Calendar Synchronization

  • There is a synchronization job that synchronizes the local schedule with an external Google Calendar.
  • You can define a default station which will be played if no google calendar entry exists.
  • The synchronization job can be automatically run by a cronjob or manually at shell or at the web interface.


  • The Scheduler reads the local schedule and switchs the streams.
  • You can configure different stations, each having a title, multiple aliases and up to 2 live stream URLs.
  • The second stream URL will be used as fallback for the first one.
  • Once configured, you can use one of the station aliases at the event title at Google calendar to address the station.
  • Of course you can also put the live stream URL directly to the event title at Google calendar.
  • The scheduler is running as background daeman and creates the status for the web frontend.
  • It uses liquidsoaps telnet interface to get the current liquidsoap status and to set the currently playing stream URLs.
  • The scheduler should also prevent setting invalid URLs, so liquidsoap should keep on running.
  • Of cause the scheduler can be used without the web frontend (logging to file) or google calendar synchronization.


  • Liquidsoap does all of the stream processing. The scheduler is only a kind of remote control for liquidsoap.
  • For customization of stream processing like defining more fallbacks, forwarding the switched stream, audio processing, file archiving and much more see liquidsoap website.


The current version is in used by Piradio since May 2011 to switch between streams provided by free radio stations at Berlin (Radio Ansage, Freies Radio Potsdam, Collabo-Radio and Pi Radio) and forward the result stream to the transmitter station of 88vier at 88.4 FM Berlin. A previous version was used to switch between 2 radio stations ( and Pi Radio) at Radio Einheit in September 2010.


This scheduler is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program comes with ABSOLUTELY NO WARRANTY.

Impressum Datenschutz