Skip to Content

Radio

HINWEIS: Wenn Sie die letzten zehn Jahre damit verbracht haben, 100 Meilen 
unter der Wasseroberfläche das Algenwachstum unter dem Antarktische Eisschild 
zu studieren, werden Sie überrascht sein zu erfahren, dass man inwischen auch 
über das Internet Radio hören kann.

(Chinmay V S a.k.a TheCodeArtist)

Was Sie oben rechts (wenn Sie einen vernünftigen HTML5-Browser benutzen) mit dem Play Button starten können, ist das Internetradio dieser Website. Es wird mit einem nagelneuen Icecast 2.4 Server betrieben, der aus verschiedenen Datenquellen (Source Clients, genannt Ices) gespeist wird. Icecast kann für nahezu beliebige Formate (Container wie Ogg oder WebM, Codecs wie AAC oder MP3) oder Tonquellen (Aufzeichnungen oder Direktübertragungen) eingesetzt werden. Dieses Konzept ermöglicht eine enorme Flexibilität, da gegebenenfalls auch andere Komponenten wie Effektgeneratoren oder Equalizer „eingeschleift“ werden können. Die Datenströme werden an den Streaming-Client immer im benötigten Formaten gestreamt, es kann also fast jeder beliebige Player verwendet werden, der diese Streaming-Formate unterstützt.

Alte SPECs wiederverwertet

Weil RHEL/CentOS6 RPMs noch nicht erhältlich sind, werden hier schlicht die alten SPECs recycled:

Name        : icecast                      Relocations: (not relocatable)
Version     : 2.4.0                             Vendor: (none)
Release     : 1.el6                         Build Date: Wed 14 May 2014 01:17:25 PM CEST
Install Date: Wed 14 May 2014 07:13:55 PM CEST      Build Host: cgn.cheeseburg.de
Group       : Applications/Multimedia       Source RPM: icecast-2.4.0-1.el6.src.rpm
Size        : 669136                           License: GPLv2
Signature   : (none)
URL         : http://www.icecast.org/
Summary     : ShoutCast compatible streaming media server
Description :
Icecast is a streaming media server which currently supports Ogg Vorbis
and MP3 audio streams. It can be used to create an Internet radio
station or a privately running jukebox and many things in between.  It
is very versatile in that new formats can be added relatively easily and
supports open standards for commuincation and interaction.
Name        : ices                         Relocations: (not relocatable)
Version     : 2.0.2                             Vendor: (none)
Release     : 1.el6                         Build Date: Wed 14 May 2014 02:45:38 PM CEST
Install Date: Wed 14 May 2014 02:50:48 PM CEST      Build Host: cgn.cheeseburg.de
Group       : System Environment/Daemons    Source RPM: ices-2.0.2-1.el6.src.rpm
Size        : 166456                           License: GPLv2
Signature   : (none)
URL         : http://www.icecast.org
Summary     : Source streaming for Icecast
Description :
IceS is a source client for a streaming server. The purpose of this client is
to provide an audio stream to a streaming server such that one or more
listeners can access the stream. With this layout, this source client can be
situated remotely from the icecast server.

The primary example of a streaming server used is Icecast 2, although others
could be used if certain conditions are met.

Der Stream ist derzeit per ice.eilbek,net/live.ogg (Ogg Vorbis komprimiert) und via ice.eilbek.net/ive.ogg.m3u (Media Player Playlist / M3U) verfügbar, die status.xsl und server_version.xsl Pages des Servers sind offen zugänglich. Auf den Icecast Server kann "ganz normal per tcp/80" zugegriffen werden, auch exotische Firewall-Einstellungen ("sperren von Ports") sind kein Problem. Denn der Zugriff erfolgt per Apache Reverse Proxy / Gateway (mod_proxy) mittels interne RewriteRule (mod_rewrite).

$ cat .htaccess
#
# .htaccess hnr 2014-05-19
#
# CentOS 6.5 / Apache httpd 2.2.15
# http://www.apache.org/dist/httpd/CHANGES_2.2
#
DirectoryIndex status.xsl
#
RewriteEngine On
#
# mod_proxy security http://foo:81@bar
#
RewriteCond  %{REQUEST_URI}  !^$
RewriteCond  %{REQUEST_URI}  !^/
RewriteRule  (.*) - [forbidden,last]
#
# icecast handles /admin/ OR *.xsl OR mountpoints
#
RewriteCond %{REQUEST_URI} ^/admin/ [OR]
RewriteCond %{REQUEST_URI} \.xsl$   [OR]
RewriteCond %{REQUEST_URI} ^/live\.ogg$
RewriteRule (.*) http://localhost:8000/$1 [last,proxy]

Viele exzentrische "Sicherheitsbeauftragte" in deutschen Behörden und Hobby-Zimmern erfordern also eine Hand voll Konfigurationszeilen. Wink

$ curl -is http://ice.eilbek.net/live.ogg.m3u
HTTP/1.1 200 OK
Date: Mon, 19 May 2014 00:24:44 GMT
Server: Icecast 2.4.0
Content-Type: audio/x-mpegurl
Cache-Control: no-cache
Expires: Sat, 26 Jul 1997 05:00:00 GMT
Pragma: no-cache
Accept-Ranges: bytes
Content-Length: 31
Via: 1.1 cgn.cheeseburg.de (Apache/2.2.15)
Connection: close

http://ice.eilbek.net/live.ogg

ICY-Metadata in Header und Stream

Selbstveständlich werden werden wie heute bei Streaming-Servern üblich auch ICY Metadata im Source gesendet - mit Tools wie z.B. Streamripper kann der Datenstrom dann auf Seiten des Zuhörers automatisch wieder in einzelne Aufnahmen zerlegt werden oder die ICY Daten werden vom Client zur Information des Nutzers angezeigt. Hier z.B. die statischen ice / icy Informationen im Web-Server Header:

$ curl --max-time 1 --dump-header /dev/stdout --output /dev/null \
       --silent http://ice.eilbek.net/live.ogg
HTTP/1.1 200 OK
Date: Tue, 20 May 2014 11:50:21 GMT
Server: Icecast 2.4.0
Content-Type: application/ogg
Cache-Control: no-cache
Expires: Sat, 26 Jul 1997 05:00:00 GMT
Pragma: no-cache
ice-audio-info: samplerate=44100;channels=2;quality=3%2e00
icy-description: Live aus Hamburg von Hnr Kordewiner
icy-genre: Jazz Blues Klassik
icy-name: Eilbek.net Audio Streaming
icy-pub: 0
Via: 1.1 cgn.cheeseburg.de (Apache/2.2.15)
Connection: close
Transfer-Encoding: chunked

Grobe Übersicht Container und lossy Codecs für Audio

Der Vollständigkeit halber die derzeitige Kompatibilität moderner Client Software (Browser und Media-Player) mit audio/ogg (RFC 5334), audio/webm und audio/mpeg (RFC 3003) Containern und den enthaltenen verlustbehafteten Kodierern MPEG Audio Layer III, Advanced Audio CodingVorbis und Opus Interactive Audio:

Software Operating System Jeweils nativ unterstützte Formate
frei patentiert patentiert frei frei frei
Lossy Audio Codec vorbis mp3 aac ogg opus opus
MIME Type audio/* (Container) ogg mpeg mpeg webm ogg webm
Chrome 34
(Blink)
Windows, OS X, Linux, Andoid, iOS, ChromeOS Ja Ja Ja Ja Ja Ja
VLC media player Windows, OS X, Linux, Andoid, iOS, FreeBSD, Solaris Ja Ja Ja Ja Ja Ja
Opera 21
(Blink)
Windows, OS X, Linux, FreeBSD, Android, Blackberry Ja Ja Ja Ja Ja Ja
Internet Explorer 11
(WMP)
Windows Nein (nur Third Party) Ja Ja Nein (nur Third Party) Nein Nein
Firefox 29
(Gecko)
Windows, OS X, Linux, Android, FreeBSD Ja Ja Ja Ja Ja Ja
Safari 7
(WebKit)
OS X Nein (nur Third Party) Ja Ja Nein (nur Third Party) Nein Nein


eilbek
page | about seo