Installer un service d’encodage pour SHOUTCast

Il est possible de demander au serveur Linux de streamer tous les mp3 et d’envoyer le flux à une radio SHOUTCast

Pour un élément mieux maintenu, je vous conseille LiquidSoap !

Si vous exécutez un Ubuntu 64 bits, il faut installer les librairies 32 bits

apt-get -y install lib32ncurses5

Passons aux choses sérieuses :

On récupère les fichiers 32bits

wget http://bdd.exolia.fr/shoutcast/sc_trans_posix_040.tgz

On créé le dossier qui va bien

mkdir /opt/shoutcast/transcode

On extrait les données de l’archive

tar zxvf sc_trans_posix_040.tgz

On déplace

mv sc_trans_040 /opt/shoutcast/transcode

On créé le fichier de configuration

nano /opt/transcode/server.conf

Avec en contenu du fichier

; sc_trans accepts the following signals:
; HUP - flush logfiles (close and reopen) -- will make console logging stop
; WINCH - jump to next song
; USR1 - reload playlist off disk (will not interrupt current playing stream)
; USR2 - toggle shuffle on/off
; TERM - normal sc_trans shutdown (clean)

; PlaylistFile (required EVEN IF RELAYING) - playlist file (to create, use
; find /home/mp3/ -type f -name "*.mp3" > /opt/shoutcast/transcode/playlist.lst
PlaylistFile=/opt/shoutcast/transcode/playlist.lst

; ServerIP/ServerPort are the target server to send to
ServerIP=127.0.0.1
ServerPort=8000

; Password is the password on the sc_serv you're sending to.
Password=password

; StreamTitle/URL/Genre define the data that appears on the directory and in the
; stream info.
StreamTitle=_Nom Radio_
StreamURL=http://_votre_serveur_
Genre=mix

; Logfile optionally denotes a text file to log sc_trans to.  a kill -HUP
; will force a close and re-open of this file (but will also cease logging to
; the console)
LogFile=sc_trans.log

; Shuffle the playlist
Shuffle=1

; Bitrate/SampleRate/Channels recommended values:
; 8kbps 8000/11025/1
; 16kbps 16000/11025/1
; 24kbps 24000/22050/1
; 32kbps 32000/22050/1
; 64kbps mono 64000/44100/1
; 64kbps stereo 64000/22050/2
; 96kbps stereo 96000/44100/2
; 128kbps stere0 128000/44100/2
Bitrate=64000
SampleRate=22050
Channels=2

; Quality is from 1-10. 1 is best, 10 is fastest.
Quality=1

; Mode=0 for none, 1 for 100/100->100/0, 2 for 0/100->100/0
CrossfadeMode=1

; Length is ms.
CrossfadeLength=5000

UseID3=0

; Public determines whether or not this station will show up in the directory
Public=1

On créé le daemon

nano /etc/init.d/transcode.sh

Le contenu du fichier

#!/bin/sh
 
### BEGIN INIT INFO
# Provides: transcode
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Transcode daemon
# Description: Transcode daemon
### END INIT INFO
 
NOHUP=/usr/bin/nohup
DIR=/opt/transcode
DAEMON="/opt/transcode/sc_trans_linux"
DAEMON_NAME=transcode
DAEMON_OPTS="/opt/transcode/server.conf"
DAEMON_USER=root
 
# The process ID of the script when it runs is stored here:
PIDFILE=/var/run/$DAEMON_NAME.pid
 
. /lib/lsb/init-functions
 
do_start () {
  log_daemon_msg "Starting system $DAEMON_NAME daemon"
  $DAEMON $DAEMON_OPTS 2> /dev/null 1> /dev/null &
  log_end_msg $?
}
do_stop () {
  log_daemon_msg "Stopping system $DAEMON_NAME daemon"
  killall sc_trans_linux
  log_end_msg $?
}
 
case "$1" in
 
  start|stop)
    do_${1}
    ;;
 
  restart|reload|force-reload)
    do_stop
    do_start
    ;;
 
  status)
    status_of_proc "$DAEMON_NAME" "$DAEMON" && exit 0 || exit $?
    ;;
 
  *)
    echo "Usage: /etc/init.d/$DAEMON_NAME {start|stop|restart|status}"
    exit 1
    ;;
 
esac
exit 0

On le rend exécutable et on initialise le script

chmod +x transcode.sh
update-rc.d transcode.sh defaults

On exécute le service

/etc/init.d/transcode.sh start

On peut contrôler que le service est opérationnel

ps aux | grep "sc_trans"