DAB/DAB+ encoding
Encoding the sound to MPEG-2 Layer II for DAB, MPEG-4 HE-AACv2 for DAB+ or video in MPEG-4 H.264 for T-DMB before feeding it to the multiplexer.
Contents |
DAB encoding
DAB audio encoding with toolame
- toolame MPEG-Layer II encoder (DAB)
Using toolame with Jack
Toolame doesn't support jack by default, we use arecord with ALSA emulation to get the raw PCM stream. See Mapping of jack source to ALSA for instructions. It is a dirty workaround, it is foreseen to find a better way in the future for example by modifying toolame to support jack:
Example:
arecord -t raw -f S16_LE -c 2 -r 48000 -D jackplug |toolame -s 48 -D 4 -b 128 /dev/stdin ./1.ff
Another possibility is to use jack-stdout tool that grab samples from jack and send them to the standard output
jack-stdout system:capture_1 system:capture_2 |toolame -s 48 -D 4 -b 192 /dev/stdin ./3.ff
toolame modified for Jack input (BETA)
Toolame has been modified to support JACK (BETA), rendering the dirty workaround mentioned below unnecessary. See Toolame#JACK_version for more info.
Example:
toolame -D 4 -b 128 -j -n toolame1 ./1.ff
DAB+ encoding
DAB+ audio encoding with crc-dabplus
- CRC-dabplus HE-AAC encoder (DAB+) from CRC (warning, it is not free/open source because of royalty)
Example streaming one radio and with a buffer to compensate for bursty output from encoder
crc-dabplus -i souphttpsrc://location=http://maxxima.mine.nu:8000 -g -m -c 2 -b 48 -o file:///dev/stdout |mbuffer -m 100k -P 100 >output_fifo
DAB+ audio encoding with fdk-aac-dabplus
- fdk-aac-dabplus HE-AAC encoder (DAB+), originally developed by Fraunhofer Institute, open source version from android tree.
Example streaming one radio and with a buffer to compensate for bursty output from encoder
mpg321 -r 48000 "http://pub1.di.fm:80/di_trance" -s 2>/dev/null | \ aac-enc-dabplus -b 72 -f raw -c 2 -r 48000 -i /dev/stdin -o /dev/stdout 2>/dev/null | \ mbuffer -q -m 100k -P 100 -s 1080 > output_fifo
jack input
crc-dabplus uses Gstreamer for input/output.
Example of jackplug input (ALSA emulation), encoding at 48kbps, output to a FIFO file:
crc-dabplus -i card://jackplug -g -c 2 -b 48 -o file://2.ff
Similar example but with DLS input from TCP on port 12000
crc-dabplus -i card://jackplug -g -c 2 -b 80 -d tcpserver://:12000 -p 28 -t dls -o file://4.ff
Tools for data services encoding
- CRC-SlideShow : slideshow generator from CRC.
- DAB-EPG API from Global Radio Labs (never tested)
Decoding Internet stream
Here are some simple way to get internet radio stream as input and decode them into raw PCM samples to feed DAB/DAB+ encoders
mpg123 input
"mpg123" can be used to take Internet radio stream and convert them from mp3 to raw PCM samples. Be careful, it has been noticed that earlier version have a memory leak when resampling. We use version 1.4.3 to avoid the problem.
Example that decode an mp3 stream, resample it to 48kHz and output the raw samples to stdout:
mpg123 -b 1024 -r 48000 -s http://maxxima.mine.nu:8000
mplayer
simple mplayer command for jack output
mplayer -ao jack http://maxxima.mine.nu:8000