Audio Server
The Audio Server solves a variety of audio routing problems for radio stations.
Including:
-
Audio playback: Create multiple audio players, and control them with a REST API.
-
Streaming: Send audio to a live stream (Icecast or Shoutcast).
-
Recording: Record the audio output to a file.
-
Mixing audio sources: Play audio from any combination of microphone inputs, live streams, and audio files.
-
JSON Configuration: Everything is defined in simple JSON configuration files.
-
HTTP control with REST API: Easily control all aspects of the server with anything that does HTTP requests (like JavaScript).
Technical Overview
-
The Audio Server takes a set of audio sources (file, stream, audio input device), and sends them to a set of audio outputs (file, stream, audio output device).
-
Written in C++ with the JUCE framework.
-
Includes HTTP server (Civetweb) allowing control through a REST API.
-
Linux, Mac, and Windows.
-
Runs best on Linux from the command line. Mac and Windows are also supported. Windows includes a GUI.
-
Stores settings in JSON config files.
-
Launches multiple instances of the Audio Server for each config file (see Example Config Files below).
-
Each instance is controlled by the same REST API, and has its own set of audio sources and audio outputs.
-
Compiled as a single binary with minimal dependencies (only libshout needed on Linux).
Contents
Example Usage
This is the best placed to start.
-
- Initializing the server from JSON configuration files.
-
- Controlling the server through HTTP requests.
Structure
This describes the properties and methods of each component.
Control
This is the REST API documentation.
-
- List or edit sources.
-
- List or edit outputs.
-
- Read current config, or write config to JSON files.
Status
-
- Status of system, and disk space.