Skip to content

LucasGallone/WestBroadcast-Encoder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WestBroadcast Encoder

WestBroadcast Encoder is a multi-output IP audio encoder, offering the ability for radio stations to stream audio to Icecast servers, as well as via RTP or through a built-in streaming server.

Multiple destinations can be configured, allowing audio to be sent from studios to several servers.

The encoders can be controlled remotely at any time via a secure web interface. An email alerts feature is also included to inform the user in the event of an incident (Silent streams or inability to connect to a streaming server).

This broadcasting solution, based on FFmpeg and a Python script, is entirely open source.

WestBroadcast Encoder runs as a portable installer. This means you can use it anywhere, even from an external hard drive or a USB drive.


⚠️ For now, the encoder only works on Windows. Optimizations are needed so that the project can run on Linux.

This software has been tested on several computers running Windows 10 and 11, with success.
Any feedback regarding other operating systems is welcome!

wbencoder-main-preview

What this tool offers

Audio stream encoding using the following codecs:
MP3, AAC* (AAC-LC, HE-AAC V1, HE-AAC V2), OGG Opus, OGG Vorbis, FLAC, WAV, and MP2.

Streaming to Icecast (V2) servers.

Streaming on a built-in server, whose streams can be listened directly over a port, without additional installation.

Streaming via RTP protocol, either in "pure" form (with an SDP file) or encapsulated in MPEG-TS.

Broadcasting the same stream to multiple servers at once, using a single instance.

Full control over the bitrate, sample rate, bit depth, audio gain, etc.

Adjustable audio latency before encoding to easily synchronize a stream with another.

Sending "Currently Playing" metadata on your stream to display the title of the song being aired.
-> This can be done by retrieving the content of a text file, from a HTML page, or by using the POST function in your automation software.

Sending email alerts via SMTP when one of your streams is silent, or the streaming server becomes unavailable.

* AAC encoding requires the Fraunhofer FDK library, which is not included for legal reasons.
It can be downloaded directly via the interface or installed manually. Please refer to the Wiki section for details and instructions.

1. Installation instructions for Windows

-> Download the entire content of the repository by clicking here.

-> Extract the content of the .zip file and place the files wherever you like.

-> Install Python 3.10 or newer on your computer from the official website by clicking here.
IMPORTANT: When installing Python, make sure to check the "Add Python to PATH" box, otherwise the encoder will not work properly!

-> Ideally, as is customary, restart your computer after installing Python.

-> Go back to the folder containing the encoder files, and run Launcher.bat.
When started for the first time, it will install the Python dependencies required for the encoder to work properly. This may take a few minutes.
Even if nothing appears to be happening on the terminal, please wait until the process is complete.

-> Once the installation is complete, the webserver will start up.
A Python window will open, displaying your machine's IP address, the port used by the webserver, and the default login password.
Be sure to keep this window open on the host machine, as well as the terminal, otherwise the software will close!

2. Configuration

Once installed, you must configure your stream(s) via the web interface.
The default port is 8090 and the default login password is admin.
(Changing the password at first use is STRONGLY recommended to prevent any unauthorized access!)

3. Starting the encoder after the initial setup

For the next startups, simply run Launch.bat as you did during the initial installation.
At each startup, the script checks that all required dependencies are present on your machine, then starts the audio engine and the webserver.

💡 Help / Documentation

Need help configuring the encoder or understanding a specific setting?
👉 Click here to visit the Wiki section for detailed documentation.

If you discover any bugs, despite the rigorous pre-release testing, don't hesitate to report them in the Issues section.

Legal Notices and Licenses

WestBroadcast Encoder

This project is licensed under the GNU General Public License (GPL) v3.0.
Please refer to the LICENSE file for more details.


FFmpeg

This project uses the FFmpeg executable for encoding audio streams.

License: FFmpeg is licensed under the GNU General Public License (GPL) v3.0.
Redistribution: The binary provided in this repository is an unmodified static version compiled by Gyan.dev.
Source Code: In accordance with the GPL license, the FFmpeg source code is available on ffmpeg.org.
Trademark: FFmpeg is a registered trademark of Fabrice Bellard, creator of the FFmpeg project.

For more details, please refer to the FFmpeg-LICENSE.txt file included in this repository.


Vue.js (JavaScript Framework)

The vue3.js file included in the /static folder is part of the Vue.js library.

License: MIT License.
Copyright (c) 2013-present, Yuxi (Evan) You.


Socket.io (JavaScript Client)

The socket.io.js file included in the /static folder is part of the Socket.io library.

License: MIT License.
Copyright (c) 2014-2025 Automattic.


Bootstrap (CSS Framework)

The bootstrap.min.css file included in the /static folder is part of the Bootstrap framework.

License: MIT License.
Copyright (c) 2011-2024 The Bootstrap Authors.


Python Dependencies

This project uses the following libraries, automatically installed by the Launcher script:

Flask / Werkzeug: BSD-3-Clause License.
Flask-SocketIO: MIT License.
Sounddevice / PortAudio: MIT License.
NumPy: BSD-3-Clause License.
psutil: BSD-3-Clause License.
Requests: Apache License 2.0.

About

A multi-output IP audio encoder, mainly dedicated to radio stations, for streaming to Icecast servers, via RTP and through a built-in server. Includes an email alerts sending option.

Topics

Resources

License

GPL-3.0, GPL-3.0 licenses found

Licenses found

GPL-3.0
LICENSE
GPL-3.0
FFmpeg-LICENSE.txt

Stars

Watchers

Forks

Packages

 
 
 

Contributors