Krad Radio/Basics
This page explains the basic concepts and terms used in the context of krad radio.
Conept
Basic concept
As seen on the picture the layout of the software is rather simple. One or multiple streams come in, one or more streams can go out. The mixing/compositing of the streams can be controlled via different methods.
Supported codecs and clients
This picture shows you what capture sources and codecs are supported by krad radio. The input can come from live video4linux2 (v4l2) or decklink-sources. X11 and wayland-capturing is supported as well as getting audio input via jack. Files can be in Matroska (mkv), Ogg or WebM-format and live input can also be achieved using these containers in HTTP-streams.
The output can be sent to wayland (video), jack (audio) or recorded as Matroska, Ogg or WebM video. Live streaming to another instance of krad radio or an icecast server is supported as well.
You can control eveything via the shipped command line client. Basic functionality is provided via the built-in Web-UI. Bindings for your own programs and scripts are provided in C (client library), Rust, Ruby and Python. All commands are abstracted via a clean IPC-interface.
Nomenclature
These are the terms used in the context of krad radio
General terms
- Units - May be or have subunits
- Controls - Changes one or more parameters, and/or causes an operation
- Parameter - A user controllable value of a unit, has a datatype and in some cases value range
- Indicator - A read only value of a unit
- Groups - Units can be in zero or more groups, groups are also units
- Tags - Units can have zero or more tags, allways text
- Operation - May add or remove units in addtion to changing parameters
Conceptional parts of krad radio
This section is taken directly from https://gist.github.com/3856859 so is more like a brainstorm
- Top level unit: station
- Top level unit: station
- Primary Units: Mixer, Compositor
- Subunits: Portgroup, Videoport, Sprite, etc
- Controls/Parameters: Volume, Bitrate
- Operation Controls: Adding a portgroup
- Indicators: Recording Length, Peak Level
- Groups: Mixer Buses, Compositor Layers
- Station
- Mixer
- Compositor
- Transponder
Station, Mixer, Compositor, Transponder units are single instance are not members of any group.
- Mixer:
- Subunits:
- Portgroup
- Parameters:
- Sample Rate - Int
- Subunits:
- OpControls:
- Add Portgroup
- Remove Portgroup
- Compositor:
- Subunits:
- Videoport
- Sprite
- Text
- Vector
- Parameters:
- Resolution
- Frame Rate
- Subunits:
- Transponder:
- Subunits:
- Recorder (Recording to disk)
- Player (Reading from disk)
- Transmitter (handles outgoing stream connection requests, transmissions)
- Receiver (handles incoming stream connection requests, reception)
- Video Encoder
- Video Decoder
- Audio Encoder
- Audio Decoder
- Muxer
- Demuxer
- Subunits:
- Compositor Subunits:
- Videoport - Sprite - Text - Vector
- Shared Controls:
- x
- y
- z
- width
- height
- rotation
- opacity
- xscale
- yscale
- text:
- font
- color
- text:
- vector
- type
- color
- vector
- sprite
- filename
- animation frame rate
- sprite
- videoport
- source_width
- source_height
- source framerate numerator
- source framerate denominator
- source link
- videoport

