Webradio auf Windows vServer richtig einrichten

Status
Für weitere Antworten geschlossen.

Stefanseiner

Benutzer
Halo zusammen,

ich möchte gerne für unseren Kinder- und Jugendverband (Jugendwerk) ein Webradio einrichten welches die Jugendlichen selbst moderieren können.

Bis vor zwei Jahren hatte ich das schon, allerdings per gesponsortem Streamserver-Anbieter.
Als das Sponsoring eingestellt wurde schleif auf das Projekt ein.

Nun haben wir einen vServer für unsere Webseite, Forum und Wiki, und ich möchte darauf nun auch wieder einen Webradioserver packen.

Icecast hab ich bereits installiert, aber ich komme damit scheinbar nicht klar, bekomme nach zwei Tagen Rumprobieren noch immer keine Verbindung vom Winamp Oddcast Plugin zum Server hin, das Icecast Supportforum scheont tot zu sein und Anleitungen im Netzt fast überall absolut veraltet.
Shoutcast hab ich auch ausprobiert, aber dafür braucht man ja eine kostenpflichtige Lizenz für den MP3 Transcoder.

Nun meine Frage:
gibt es kostenlose Alternativen zu Icecast / Shoutcast bzw. eine gute Anleitung zu Icecast?

was ich möchte:
- 50 Hörer, perspektivisch 100 Stk. mit mind. 128kb/s erreichen
- 24/7 Auto DJ Funktion (lokal auf dem Server) die automatisch ein Verbinden eines DJs zulässt und beim Disconnect des DJs wieder automatisch anfährt

was ich habe:
- vServer bei Host Europe
- rund 100 GB Festplatte für Musik frei
- garantierte 50 MBit Flatrate (eigentlich 100 MBit, wird aber bei übermäßiger Nutzung auf 50 MBit gedrosselt)
- Windows Server 2008 64 Bit (ist das Dingen hier: Virtual Server 5.0 XXL Windows )

Ich hoffe, ihr könnt mir helfen?

Danke im Voraus und Grüsse - Stefan
 
HI,

was sagt denn dein IceCast? Die Windows-Version hat ja sogar eine halbwegs ansprechende GUI in der du alles leicht erkennen kannst.
Auf verdacht rate ich jetzt mal: Hast du vielleicht noch die Firewall von Windows an, bzw eine entsprechende Ausnahme für IceCast nicht hinterlegt?
Dann würde die Firewall deine eingehende Verbindung abblocken. Oddcast sagt "ich hab keine Verbindung" und IceCast kriegt nicht mal mit das sich wer verbinden will.

Wäre so mein erster Verdacht. Würde mir aber zeigen, dass du vielleicht einen Shoucast/IceCast-Stream mieten solltest und den Server wieder kündigst, da das Risiko das etwas passiert zu groß ist (mangelndes Fachwissen etc.)
Will dich damit nicht angreifen oder in eine Ecke drängen, will es nur rechtzeitig erwähnt haben, da gerade durch die vServer sehr viele User auf die Idee kommen sich so einen Server zu holen und am Ende werden sie zur Spamschleuder oder whatever.

Grüße
Bart
 
gibt es kostenlose Alternativen zu Icecast
Ich würde gar keine erst suchen, weil man eigentlich keine braucht.
gibt es ... eine gute Anleitung zu Icecast?
Braucht es eigentlich auch keine. Die Konfiguration ist mit allen relevanten Parametern eigentlich recht klar dokumentiert. Allerdings - das räume ich ein - wird dem Neuling manches erst durch Fehlermachen so richtig deutlich. Insofern nicht verzagen. Bei konkreten Fragen kann man dies oder jenes hier im Forum schon nachlesen (Stichworte Fallback und Shoutcast-Kompatibilität)

Bezüglich der Verbindungsproblematik möchte ich im Zusammenhang mit genau dem letzten Begriff darauf hinweisen, dass Icecast ohne explizite Konfig keine Logins von Shoutcast-Quellen annehmen kann. Also muss der Streamer auf "Icecast(2)" stehen. Wenn er das gar nicht beherrscht, so muss dem Icecast gesagt werden, an welchen Ports und auf welchen Mounts er "Shoutcast" anbieten muss. Das bietet sich aber so oder so an, weil es den Moderatoren dann frei steht, Software ihrer Wahl zu verwenden, um ihren Stream auf den Server zu bekommen.
 
Danke für die Antworten.

Und ja, es lag tatsächlich nur an der Firewall :rolleyes:

Punkt 1 wäre quasi mal geschafft.

Zu Fallback hab ich schon was gefunden, aber ich verstehe noch nicht was es mit den "Mounts" auf sich hat.
Welche (AutoDJ) Software würdet ihr empfehlen um lokal auf dem vServer den Icecast zu füttern? Irgendwie muss da dann auch noch eine Autostartfunktion rein für den Fall dass das Betriebssystem geupdated und danach neugestartet wird (1x pro Woche).
 
Irgendwie muss da dann auch noch eine Autostartfunktion rein für den Fall dass das Betriebssystem geupdated und danach neugestartet wird (1x pro Woche).
Und genau DAS ist der Grund, warum sich die Wörter Windows und Server gegenseitig ausschliessen :D

- 24/7 Auto DJ Funktion (lokal auf dem Server) die automatisch ein Verbinden eines DJs zulässt und beim Disconnect des DJs wieder automatisch anfährt
Würde mit einem SC-Trans gehen (Dea wird mich für den Vorschlag wieder verfluchen) Aber der kann genau dies. Der Moderator verbindet auf den SC-Trans, dieser blendet vom der Auto-Playlist über zu moderierten Sendung und bei deren Ende wieder zurück zur Auto-Playlist. Allerding kann der SC-Trans afaik nicht an einen Icecast- sondern nur an SHOUTcast- Server streamen. SC-Trans gibt es auch in einer Windows Version.

-MAD
 
Ja, Mad, eben nicht sc_trans, schon gar nicht, wenn der Kollege bereits Icecast2 benutzt.

btw:

Zu Fallback hab ich schon was gefunden, aber ich verstehe noch nicht was es mit den "Mounts" auf sich hat.
Mounts heißen bei Icecast die virtuellen "Verzeichnisse", auf denen die Streams laufen. Icecast ist hier nicht vergleichbar mit der Funktionalität, wie du sie möglicherweise noch von Shoutcast 1.9.x kennst, sondern Icecast kann auf einer Adresse und über einen Port zeitgleich unzählige Streams anbieten. Diese werden über die Mountpoints von den Clienten referenziert, zum Bleistift so:

Stream 1: meinserv.er:8000/live
Stream 2: meinserv.er:8000/autoplay

Fallback meint dann genau den Vorgang, den du möchtest, zum Bleistift:

Ein Transcast oder Ices läuft als AutoDJ auf dem Server (oder der Stream wird von extern (auch als Relay) eingegeben) und das ganze auf den Mount "autoplay". Der Mount "live" würde zur Aufnahme des Upstreams eines Moderators dienen. Stellt dieser seine Arbeit ein, führt der Icecast einen HTTP-Move (302) durch und sagt den Clienten, sie sollen ihre Daten von /autoplay holen. Damit hören sie automatisch dort. Nimmt ein Moderator seine Arbeit auf, werden die Hörer wieder zurückgeschaltet. In der Config sähe das so aus:
Code:
<!-- This mount is for taking connects from external
    ShoutCast-sources (i.e. moderators stream) -->
    <mount>
        <mount-name>/live</mount-name>
        <fallback-mount>/autoplay</fallback-mount>
        <fallback-override>1</fallback-override>
        <public>0</public>
        <stream-name>dein Radioname</stream-name>
        <stream-description>-</stream-description>
        <genre>Pop</genre>
        <mp3-metadata-interval>73728</mp3-metadata-interval>
    </mount>
    <listen-socket>
        <port>8000</port>
        <shoutcast-mount>/live</shoutcast-mount>
    </listen-socket>
 
<!-- Fallback-Mount - Autostream -->
    <mount>
        <mount-name>/autoplay</mount-name>
        <public>0</public>
        <stream-name>dein Radioname</stream-name>
        <stream-description>-</stream-description>
        <genre>Pop</genre>
        <hidden>1</hidden>
        <mp3-metadata-interval>73728</mp3-metadata-interval>
    </mount>
    <listen-socket>
        <port>8010</port>
        <shoutcast-mount>/autoplay</shoutcast-mount>
    </listen-socket>

Hier ist zu beachten, dass der Icecast dann die Ports 8000, 8001, 8010 und 8011 öffnet. Also auf die Firewall achten!
 
Danke für die ausführliche und gute Erklärung, jetzt hab ich's gerafft :)

Wahnsinn, ich habe heute quasi den ganzen Tag gebraucht um Icecast, Winamp+ Oddcast und verschiedene Playlists so einzurichten dass sie mit Windows starten und ohne weiteres Zutun loslegen.
Dazu noch das "Null Output DSP" und per Windows Aufgabenplaner rotierende Playlists angelegt.

Was mir hier noch fehlt ist Intro alle x Songs sowie wenn sich ein Zuhörer verbindet. Kann Icecast sowas?


Morgen gehts dann zunächst an die Fallback Funktion und danach an die Playerintegration in die Webseite.
Hier ist das Problem dass das verwendete Jommla bei jeder (Unter-)Seite die komplette Seite neu läd, ein direkt in die Seite integrierter Player somit ständig stoppt und wieder neu auf Play geklickt werden muss.

Schöner wäre da ein kleiner Flashplayer per Popup.
Habt ihr da einen in Petto der auch den aktuellen Titel anzeigt?

Danke im Voraus und Grüsse aus dem Saarland
 
Ja irgendwie wohl noch nicht so ganz. Sagte ich nicht:
Die Konfiguration ist mit allen relevanten Parametern eigentlich recht klar dokumentiert.
?

Da steht - man muss es nur lesen und notfalls eine Überstzungsmaschine damit füttern - ganz deutlich:
http://icecast.org/docs/icecast-2.3.3/icecast2_config_file.html schrieb:
intro

An optional value which will specify the file those contents will be sent to new listeners when they connect but before the normal stream is sent. Make sure the format of the file specified matches the streaming format. The specified file is appended to webroot before being opened
Das ist für mein Empfinden wenig mißverständlich.

Aber gleich noch ein paar Argumente, warum man das gleich lassen sollte (auch, wenn einige auf dies' alberne Gimmick nicht verzichten können (wollen):

  • Ich habe noch nie erlebt, dass in solchen Intros, sofern ich davon genervt wurde, irgend eine Information enthalten war, die es unverzichtbar gemacht hätte.
  • Da meistens überlaute, gegen die Wand gefahrene Jingles als Intro zum Einsatz kommen, jagen sie dem einschaltenden Hörer zunächst nichts als einen Schreck ein. Wenn der Spuk dann endlich vorbei ist, bekommt man in der Regel das weit weniger konsistente oder so sonstwie kaputte Signal eines AutoDJs oder Laienmoderators angeboten, was nach dem Plärrjingle der nächste Schock ist und irgendwie nicht zusammenpasst.
  • Spätestens nach dem zweiten "Einschalten" dürfte sich der Hörer einigermaßen verarscht vorkommen, weil er wieder den selben Spuk erlebt und mit Inhalt genervt wird, den er nicht nur schon kennt, sondern der ihn auch nicht interessiert. So verprellt man sein Publikum effektiv schon in den ersten Sekunden.
Diese Punkte und die Tatsache, dass jeder normale Bürger, wenn er ein x-beliebiges Radio einschaltet, sofort im laufenden Programm landet und dies wohl auch genau so erwartet, sollten einleuchtend und abschreckend genug sein, um die fixe Idee schnell zu verwerfen.
 
Hmm, das Fallback funktioniert noch nicht.

Als Playerlink soll ja bestimmt der Live-Stream mit dem dazugehörigen Port verwendet werden, richtig?

Den Live-Stream kann ich zwar über den Webseiten Flash-Player hören (eingespeist durch Winamp + Oddcast auf meinem Laptop), aber nach einem Disconnect meines Oddcasts wird nicht auf den AutoDJ Stream auf dem Server umgeswitcht.

Hier soweit einmal meine Config File:
Code:
<icecast>
    <limits>
        <sources>2</sources>
        <clients>100</clients>
        <queue-size>2048000</queue-size>
        <client-timeout>30</client-timeout>
        <source-timeout>10</source-timeout>
    <burst-size>512000</burst-size>
    </limits>
 
    <authentication>
        <source-password>XXXXXXXX</source-password>
        <relay-password>XXXXXXXX</relay-password>
        <admin-user>Stefanseiner</admin-user>
        <admin-password>XXXXXXXX</admin-password>
    </authentication>
 
    <hostname>Jugendwerk-Radio</hostname>
    <server-id>icecast 2.3</server-id>
 
<!-- DJ Live-Stream -->
    <mount>
        <mount-name>/live</mount-name>
        <fallback-mount>/stream</fallback-mount>
        <fallback-override>1</fallback-override>
    <fallback-when-full>1</fallback-when-full>
    <public>0</public>
        <stream-name>Jugendwerk-Radio Live</stream-name>
        <mp3-metadata-interval>73728</mp3-metadata-interval>
    </mount>
 
    <listen-socket>
        <port>8000</port>
        <shoutcast-mount>/live</shoutcast-mount>
    </listen-socket>
 
 
<!-- Autostream -->
    <mount>
        <mount-name>/stream</mount-name>
    <public>0</public>
        <stream-name>Jugendwerk-Radio</stream-name>
        <hidden>1</hidden>
        <mp3-metadata-interval>73728</mp3-metadata-interval>
    </mount>
 
    <listen-socket>
        <port>8010</port>
        <shoutcast-mount>/stream</shoutcast-mount>
    </listen-socket>
 
    <fileserve>1</fileserve>
    <paths>
        <logdir>./logs</logdir>
        <webroot>./web</webroot>
        <adminroot>./admin</adminroot>
        <alias source="/" dest="/status.xsl"/>
    </paths>
 
    <logging>
        <accesslog>access.log</accesslog>
        <errorlog>error.log</errorlog>
    <playlistlog>playlist.log</playlistlog>
          <loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
    </logging>
</icecast>
 
Das liegt an den Flashplayern bzw. den Browsern, in denen sie laufen. Meistens stoppt die Wiedergabe einfach, bei Playern, die repeaten, läuft dann im Cache des Browsers aufgelaufener Buffer in Endlosschleife. Wenn du /live mit einem Player á la foobar, Winamp o.ä. abhörst, sollte das funktionieren, sogar wenn beim Umschalten die Streamformate wechseln.

Einen Workaround für das Problem bietet der EMFF, wie hier beschrieben ist. Möglicherweise funktioniert das mit anderen Playern, die sich per Playlist steuern lassen, in gleicher Weise. Ausprobieren!
 
hmm, ich vermute es liegt an etwas anderem, denn auch wenn ich den Flash-Player schliesse, Seite neu lade und den Player wieder öffne kommt keine Verbindung zum AutoDJ Stream
 
eine Titelanzeige auf der Webseite wäre auch noch super, und zusätzlich ein Frame o.ä. in welchem die 10 zuletzt gespielten Songs angezeigt werden.

Weiss jemand wie das umzusetzen ist?
 
Also ich habe deine Config - so wie sie ist - eben lokal ausprobiert: funktioniert. Der Server macht zunächst so, was er soll, auch wenn das hinsichtlich Buffer und Co. noch optimierbar wäre. An ihm liegts also nicht. Flashplayer sind eher ein Problem, vor allem in der aktuellen Version des FF (16.0.1), da läuft bei mir keiner mehr, wenn eine Seite geladen wird und darauf ein Flashplayer einen MP3-Stream spielen soll. Für solche Späße muss ich (als WinXP-User) den IE8 heranziehen. Was sonst noch schief gegangen sein kann -> Glaskugel.

Eine Titelanzeige ist auch kein übertrieben großes Problem. Schau dir mal die status.xsl im web-Verzeichnis an. Da wirst du schnell erkennen, dass diese eine ganze Reihe Anweisungen enthält, aus denen der Parser im Icecast den HTML-Code generiert, den man bei Aufruf der Seite im Browser zu sehen bekommt. Nimm aus der Datei einfach alles heraus, was nicht angezeigt werden soll, bis nur die Funktionen zur Titelanzeige übrig bleiben, speiche die Datei unter einem anderen Namen. Die lässt sich dann auf der Webseite des Radios in einem IFRAME per Script oder self-refresh regelmäßig vom Icecast abrufen. Mit Code dazu kann ich gerade nicht dienen, aber selfhtml hilft weiter.

Ach, die title.xsl hab' ich dann doch noch aufgestöbert:
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>

<table border="0" cellpadding="0" cellspacing="0" width="290">
  <tbody>
    <tr><td style="font-family: Helvetica,Arial,sans-serif; color: rgb(0, 0, 0);">
      <font size="-1">
      <xsl:if test="artist">
      <xsl:value-of select="artist" /> - </xsl:if>
      <xsl:value-of select="title" /></font>
      </td>
  </tr>
  </tbody>
</table>
</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>

Der Mount /autostream darf dann aber nicht hidden sein, denn dann wird freilich nichts angezeigt.
 
hmm, welcher Mount / Portnummer gehören denn nun in:
- die AutoDJ Source
- den Live Source
- den Player zum Hören des Streams?

aktuell hab ich:
- AutoDJ Source: /stream 8010
- Live Source: /live 8000
- Player zum Hören des Streams: /live 8000 (dann ist nur was zu hören wenn gerade live gesendet wird) und /stream 8010 (dann ist immer nur der AutoDJ Stream zu hören auch wenn der Live Stream dazukommt)

Edit:
in der Firewall sind alle 4 Ports für eingehende TCP Verbindungen geöffnet (8000, 8001, 8010, 8011)

Edit2:
zum Testen sende ich gerade mit Winamp+Oddcast und zum Hören benutze ich jetzt den VLC Player anstatt den Flash
 
Also bitte! So schwer ist das doch nun wirklich nicht! Ich habe oben minutiös auseinanderposamentiert, wie das Fallback funktioniert, und es funktioniert mit deiner Konfig auch genau so!
Allerdings hast du (woher die krummen und überdimensionalen Werte?) gigantische Puffer definiert, die bewirken, dass man den Streamwechsel erst nach einer halben Minute überhaupt mitbekommt.

Setze daher bitte zunächst burst-size auf die standardmäßigen 65536 und queue-size auf 196608 (das ist exakt das Dreifache vom Initialburst. Keiner deiner Hörer wird Streams von Moderatoren hören wollen, die schon längst tot sind ;) (wenn ich das mal so übertreiben darf).
Das fallback-when-full stört zwar nicht, ist aber in deiner Konfiguration vollkommen überflüssig. Nimm es daher bitte einfach raus und definiere ein globales Listenerlimit.

Und nochmal: Die Portzuordnung, die jetzt so definiert ist, ist nur so nötig, weil ich dir empfohlen hatte, die Mountpoints "Shoutcast-kompatibel" zu gestalten, um später flexibler zu sein. Grunsdätzlich wäre der Icecast sonst in der Lage, ALLES, wirklich alles über einen einzigen Port abzuwickeln. Das hat zur Folge, dass es jetzt auch egal ist, auf welchen Port der Hörer mit seinem Clienten seine Anfrage schickt. Man kann über die 8000 genau das selbe erreichen wie über die 8010. Wesentlich ist nur die Angabe des Mountpoints - wie das eben bei einem URL so ist. Man kann nur erhalten, was man auch anfordert.

In diesem Sinne hört man unter /autoplay natürlich NUR diesen, denn der fallbackt ja nirgendwohin und das ist auch gut so. Unter /live hört man selbstverfreilich den Moderator, falls der was liefert, ansonsten /autoplay - und zwar ohne dass man das merkt. Und probiere das nicht mit gurkigen Flashplayern - das geht in die Hosen. foobar, Winamp, WMP und andere gängige beherrschen den Spaß, den Icecast da veranstaltet, seit Jahren problemlos. Das haben wir auf's Verrecken getestet.
 
hmm, ok, also hab ich die Ports / Mounts korrekt eingegeben und im Player muss der /live Mount angegeben werden.

burst-size und queue-size sind nun wieder auf default Werte, der fallback-when-full ist raus - doch es scheint noch immer nicht zu funktionieren.:cry:
Komisch ist auch dass der Live-Stream nicht im Icecast Server unter Source Level Stats angezeigt wird, aber wie gesagt trotzdem funktioniert solange live gesendet wird.
Zum Testen hab ich mal das Winamp Shoutcast DSP ausprobiert. Connecten funktioniert, hier zeigt Icecast auch die Source als /live unter den Source Level Stats an - doch per VLC kann ich hier nichtmal zu dem Shoutcast-Livestream verbinden.

Zur Sicherheit mal nochmal meine aktuelle Config
Code:
<icecast>
    <limits>
        <sources>5</sources>
        <clients>100</clients>
        <queue-size>196608</queue-size>
        <client-timeout>30</client-timeout>
        <source-timeout>5</source-timeout>
    <burst-size>65536</burst-size>
    </limits>
 
    <authentication>
        <source-password>XXXXXXXX</source-password>
        <relay-password>XXXXXXXX</relay-password>
        <admin-user>Stefanseiner</admin-user>
        <admin-password>XXXXXXXX</admin-password>
    </authentication>
 
    <hostname>Jugendwerk-Radio</hostname>
    <server-id>icecast 2.3</server-id>
 
 
<!-- DJ Live-Stream -->
    <mount>
        <mount-name>/live</mount-name>
        <fallback-mount>/autodj</fallback-mount>
        <fallback-override>1</fallback-override>
    <public>0</public>
        <stream-name>Jugendwerk-Radio Live</stream-name>
        <hidden>0</hidden>
        <mp3-metadata-interval>73728</mp3-metadata-interval>
    </mount>
 
    <listen-socket>
        <port>8000</port>
    <shoutcast-mount>/live</shoutcast-mount>
    </listen-socket>
 
 
<!-- Autostream -->
    <mount>
        <mount-name>/autodj</mount-name>
    <public>0</public>
        <stream-name>Jugendwerk-Radio</stream-name>
        <hidden>0</hidden>
        <mp3-metadata-interval>73728</mp3-metadata-interval>
    </mount>
 
    <listen-socket>
        <port>8010</port>
    </listen-socket>
 
    <fileserve>1</fileserve>
    <paths>
        <logdir>./logs</logdir>
        <webroot>./web</webroot>
        <adminroot>./admin</adminroot>
        <alias source="/" dest="/status.xsl"/>
    </paths>
 
    <logging>
        <accesslog>access.log</accesslog>
        <errorlog>error.log</errorlog>
    <playlistlog>playlist.log</playlistlog>
          <loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
    </logging>
</icecast>

Das kann doch ehrlich nicht so schwer sein...
 
Du bekommst auch einen Mount, der nicht bespielt wird, im Server-GUI nicht angezeigt. Wenn nur der /autostream bedient wird, dann ist, auch wenn der Hörer /live referenziert und der Meinung ist, es wäre /live, nicht anderes als /autostream vorhanden. Das liegt daran, dass der Server unter "Fallback" nicht mehr und nicht weniger versteht als einen HTTP-302, einen sogenannten Move. Mit diesem sagt der Server dem Clienten: Du hörst ab sofort bitte unter /autostream, oder eben wieder unter /live, sobald dort wieder Stream eingeht.

Es hat sich übrigens hoffentlich ganz von selbst verstanden, dass die Shoutcast-Quelle, die den /autostream bedienen soll, ihren Upstream auch brav an Port 8010 (+8011) abliefert! Server ordnet die Connects automatisch nach Portnummer dem zugewiesenen Mount zu. Das ist ja der Witz an der Sache.
Sollte das eine Icecast2-Source sein, ist es Wurst, wo sie connecten will. Aber das hatten wir ja schon.
 
im GUI wird der Livestream nicht angezeigt selbst wenn er läuft und verbunden ist, mit VLC auch korrekt empfangen werden kann.

Und mit dem Shoutcast DSP habe ich testweise den Livestream bespielt.
Der AutoDJ Stream kommt weiterhin von Winamp+Oddcast.

---------------------------

es funktioniert :thumbsup:
Auch wenn ich nicht so genau weiss wieso.
Ich hab jetzt beide Sources auf Port 8010 umgestellt, den Live-DJ Mount mit Shoutcast Kompatibilität,
es werden nun beide mounts im GUI angezeigt und Fallback funktioniert auch. Oddcast wie auch das Shoutcast DSP.

scheinbar gibt es irgendein Problem mit dem Port 8000
 
Also wie DAS gehen soll, weiß ich auch nicht. Da kannst du nur die Sache mit Shoutcast- und Icecast-Protokoll beim Upstream falsch verstanden haben und bei den "Sendern" entsprechend Wirres angegeben haben. Zwei Shoutcast-Quellen auf einen Port streamen zu lassen kann ja gar nicht gehen. Das verbietet der Server und arbeitet freilich nur mit der Quelle, die zuerst connected wurde. Und die wird, wenn es eine Shoutcastquelle ist, per Portnummer dem Mount zugewiesen, der in der Config angegeben wurde.

Das einzige, was eben parallel dazu beliebig geht, ist eine Icecast2-Quelle aufzuspielen. Da man bei deren Konfiguration ja den Ziel-Mount angeben muss, ist dort die Portnummer des Server vollkommen Irr-Elefant! Icecastquellen können über jeden Port verbinden, der geöffnet wurde. Shoutcastquellen im Grunde auch, aber die werden eben den Mounts zugewiesen.
 
Also wie DAS gehen soll, weiß ich auch nicht. Da kannst du nur die Sache mit Shoutcast- und Icecast-Protokoll beim Upstream falsch verstanden haben und bei den "Sendern" entsprechend Wirres angegeben haben.

wie gesagt, ich weiss nicht wo das Problem mit dem Port 8000 liegt oder wieso es jetzt funktioniert, aber es tuts.

Egal ob per Oddcast als Icecast Stream oder per Shoutcast DSP - der Stream springt brav vom AutoDJ Stream auf den jeweiligen Livestream um und nach einem Disconnect wieder zurück auf den AutoDJ.

Hier nochmal die aktuelle Config:

Code:
<icecast>
    <limits>
        <sources>5</sources>
        <clients>250</clients>
        <queue-size>196608</queue-size>
        <client-timeout>30</client-timeout>
        <source-timeout>5</source-timeout>
    <burst-size>65536</burst-size>
    </limits>
 
    <authentication>
        <source-password>XXXXXXXX</source-password>
        <admin-user>Stefanseiner</admin-user>
        <admin-password>XXXXXXXX</admin-password>
    </authentication>
 
    <hostname>Jugendwerk-Radio</hostname>
    <server-id>icecast 2.3</server-id>
 
 
<!-- DJ Live-Stream -->
    <mount>
        <mount-name>/live</mount-name>
        <fallback-mount>/autodj</fallback-mount>
        <fallback-override>1</fallback-override>
    <public>1</public>
        <stream-name>Jugendwerk-Radio Live</stream-name>
        <hidden>0</hidden>
        <mp3-metadata-interval>73728</mp3-metadata-interval>
    </mount>
 
    <listen-socket>
        <port>8010</port> 
    <shoutcast-mount>/live</shoutcast-mount>
    </listen-socket>
 
 
<!-- Autostream -->
    <mount>
        <mount-name>/autodj</mount-name>
    <public>1</public>
        <stream-name>Jugendwerk-Radio</stream-name>
        <hidden>0</hidden>
        <mp3-metadata-interval>73728</mp3-metadata-interval>
    </mount>
 
    <listen-socket>
        <port>8010</port>
    </listen-socket>
 
    <fileserve>1</fileserve>
    <paths>
        <logdir>./logs</logdir>
        <webroot>./web</webroot>
        <adminroot>./admin</adminroot>
        <alias source="/" dest="/status.xsl"/>
    </paths>
 
    <logging>
        <accesslog>access.log</accesslog>
        <errorlog>error.log</errorlog>
    <playlistlog>playlist.log</playlistlog>
          <loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
    </logging>
</icecast>


Zum Status / Titelanzeige etc.:
mir würde sowas wie hier gefallen: http://www.radiostream24.com/status/deep/details/xml_shoutcast.php

Nach etwas im Quellcode stöbern scheint das das Modul "Radio_Stats" von Pegasus / Xitara zu sein.
Gesucht, gefunden, studiert - nicht zum Laufen bekommen da auch weder eine Readme noch sonst eine Dokumentation in dem Package oder auf der Webseite verfügbar ist.
Aber ich versuch das mal weiter, weil ich hätte gerne auf jeden Fall eine Anzeige der letzten X gespielten Songs und das bietet die Icecast status.xls nicht. Das könnte man aber wohl vermutlich irgendwie aus der playlist.log extrahieren.

Um dann noch dem Joomla RARadio Player eine "aktueller Song" Funktion zu verpassen muss ich noch irgendwie den aktuellen Song in eine Textdatei schreiben lassen den der Player ausliest.

Es wird. Zwar mühsam, aber es wird - dank eurer tatkräftigen Hilfe :)
 
Kann der icecast die Daten auch als XML ausgeben? XML ist doch etwas einfacher in php zu verarbeiten als eine XLS Datei.
Falls ja, kannst ja mal die xml-ausgabe posten, dann schau ich mir das gern mal an und kann ggf. mein script für den Shoutcast Status entsprechend anpassen.

-MAD
 
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.
 
..., aber nach einem Disconnect meines Oddcasts wird nicht auf den AutoDJ Stream auf dem Server umgeswitcht.

Da gibt's noch einen Workaround, um den Clients den HTTP-Move zu ersparen, falls sie ihn nicht verstehen: Ein lokales Relay.
Code:
    <mount>
        <mount-name>/live</mount-name>
        <stream-name>Humpfndudlbubblfunk</stream-name>
        <stream-description>-</stream-description>
        <genre>Pop</genre>
        <mp3-metadata-interval>73728</mp3-metadata-interval>
    </mount>
 
    <relay>
        <server>127.0.0.1</server>
        <port>8010</port>
        <mount>/mod</mount>
        <local-mount>/live</local-mount>
        <on-demand>0</on-demand>
        <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
    </relay>
 
    <mount>
        <mount-name>/mod</mount-name>
        <fallback-mount>/autoplay</fallback-mount>
        <fallback-override>1</fallback-override>
        <stream-name>Humpfndudlbubblfunk</stream-name>
        <stream-description>-</stream-description>
        <genre>Pop</genre>
        <hidden>1</hidden>
        <mp3-metadata-interval>73728</mp3-metadata-interval>
    </mount>
 
    <listen-socket>
        <port>8000</port>
        <shoutcast-mount>/mod</shoutcast-mount>
    </listen-socket>
 
    <mount>
        <mount-name>/autoplay</mount-name>
        <stream-name>Humpfndudlbubblfunk</stream-name>
        <stream-description>-</stream-description>
        <genre>Pop</genre>
        <hidden>1</hidden>
        <mp3-metadata-interval>73728</mp3-metadata-interval>
    </mount>
 
    <listen-socket>
        <port>8010</port>
        <shoutcast-mount>/autoplay</shoutcast-mount>
    </listen-socket>
Was da passiert, kannst du sicher mittlerweile allein herauslesen, oder? ;)

Ehe du beim Probieren aber in Panik verfällst, weils nicht gleich auf Anhieb spielt, sei gleich der Pferdefuß vermerkt:
Icecast-Relays verhalten sich äußerst defensiv und starten, wenn sie ihre Quellen nicht abrufen können, nur im Minutentakt einen neuen Verbindungsversuch. Das bedeutet, dass nach dem Neustart von Icecast und dem Verbinden der Source(s) locker mind. eine Minute vergeht, ehe auf /live etwas zu hören ist. Das ist normal!
Weiters erfordert diese Methode, dass /autostream (oder ~play) permanent bespielt wird, denn bei einer Übergabe von einem Moderator zum nächsten liefe das Relay sonst - wenn auch nur Sekundenbruchteile - ins Leere. Dann würde der nächste sozusagen eine Minute lang in eben diese streamen und die Hörer erschrocken ihre Hard- und Software in Augenschein nehmen, um nach dem Grund für die Stille suchen.
Aber sonst funktioniert das flüssig und erspart Playlist-Experimente in Flashplayern.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben