GithubHelp home page GithubHelp logo

hradio / hradio-lab-playout Goto Github PK

View Code? Open in Web Editor NEW
1.0 5.0 3.0 175 KB

Docker based deployment of a complete OpenDigitalRadio based DAB/DAB+ playout for test and demo purposes.

License: Apache License 2.0

Dockerfile 100.00%

hradio-lab-playout's Introduction

Docker Compose config for HRadio Playout with MPD

First Time (build/start)

  • install docker + docker-compose (tested with docker 18.09.2-ce and compose 1.23.2)
  • get this repo
  • pull all available images from hub.docker.com via docker-compose pull
  • build odr-audioenc using docker-compose build.
  • copy some mp3 in music/
  • create all containers using docker-compose up -d
  • open a browser to ympd (defaults to port localhost:80)

Usefull commands

docker-compose up -d create and start all containers
docker-compose down stop and remove all containers
docker-compose ps to check the status of all running containers
docker-compose start|stop|restart [containername] to interact with the containers
docker-compose logs [containername] to get the logs of a container

Containers

mpd

Music Player Deamon - The audio player for this project.
Image used: vimagick/mpd
Config file: [./mpd/mpd.conf]

Ports
6600 -> host:6600 used for the mpd protocol, so its also possible to use an app instead of ympd
8000 -> host:8000 used for the built-in HTTP streaming server

The audio files to playout can be droped into the "music" folder of this repository. mpd will add them on startup to its library.

ympd

ympd - MPD Web GUI, can be accessed via HTML Browser over port 80.
Image used: knapoc/docker-ympd

Ports
8080 -> host:80 used for the web gui to be acessable via browser

ashuffle

ashuffle - an application for automatically shuffling your mpd library.
Image used: hradio/ashuffle

Config via Env
MPD_HOST Hostname of mpd (defaults to mpd)
MPD_PORT Port for mpd (defaults to 6600)
QUEUE_BUFFER Specify to keep a buffer of n songs queued after the currently playing song. This is to support MPD features like crossfade that don't work if there are no more songs in the queue. (defaults to 10)

edihttp

EDI-HTTP-Splitter - splits an incomming EDI stream into different streams with only one service. (source will be made available later)
Image used: hradio/edihttp

Config via Env
UDP_INCOMING_PORT UDP port where to expect the EDI stream (defaults to 50000)
HTTP_OUTGOING_PORT Port for the http server (defaults to 8187)
Ports
8187 -> host:8187 http, for the split streams

mpd-pad

MPD-PAD-Exporter - reads the current data from mpd and exports Dynamic Label Plus and the Slideshow for DAB. (source will be made available later)
Image used: hradio/mpd-pad

Config via Env
HRADIO_DLPOUTPUTFILE file path where to write the Dynamic Label Plus to
HRADIO_SLSOUTPUTPATH folder where to put the cover.jpg for SLS
HRADIO_MEDIABASEPATH path where to find the audio files
HRADIO_PRESENDTIME Time in ms to create the DLP and SLS before the new song (defaults to 2000)
HRADIO_MPDHOST Hostname of mpd (defaults to mpd)
HRADIO_MPDPORT Port for mpd (defaults to 6600)
HRADIO_ENABLECONSUME Set to true if the service should enable consume in mpd

Needs to have the music folder mounted to export the images for the slideshow. Also needs the to the ./odr-padenc/ folder mounted to write the new data to.

odr-padenc

ODR-PadEnc - is an encoder for Programme Associated Data (PAD) and includes support for MOT Slideshow and DLS/DLP
Image used: hradio/odr-padenc

Config via Env
PADENC_OUTPUT FIFO to write PAD data into
PADENC_INPUT_DLS FIFO or file to read DLS text from
PADENC_INPUT_SLS Directory to read images from
PADENC_DELAY Wait DELAY seconds between each slide
PADENC_FRAME Frame length for uniform mode
PADENC_PADSIZE Set PAD size in bytes.
PADENC_OTHERS E.g. -R for Do not process slides integrity checks and resizing

odr-padenc reads the files created by mpd-pad and adds them to a fifo inside a docker volume. This volume is also mounted in the odr-audioenc

odr-audioenc

ODR-AudioEnc - contains a DAB and DAB+ encoder
Dockerfile used: hradio-odr-audioenc/Dockerfile

Config via Env
AUDIOENC_INPUT input url
AUDIOENC_OUTPUT output - see mux.conf
AUDIOENC_BITRATE Output bitrate in kbps. Must be a multiple of 8
AUDIOENC_PADSIZE Set PAD size in bytes
AUDIOENC_PADFILE Set PAD data input fifo name
AUDIOENC_OTHERS E.g. --aaclc

odr-audioenc reads the audio stream from mpd and the pad fifo created by odr-padenc and sends the encoded audio to odr-dabmux

odr-dabmux

ODR-DabMux - is a DAB multiplexer compliant to ETSI EN 300 401.
Image used: hradio/odr-dabmux
Config file: [./odr-dabmux/mux.conf]

odr-dabmux receives the encoded audio from odr-audioenc and creates the DAB mulitplex like defined in [odr-dabmux/mux.conf] and prepares the multiplex for odr-dabmod. It also sends an edi stream to edihttp.

odr-dabmod

ODR-DabMod - is a DAB (Digital Audio Broadcasting) modulator compliant to ETSI EN 300 401. Image used: hradio/odr-dabmod
Config file: [./odr-dabmod/mod.conf]

odr-dabmod receives the multiplex from odr-dabmux and utilizes some hardware to send the DAB signal over the air.

Supported modulator hardware

Other needed hardware

  • 64bit linux pc. If you don't need the modulation, also Windows and docker should work.
  • Antennas and cables (e.g. we made good experiences with Antennentechnik-Bad-Blankenburg )

hradio-lab-playout's People

Contributors

abosl avatar

Stargazers

warrenl avatar

Watchers

James Cloos avatar AlexErk avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.