Webradio auf Windows vServer richtig einrichten

Status
Für weitere Antworten geschlossen.
Die *.xsl wird geparsed und der Server gibt HTML zurück. Hier sieht es so aus, als hätte damit schon mal jemand etwas gemacht. Ob und wie das funktioniert und wie es angepasst werden kann, dass dabei eine nüchterne Titelanzeige herauskommt, siehst du schneller und besser als ich.

Na ja, ohne die geparste Datei kann ich da auch nicht viel machen, da ich nicht weis, wie diese aussieht. PHP hat jedoch einen internen xml parser, der es ermöglicht sehr einfach auf die einzelnen Elemente im xml DOM zuzugreifen. Somit kann man wesentlich einfacher auf die Daten zugreifen, als wenn man diese erst aus einer xsl oder html filtern muss.
 
http://jugendwerkradio.radio.de:8000/status.xsl :)

Wie's aussieht, hat der Kollege den Server aber justament gründlich zerconfigged. :-/ Der Browser zeigt im Moment zig Bildschirmseiten toter Mounts an. SO sollte es freilich nicht aussehen.
BTW macht der Icecast intern wohl einiges mit XML, aber wo er die Daten vorhält, die der bei Aufruf der XSL verparsed, entzieht sich meiner Kenntnis. Deswegen hatte ich auch einst die Lösung mit der reduzierten title.xsl benutzt, die nur den nackten Titel als String in HTML zurückgibt. Ich habe die Datei mal für ein externes Parsing von Formatvorgaben befreit. Die title.xsl mit diesem Inhalt:
Code:
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
<xsl:output omit-xml-declaration="no" method="html" indent="yes" encoding="UTF-8" />
<xsl:template match = "/icestats" >
<html>
<body>
<xsl:for-each select="source">
<xsl:choose>
<xsl:when test="listeners">
 
  <xsl:choose>
    <xsl:when test="authenticator">
    </xsl:when>
    <xsl:otherwise>
    </xsl:otherwise>
  </xsl:choose>
 
      <xsl:if test="artist">
      <xsl:value-of select="artist" /> - </xsl:if>
      <xsl:value-of select="title" />
 
</xsl:when>
<xsl:otherwise>
<h3><xsl:value-of select="@mount" /> - Not Connected</h3>
</xsl:otherwise>
</xsl:choose>
 
</xsl:for-each>
<xsl:text disable-output-escaping="yes">&amp;</xsl:text>nbsp;
 
</body>
</html>
</xsl:template>
</xsl:stylesheet>

liefert als Ausgabe nicht mehr und nicht weniger als
Code:
<html><body>The Real Thing - Let's Go Disco&nbsp;  </body></html>

Damit kann man dann wirklich machen, was man lustig ist, nehme ich an, auch wenn ich von PHP nun wieder verdammt wenig verstehe.
 
liefert als Ausgabe nicht mehr und nicht weniger als
Code:
<html><body>The Real Thing - Let's Go Disco&nbsp;  </body></html>

Damit kann man dann wirklich machen, was man lustig ist, nehme ich an, auch wenn ich von PHP nun wieder verdammt wenig verstehe.
Joa damit könnte man arbeiten, man muss ja nur die html Tags entfernen.

Hab mir den Link mal angesehen, scheint ja fast so, als hätte er für jeden Hörer einen eigenen Mountpoint angelegt :D

Nachdem ich mir mal die Doku vom Icecast angesehen habe, weiss ich wieder, warum ich doch den Shoutcast bevorzuge. Der ist doch wesentlich einfacher in der Konfiguration, selbst bei Multistream Betrieb.
Der einzige Vorteil, den ich beim Icecast fand, ist die Sache mit dem Mountpoint-fallback.

-MAD
 
JHab mir den Link mal angesehen, scheint ja fast so, als hätte er für jeden Hörer einen eigenen Mountpoint angelegt
Ja, ich weiß auch nicht, was er da gemacht haben kann. Nach seiner Aussage neulich will ja auch zwei Shoutcast-Quellen auf einen Port gelegt haben, was nicht geht. Da stimmt irgendwas nicht.

Ich mag Icecast, weil er die MPEG-Daten nicht versaut. Das ist auch irgendwie das letzte, was ein Server tun sollte. Das einzige, was ich an SC2 mit seinem Transcoder angenehm finde, ist das Überblenden beim Streamwechsel. Das hätte man aber über das Globalgain-Field zumindest bei MP3 auch ohne Recodierung machen können.

Letztendlich ist die Icecast-Konfiguriererei reine Gewohnheit. Ich hatte mich am Anfang damit auch schwer getan, aber irgendwann "denkt" man so, wie der Server das abarbeitet. Dann ist es einfach.

Ansonsten: Klar sammelt der Icecast die Daten im XML-Format.
Unter http://mein.serv.er:8000/admin/stats.xml rufen schließlich auch andere Programme ihre Daten ab. :)
Nachteil: Dazu musst sich der Client mit Name und PWD anmelden. Dafür bekommt er eine solche
Ausgabe:
Code:
<?xml version="1.0"?>
<icestats><admin>icemaster@localhost</admin><client_connections>16</client_connections><clients>4</clients><connections>19</connections><file_connections>4</file_connections><host>192.168.0.1</host><listener_connections>2</listener_connections><listeners>1</listeners><location>Earth</location><server_id>Icecast 2.3.2</server_id><server_start>Thu, 25 Oct 2012 06:00:10 W. Europe Daylight Time</server_start><source_client_connections>2</source_client_connections><source_relay_connections>2</source_relay_connections><source_total_connections>4</source_total_connections><sources>2</sources><stats>0</stats><stats_connections>0</stats_connections><source mount="/live"><bitrate>320</bitrate><genre>Pop</genre><listener_peak>0</listener_peak><listeners>0</listeners><listenurl>http://192.168.0.1:8000/live</listenurl><max_listeners>unlimited</max_listeners><public>0</public><server_description>-</server_description><server_name>Teststream</server_name><server_type>audio/mpeg</server_type><slow_listeners>0</slow_listeners><source_ip>192.168.0.1</source_ip><stream_start>Thu, 25 Oct 2012 06:02:14 W. Europe Daylight Time</stream_start><title>Paul Young - Love Hurts</title><total_bytes_read>22660400</total_bytes_read><total_bytes_sent>0</total_bytes_sent></source><source mount="/mod"><bitrate>320</bitrate><genre>Pop</genre><listener_peak>1</listener_peak><listeners>1</listeners><listenurl>http://192.168.0.1:8000/mod</listenurl><max_listeners>unlimited</max_listeners><public>0</public><server_description>-</server_description><server_name>Teststream</server_name><server_type>audio/mpeg</server_type><slow_listeners>0</slow_listeners><source_ip>192.168.0.1</source_ip><stream_start>Thu, 25 Oct 2012 06:02:13 W. Europe Daylight Time</stream_start><title>Paul Young - Love Hurts</title><total_bytes_read>22624000</total_bytes_read><total_bytes_sent>22624681</total_bytes_sent></source></icestats>

Also wenn es nur um den Tracktitel ginge, wäre die andere Lösung sicher weit einfacher. Es sei denn, das Radio würde mehrere Streams anbieten. Hier sind ja auch gerade 2 zu sehen, obwohl es nach der Konfig von gestern 3 sein müssten, aber /autoplay wird hier gerade nicht bespielt.. Ein PHP-Script müsste also unbedingt in der Lage sein, aus einer randvollen stats.xml gezielt nur die Daten eines bestimmten Mounts lesen zu können.
 
Die Anmeldung mit Name und Passwort ist über php curl kein Problem. Da man mittels php simplexml auf die Daten in der xml wie auf Variablen zugreifen, kann ist auch das gezielte ausgeben eines Mountpoints nicht so wirklich ein Problem, da sich die Daten des Mount ja alle innerhalb der <source mount="/xyz></source> Tags befinden. Ich muss also dem script nur sagen, von welchem Mountpoint es die Daten holen soll.

- MAD
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben