sc_trans: Automatisches Radio mit mehreren Outputs

Für unbeaufsichtigten 24/7-Betrieb braucht man einen Encoder, der selbstständig Musik abspielt, Jingles einspielt und mehrere Server gleichzeitig versorgt. sc_trans (SHOUTcast Transcoder) kann genau das — dieser Beitrag zeigt die Konfiguration für einen zentralen Encoder mit mehreren Ausgabe-Streams.

Was ist sc_trans?

sc_trans ist Nullsofts Encoder-Tool für SHOUTcast. Es liest Audiodateien von der Festplatte, transkodiert sie in Echtzeit auf die gewünschte Bitrate und schickt den Stream direkt an einen oder mehrere SHOUTcast-DNAS-Server. Kein separater Audioplayer nötig, kein Soundkarten-Loopback — alles in einem Prozess.

Grundstruktur der Konfiguration

[setup]
; Playlist (m3u oder Verzeichnis-Scan)
playlist=playlist.m3u

; Shuffle
shuffle=1

; Crossfade in ms
crossfade=2000

[encoder_1]
; MP3, 128 kbps, 44100 Hz, Stereo
type=mp3
bitrate=128
samplerate=44100
channels=2

Mehrere Outputs — der Kernvorteil

Ein einzelner sc_trans-Prozess kann denselben kodierten Stream an beliebig viele SHOUTcast-Server schicken. Das spart CPU-Ressourcen, weil der Audiostrom nur einmal kodiert wird:

[output_1]
; Primärserver
servertype=sc2
serverhost=127.0.0.1
serverport=8000
serverpass=quellenpasswort
streamid=1

[output_2]
; Sekundärserver (Relay, anderer Standort)
servertype=sc2
serverhost=relay.example.com
serverport=8000
serverpass=relaypasswort
streamid=1

[output_3]
; Dritter Output: andere Bitrate / anderer Mount
servertype=sc2
serverhost=127.0.0.1
serverport=8000
serverpass=quellenpasswort
streamid=2

Jingle-Einbindung

sc_trans kann Jingles automatisch zwischen Tracks einspielen:

[jingles]
; Alle 5 Tracks einen Jingle spielen
interval=5
dir=/opt/radio/jingles/

Redundanz und Ausfallsicherheit

Für ausfallsicheren Betrieb empfiehlt sich folgende Architektur:

  • Primärer Encoder: Läuft auf einem stabilen Server, speist alle Outputs
  • Fallback-Playlist auf dem DNAS: Falls der Encoder ausfällt, spielt der DNAS-Server eine lokale Notfallplaylist ab
  • Watchdog: Überwacht sc_trans via systemctl is-active und startet bei Absturz neu
[Unit]
Description=SHOUTcast Transcoder
After=network.target

[Service]
Type=simple
User=radio
WorkingDirectory=/opt/radio
ExecStart=/opt/radio/sc_trans sc_trans.conf
Restart=on-failure
RestartSec=15s

[Install]
WantedBy=multi-user.target

Playlist-Management

sc_trans liest Standard-M3U-Playlists. Für dynamische Rotation kann man die Playlist periodisch aus einem Verzeichnis-Scan neu generieren:

#!/bin/bash
# Playlist täglich neu generieren
find /opt/radio/music/ -name "*.mp3" -o -name "*.flac" | shuf > /opt/radio/playlist.m3u
systemctl reload-or-restart sc_trans

Fazit

sc_trans ist schlank, stabil und braucht keine grafische Oberfläche — ideal für Server-Betrieb. Die Mehrfach-Output-Funktion ermöglicht gleichzeitig Primär- und Backup-Streams ohne mehrfache Kodierung. Wer mehr Kontrolle über Scheduling und Metadaten braucht, sollte sich Liquidsoap ansehen — das ist mächtiger, aber auch deutlich komplexer in der Konfiguration.