Übertragung an Icecast / SHOUTcast mit Objective-C, C oder C ++

8

Ich möchte Audiodaten auf SHOUTcast- oder Icecast-Servern bereitstellen, ohne einen eigenen Sender zu verwenden, da ich dies auf verschiedenen Plattformen einschließlich Mobile verwenden werde.

Ich brauche Protokollbeschreibungen, Open-Source-Projekte oder Samples, um Audiodaten (von Mic oder File) mit Objective-C, C oder C ++ an SHOUTcast- und Icecast-Server senden zu können.

Wo finde ich die Informationen, die benötigt werden, um einen geeigneten SHOUTcast / Icecast-Quellclient zu erstellen?

    
Ray Frand 11.02.2012, 09:04
quelle

2 Antworten

12

Kommentar: Es wird Zeit, dass jemand einen SHOUTcast-Quellclient für Mobilgeräte erstellt. Ich brauche das schon eine Weile, aber habe keine Zeit, es zu bauen, also ein großes Lob an dich. Bitte mach irgendwann eine Android Version.

Als erstes sollten Sie Wireshark herunterladen.

Starten Sie die Paketerfassung, starten Sie einen SHOUTcast-Server, starten Sie einen Quell-Client und verbinden Sie ihn mit dem Server. Bereite dich auf die erschreckende Einfachheit dieses Protokolls vor.

Primäres Audio-Protokoll

  1. Der Quellclient stellt eine Verbindung zu SHOUTcast mit TCP her. Verwenden Sie den Port eins vom Basisport. Wenn Ihr Basis-Port beispielsweise 8000 ist, verbinden sich Ihre Listener mit 8000 und Sie verbinden sich mit 8001.
  2. Einmal verbunden, sagt der SHOUTcast Server nichts. Senden Sie einfach das Broadcast-Passwort, gefolgt von einem neuen CrLf (oder \r\n ).
  3. Wenn das Passwort falsch ist, wird invalid password oder etwas ähnliches angezeigt. Wenn es korrekt ist, werden Sie etwas wie folgt erhalten:

    OK2

    icy-caps:11

    Beachten Sie, dass hinter jeder Zeile CrLf steht, und nachdem diese zwei Header gesendet wurden, gibt es ein Paar CrLf .

  4. Nun ist es Sache des Quellmandanten, einige Header zu senden: icy-name , icy-genre , icy-pub , icy-br , icy-url , icy-irc , icy-icq , icy-aim , content-type . Sende sie so:

    icy-name:My Awesome Station

    Auf jede Zeile sollte CrLf folgen, und nachdem Sie alle Header gesendet haben, senden Sie ein Paar CrLf .

  5. Sobald dies alles erledigt ist, beginnen Sie mit dem Senden Ihrer Stream-Daten! Keine Notwendigkeit, an einer bestimmten Stelle zu beginnen, senden Sie einfach Daten. Es liegt an den Clients auf der Empfangsseite, mit dem Rahmen zu synchronisieren. Der SHOUTcast-Server ist für den durch ihn fließenden Verkehr völlig "dumm". Sie können sich mit einem Telnet-Client verbinden und eine Menge Text senden, wenn Sie möchten.

Metadaten aktualisieren

Sie fragen sich wahrscheinlich, wie Sie Informationen für den nächsten Track senden und was nicht. Das Lustige ist, das ist völlig out-of-band von der Verbindung, wo Sie Audiodaten senden.

Alles, was Sie tun müssen, ist eine Web-Anfrage an die Port-Basis (8000 in unserem Beispiel):

%Vor%

Falls das schwer zu lesen ist, sind dies die Parameter:

  • übergeben
  • Modus
  • Lied
  • URL

Sie werden feststellen, dass diese und andere Parameter alle im SHOUTcast Admin-Panel gefunden werden können.

    
Brad 11.02.2012, 15:59
quelle
0

Ich habe native C-Dateien von Shoutcast Wrapper zusammen mit einer Beispiel-Android-App entwickelt, die Sie vom Geräte-Mikrofon streamen können - & gt; android-icecast-sendung .

Es ist erfasst, codiert PCM-Audio vom Mikrofon. und sendet Ice Server.

    
Fatih S. 09.03.2018 10:34
quelle