Titelupdate via http

hab mich mal durch alte Posts gewühlt, aber keine exakt vergleichbare Situation gefunden. Hat auch nicht 100% mit mAL zu tun, aber bin über Hilfe sehr dankbar.

Nachdem ich Playout (mAL 4.2) & Encoding auf 2 Rechner aufteilen möchte, muss ich mir Gedanken machen, wie das Titel-Update auf Homepage und Shoutcast 1.9 in Zukunft funktionieren wird.

Webseite:
Ohne grosses Wissen zu Web Datenbanken & Übertragungsprotokollen habe ich mal versucht, eine HTTP POST Schnittstelle einzurichten, die auf unsere Webseite verweist…

http://xxxxxx/playlist.php

…und als Parameter time, date, title, interpret, duration mit Variablen gesetzt sowie User/Pwd der Page eingetragen.

  1. Sollte das so funktionieren? Was muss unser Webseitenmann noch tun, um diese Informationen abzurufen/darzustellen in der playlist.php?

  2. Wie kann man erreichen, dass nur die letzten 10 gespielten Titel in der Datei enthalten sind?

  3. Wäre es schwierig, den nächstzuspielenden Titel (laut Playlist) auch zu posten?

Zweiter Encoder/Shoutcast Server:
Kann ich trotzdem der zweite Encoding PC nur die Audioinformationen vom Mischpult erhält, die Titelinfos vom AusspielPC irgendwie wieder in den Stream mitencoden? i.e. kann ich die Titelinfos über http an den separaten Encoder schicken?

Vielen lieben Dank im Voraus für eure Ratschläge. Bin in diesem Metier leider etwas unbedarft.

Tobi

Öhm … ich hoffe ich habe nicht falsch verstanden was Du erklärt hast.

Aber das was Du suchst müßte das in der Konfiguration extra angelegte “Logging” sein?

Damit kannst Du dann in Kombination mit dem On- und Off-Air Modus unabhägig vom Rechner des Encoders die Titel streamen.

Hi Anna,

ja genau. Dort habe ich die http post Schnittstelle eingerichtet.

Die Frage zur Webseite ist eben, wie kann die Titelinformation in der playlist.php dargestellt werden? Denn irgendwie scheint sie dort nicht auf (wäre das Basis-URL Format so ok oder braucht’s da noch einen Port?). Aber wenn ein Setup von http post wie oben beschrieben alles ist, was man tun muss, dann muss man vllt auf der PHP Seite noch etwas einrichten? Kenn mich da leider nicht aus…
Und dann bleibt noch die Frage, wie ich den nächsten Titel übertrage (i.e. playing next…)

Bzgl. Shoutcast:
Ich weiss man kann eine separate Shoutcast-Logging Verbindung herstellen unter Config/Logging/Shoutcast. Aber ginge es auch, dass ich die Titelinfo des Ausspielrechners wieder mit in den Stream des EncodingPCs encodiere? Sodass das Titelupdate zusammen mit der Adioinformation die Buffer durchläuft und exact zum Titelanfang ankommt?
Also quasi die Titelinfo anstatt direkt an de Shoutcast-Server, an den Encoding PC schicke?

Merci, Tobi

Hi Tobi,
die playlist.php muss natürlich die ihr übergebenen Daten in irgendeiner Form weiter verarbeiten, z.B. in eine Datenbank schreiben oder als html Seite ausgeben.
Das ist aber ein komplexeres Thema, was Dir hier niemand erklären wird, da es überhaupt nichts mehr mit mAirList zu tun hat. PHP ist eine Programmiersprache für Webserverbierende Anwendungen. Damit kann man so ziemlich alles realisieren.
Es dürfte aber deutlich einfacher sein, die Titelinformationen samt Playlisthistorie vom Shoutcast Server abzugreifen.

Das währe jedenfalls mein Ansatz wenn ich das machen wollte.

Um den Titel über den Encoder mit zu übertragen, musst Du lediglich in den Encoder Einstellungen die entsprechenden Daten hinterlegen und definieren, was geloggt werden soll und was nicht. Standardmässig sind alle elemente angehakt, werden also alle übertragen.

Die Parameter die Du suchst, sind vermutlich %1 - %2. Sollte eigentlich auch schon voreingestellt sein.
Eine Verzögerung um x Sekunden kannst Du dort ebenfalls konfigurieren.

Greetz
Malte

Wenn dir das wie auf unserer Webseite reicht, den php script kann ich dir gerne geben.
Der parsed einfach nur den Shoutcast-last played ab und zeigt den auf der Webseite an.

Gruss:
-Serge-

Malte, danke!
Werde das ganze mal PHP seitig mit unserem Webseitenmann anschauen.
Seitens der mAirList-Einstellungen sollte dann ja alles korrekt sein.

Derzeit werden die Songs bei uns ja eh schon encoderseitig übertragen. Aber da ich nun das Encoding auf einen separaten Rechner legen möchte, liegt für mich die Challenge darin, dem EncoderPC die Titeldaten vom Ausspielrechner zuzuspielen, um sie dann wieder direkt in den Shoutcast-Stream hineinzuencoden, damit sie die gleiche Bufferzeiten durchlaufen, wie die Audiodaten. Oder meinst du, das mache wenig Sinn?

Die einfachere (aber wohl nicht 100% synchrone) Option wäre wohl, den Ausspielrechner direkt auf den Shoutcastserver loggen zu lassen und die Audiodaten vom EncoderPC separat dorthin zu streamen.

Serge: vielen Dank. Ich würde mir gerne mal euer Script mit unserem Webseitenmann gemeinsam anschauen. Er hat derzeit eines am laufen, das uns aber öfter mal abstürzt bzw. sehr ressourcenintensiv ist. Wie könntest du mir das zukommen lassen?

Grüsse, Tobi

Ich würde mal sagen, Du hast keinen Nachteil dadurch, dass das Titelupdate vielleicht um 20-30 Sekunden mit Versatz kommt.
100% Synchron wird man das nicht hin bekommen.
Wenn Du vermeiden möchtest, dass man den neuen Titel schon sehen kann, bevor er überhaupt beim Hörer ankommt, setz im Shoutcast Logging einfach ein ordentlich hohes Delay. Quasi Titel lieber zu spät übertragen als zu früh.

Mit welchem Encoder arbeitest Du denn auf dem anderen Rechner? Viele Standalone Encoder haben die Möglichkeit eine logdatei zu lesen oder sogar direkt per http Schnittestelle angesprochen werden zu können. Dein mAirlist würde dementsprechend nicht direk mit dem Server kommunizieren, sondern mit dem 2. Rechner lokal über Dein Netzwerk.
So würde ich das jedenfalls einrichten, denn dann bist Du bei jedem Sender 100% kompatibel und kannst auch nicht versehentlich ein Titelupdate schicken, weil Dein mAirList mal dummerweise of ON-AIR stand beim rumprobieren.

merci!
20-30 Sek fände ich eigentlich schon zu lange… als buffer-related Delay im Audiostream ok (solange die Titelinfo synchron ist), aber in Bezug auf Verzögerung zw Titelupdate und Audio würde ich lieber unter 10 Sek bleiben.

Genau das, was du am Ende beschreibst, wäre mein Ziel. Titelinfo über http an den EncoderPC und dort wieder direkt hinein in den Audiostream.

Mein “Standalone Encoder” wird eine zweite, abgespeckte Instanz von mAirList sein.

Insofern ist der Kern meiner Frage: Kann mAirList http post Daten empfangen und mit den Audioinformationen zusammen encoden?

Das wird wenn überhaupt nur mit einer Pro Lizenz funktionieren, weil die per REST Interface Befehle empfangen kann.
Sowas wie Butt, Edcast (reborn), Altacast (Seite gerade down) kommt nicht in Frage?
Das währe einfacher.

Tobi,

schick mir einfach deine email per PM.
Das php script kommt dann umgehend.

Gruss:
-Serge-

Malte, danke! Ich schau mir das lizenzmässig mit Torben an.

Hab jetzt mit unserem Web-Guru gesprochen :slight_smile:

Derzeit bezieht unsere Homepage ohnehin die Songdaten über unseren Shoutcast Server mittels einer PHP Klasse (ähnlich zum Script, das Serge uns geschickt hat).
Damit die Playlist auf der Webseite aktuell bleibt, wird dieses Script in einem kurzen Intervall ausgeführt.

Da das zu häufig passiert und unser Hoster dadurch das Script blockiert, brauchen wir eine andere Lösung:
Wir wollen das Update erst ausführen, wenn das neue Lied auch wirklich gestartet wurde. Und dies direkt von mAL des Ausspielrechners an unsere Webseite.

1.) Daher würden wir gerne Start-/Endzeit und/oder Titellänge abgreifen, was meines Erachtens nur über die http POST oder GET Loggingvariante möglich ist. Stimmt das so? Oder gäbe es bessere Alternativen?

Wir haben POST und GET logging in mAirList bereits versucht aufzusetzen, aber es scheint nichts am Server anzukommen. Das PHP Script bleibt leer (ECHO Befehl mit in mAL definierten Parametern gibt nichts aus).

2.) In alten Threads habe ich noch gesehen, dass Parameter wie “pass” und “mode” (updinfo) benötigt wurden… ist dies heute noch relevant?

3.) Verstehe ich richtig, dass eine Angabe der Authentifikationsdaten in der Logging-Config von mAL nur dann nötig ist, wenn ich das Script nicht ohne Anmeldung im Browser aufrufen kann?

VIELEN DANK für jede Hilfe!

LG, Tobi

Was heisst denn “kurzer Intervall” ?
Wenn du das Script alle 30 Sekunden ausführst, das müsste völlig reichen. Soviel Latenz hast du meist schon auf dem Stream.

Gruss:
-Serge-

Ein anderer Lösungsnansatz, währe, direkt in eine MySQL oder was auch immer DB, zu loggen.
Das müsste auch in der Home-Studio gehen. Dann hast Du die Daten immer zum richtigen Zeitpunkt in der DB und brauchst webseitig nur noch eine Ausgabe machen.

Auf der anderen Seite, Shoutcast schreibt doch selber eine Historie in eines der XML Logs. Reicht es nicht, die jedesmal zu importieren, wenn ein Besucher die Seite anzeigen lässt? Damit bekommst Du die Zugriffe runter. bzw. könntest zusätzlich alle 2-3 Minuten mal einen Import starten und würdest alles geliefert bekommen, was in der Zwischenzeit war.

Nachteil, das geht nur über den Shoutcast Admin Zugang. In Deinem PHP Script stehen also die Admin Daten, was ein gewisses Sicherheitsrisiko sein kann.

Dafür schwirren auch genug Code Schnipsel im Netz rum.