Enregistrement de streaming audio

25-Mar-2009 | scripts

Voici une méthode pour enregistrer un streaming audio en wav et le convertir en ogg ou/et en mp3.

Le script utilise l'excellent logiciel 'mplayer' ainsi que les encodeurs 'lame' et 'oggenc'. Il faut donc les installer :

$ sudo aptitude install mplayer lame vorbis-tools

Voici ensuite le script :

#!/bin/bash

STREAM_URL="http://adresse_du_stream/audio.rm"

STREAM_OUTPUT_WAV="./mystream.wav"
STREAM_OUTPUT_MP3="./mystream.mp3"
STREAM_OUTPUT_OGG="./mystream.ogg"

# mp3 bitrate (64 | 128 | 192...)
MP3_BITRATE="128"

# stream record
mplayer $STREAM_URL -ao pcm:file=$STREAM_OUTPUT_WAV -vc dummy -vo null

# stream encoding (mp3)
lame -b $MP3_BITRATE -m s $STREAM_OUTPUT_WAV -o $STREAM_OUTPUT_MP3

# stream encoding (ogg)
oggenc $STREAM_OUTPUT_WAV -o $STREAM_OUTPUT_OGG

Note : vous pouvez choisir la qualité de compression mp3 en modifiant la variable 'MP3_BITRATE'.

Mais vous pouvez aussi choisir d'encoder le fichier uniquement en ogg en commentant la ligne commençant par 'lame'.

Encore plus simple avec 'vlc' :

#!/bin/bash

STREAM_URL="http://zlz-stream13.streamserver.ch/1/drs2/mp3_128"
STREAM_TIME="7800"
STREAM_OUTPUT_MP3="/data/ino/mystream.mp3"

cvlc --run-time=$STREAM_TIME $STREAM_URL --sout "#duplicate{dst=std{access=file,mux=raw,dst=$STREAM_OUTPUT_MP3}" \
vlc://quit ;

# EOF

L'avantage de ce dernier script est qu'il est possible de choisir la durée d'enregistrement donc de le programmer dans un cron par exemple.