ODR-AUDIOENC(1)
π ODR-AUDIOENC π
okay bestie, welcome to the ODR-mmbTools corner of the manual β this is odr-audioenc, the DAB and DAB+ audio encoder, and honestly? she's iconic. let's get into it β¨
πΈ NAME πΈ
odr-audioenc β a DAB and DAB+ audio encoder. yes, both. she does both. periodt. π
π SYNOPSIS π
odr-audioenc [OPTION...]
π¦ DESCRIPTION π¦
so ODR-AudioEnc is an audio encoder for both DAB and DAB+ and she slots right into the ODR-mmbTools ecosystem. she can read from JACK, ALSA, a file source, libvlc or GStreamer, and then encode to an EDI and ZeroMQ output that's compatible with ODR-DabMux. there's a whole bunch of usage scenarios laid out in the README, which lives at /usr/share/doc/odr-audioenc. go read it, i'll wait π«Ά
now. the -D option turns on sound card clock drift compensation, and this one is lowkey important. a consumer sound card's clock is always a lil bit imprecise (not her fault, she's doing her best π) and would slowly drift off. drift compensation makes sure the encoding rate stays correct by inserting or deleting audio samples. it works for both ALSA and VLC inputs, and it needs a system clock that's synchronised using NTP. when you enable it, you'll see U and O printed in the console β those are audio underruns and overruns caused by that sound card clock drift. when they're sparse, they shouldn't create audible artifacts. no cap.
this encoder can also insert PAD (that's DLS and MOT Slideshow) generated by ODR-PadEnc, and they talk to each other over a UNIX socket. bestie behaviour fr fr. π
β¨ OPTIONS β¨
-h,--helpβ print this help text and dip out--versionβ print the program version and dip out-D,--drift-compβ turn on ALSA/VLC sound card drift compensation
π§ alsa input:
-d,--device=ALSA_DEVICEβ set the ALSA input device
π file input:
-i,--input=FILENAMEβ the input filename (and yes, use-i -for stdin, she's flexible like that)-f,--format={ wav, raw }β set the input file format (default:wav)--fifo-silenceβ the input file is a fifo, and the encoder generates silence when the fifo is empty. ignores EOF.
ποΈ JACK input:
-j,--jack=NAMEβ enable JACK input, and define our name
π¬ VLC input:
-v,--vlc-uri=URIβ enable VLC input and use the URI given as the source-C,--vlc-cache=MSβ specify the VLC network cache length-g,--audio-gain=DBβ apply audio gain correction in dB to the source, negative values allowed. use this as a workaround to correct the gain for streams that are much too loud π-Vβ bump the VLC verbosity up by one (can be given multiple times, go off)-L OPTIONβ give an additional option to VLC (can be given multiple times)
π GStreamer input:
-G,--gst-uri=URIβ enable GStreamer input and use the URI given as the source
π₯ Encoder parameters:
-b,--bitrate={ 8, 16, ..., 192 }β output bitrate in kbps. must be a multiple of 8. no exceptions bestie.-c,--channels={ 1, 2 }β number of input channels (default:2)-r,--rate={ 24000, 32000, 48000 }β input sample rate (default:48000)
π DAB specific options:
-a,--dabβ encode in DAB and not in DAB+--dabmode=MODEβ channel mode:s/d/j/m(default:jif stereo,mif mono)--dabpsy=PSYβ psychoacoustic model0/1/2/3(default:1)
π DAB+ specific options:
-A,--no-afterburnerβ disable the AAC encoder quality increaser--aaclcβ force the usage of AAC-LC (no SBR, no PS)--sbrβ force the usage of SBR (HE-AAC)--psβ force the usage of SBR and PS (HE-AACv2)-B,--bandwidth=VALUEβ set the AAC encoder bandwidth to VALUE [Hz]--decode=FILEβ decode the AAC back to a wav file (loopback test)
π‘ Output and PAD parameters:
-o,--output=URIβ output ZMQ uri (e.g.'tcp://localhost:9000') -or- output file uri (e.g.'file.dabp') -or- a single dash'-'to denote stdout. if more than one ZMQ output is given, the socket will be connected to all listed endpoints.-k,--secret-key=FILEβ enable ZMQ encryption with the given secret key-e,--edi=URIβ EDI output uri (e.g.'tcp://localhost:7000')--fec=FECβ set EDI output FEC-T,--timestamp-delay=DELAY_MSβ enables timestamps in EDI (requires TAI clock bulletin download) and adds a delay (in milliseconds) to the timestamps carried in EDI-w,--write-icy-text=FILENAMEβ write the ICY Text into the file, so that ODR-PadEnc can read it-W,--write-icy-text-dl-plusβ when writing the ICY Text into the file, add DL Plus information--identifier=IDβ an identifier string that is sent in the ODRv EDI TAG. max32characters length.--startup-check=SCRIPT_PATHβ before starting, run the given script, and only start if it returns0-p,--pad=BYTESβ enable PAD insertion and set the PAD size in bytes-P,--pad-socket=IDENTIFIERβ use the given identifier to communicate with ODR-PadEnc-l,--levelβ show peak audio level indication-S,--stats=SOCKET_NAMEβ connect to the specified UNIX Datagram socket and send statistics. this lets external tools collect audio and drift compensation stats.-s,--silence=TIMEOUTβ abort encoding after TIMEOUT seconds of silence
π«Ά AUTHOR π«Ά
originally written by Robin Alexander <robin.alexander@netplus.ch>. king behaviour honestly π
π SEE ALSO π
odr-padenc(1)odr-dabmux(1)
and that's the whole page bestie!! this was odr-audioenc version 3.6.0, from December 2024 β go forth and encode something gorgeous, ily, bye!! πβ¨ππ¦
π¦ where this page comes from
- debian trixie: odr-audioenc 3.6.0-2 Β· GPL-3.0-or-later
- ubuntu questing: odr-audioenc 3.6.0-2
- ubuntu resolute: odr-audioenc 3.6.0-2build1 Β· GPL-3.0-or-later
- ubuntu stonking: odr-audioenc 3.6.0-2build1 Β· GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms