Login
Newsletter
Do, 19. Februar 2004, 21:51

LPD als Jukebox

LPD war gestern, CUPS ist heute, so wird behauptet - doch LPD erlebt heute sein großes Revival als geekige, netzwerkfähige Jukebox.

Von dkg

Alles was man dazu braucht, ist ein Computer mit Soundkarte, MP3/Ogg/WAV-Player, den LPD (Line Printing Daemon) und das »richtige« Betriebssystem.

Nach der Installation des LPD muss die Datenbank-Datei »printcap«, welche sich üblicherweise in /etc/printcap befindet, um den Eintrag unserer Jukebox bereichert werden.

jukebox:
 :lp=/dev/null:\
 :sd=/var/spool/lpd/audio:\
 :if=/usr/bin/audiofilter:\
 :af=/var/log/audio-acct:\
 :lf=/var/log/audio-errs:\
 :sh

Was in der »Printcap« geschieht, möchte ich hier zum allgemeinen Verständnis kurz auflisten.

  • jukebox: - Der Druckername der Jukebox.
  • :lp=/dev/null: - In diesem Fall steuern wir kein physikalisches Gerät an und setzen den Wert daher ins Nirvana.
  • :if=/usr/local/bin/audiofilter: - Der Eingangsfilter zur Wiedergabe des Sounds.
  • :af=/var/log/audio-acct: - Hier wird mitprotokolliert wer wann was durch die Lautsprecher jagt. Somit könnten lustige Statistiken erstellt werden.
  • :lf=/var/log/audio-errs: - Hier landen Fehlermeldungen. Zumindest manche. Der Rest landet in /var/spool/lpd/audio/status.pr.
  • :sh - Dadurch werden Header Informationen abgestellt, die normalerweise mitgesendet werden. Das ist wichtig, da sonst »Mist« vor den Songs gesendet wird, der den »Audiofilter« verwirren könnte.

Die oben genannten Protokoll-Dateien müssen jetzt noch erzeugt (touch /var/log/audio-acct /var/log/audio-errs) und mit den richtigen Rechten (chown lp /var/log/audio-acct /var/log/audio-errs) versehen werden.

Nun kommen wir aber zum wichtigsten Teil unserer Jukebox: Dem »Audiofilter«, der dafür verantwortlich ist, dass die Musik an diverse Audioprogramme weitergereicht wird. Der folgende Code sollte unter /usr/bin/audiofilter abgelegt und mit chmod a+x /usr/bin/audiofilter für jeden ausführbar gemacht werden.

#!/bin/bash
#
# This script was originally made by Teddy Hogeborn.
# Small alterations was made by:
# Peter Lundqvist
# Patrick Wagstrom
# Daniel K. Gebhart
#
# This is a "printer filter" for playing audio files

for arg in "$@"; do
 case "$arg" in
 -d*) dir="${arg#-d}" ;;
 -e*) basefile="${arg#-e}" ;;
 -f*.*) ext="${arg##*.}" ;;
 esac
done

mp3player="mpg123 -q";
modplayer="mikmod --quiet --playmode 0 --noloops --norc"
oggplayer="ogg123 --quiet"
file="${dir}/${basefile}"
type="$(file "${file}"| sed -e 's/^[^:]*: *//')"

case "$type" in
 MP3*)
 $mp3player -
 ;;
 Ogg*Vorbis*)
 $oggplayer -
 ;;
 RIFF*\ WAVE\ audio*)
 play --type=wav --silent /dev/stdin
 ;;
 *Extended\ Module\ sound\ data*|*Protracker\ module\ sound\ data*)
 $modplayer $file
 ;;
 data|*audio*)
 if ogginfo "$file" 2>/dev/null |
  grep --quiet -e '^header_integrity=pass' >/dev/null; then
  $oggplayer -
 elif mp3info -x "$file" 2>/dev/null |
  grep --quiet -e '^File:' > /dev/null; then
  $mp3player -
 else
  play --type=auto --silent "$file" ||
   play --type="$ext" --silent "$file"
 fi
 ;;
 *) echo "$type" >&2
 ;;
esac

Somit ist unsere Jukebox fertig und wartet auf heiße Rythmen. Gefüttert wird sie dann mit lpr -P jukebox <track.ogg>. Der Status kann via lpq -P jukebox abgerufen werden.

Kommentare (Insgesamt: 36 || Alle anzeigen )
Re[2]: Das geht mit CUPS auch -- sogar viel cooler (Peter Kruse, So, 9. Mai 2004)
Re[2]: Brumm (makxs, Di, 24. Februar 2004)
Re[3]: verrückt (telefona stugazz, So, 22. Februar 2004)
Re[2]: Quellenangabe (cosmo, Sa, 21. Februar 2004)
Re: Quellenangabe (Jens, Sa, 21. Februar 2004)
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten