コメント: 誰かがモバイル用の SHOUTcast ソース クライアントを作成する時が来ました。私はこれをしばらく必要としていましたが、それを構築する時間がないので、あなたに敬意を表します. いつかAndroid版を作ってください。
最初に行うべきことは、Wireshark をダウンロードすることです。
パケット キャプチャを開始し、SHOUTcast サーバーを起動してから、ソース クライアントを起動し、サーバーに接続します。このプロトコルの恐ろしい単純さに備えてください。
プライマリ オーディオ プロトコル
- ソース クライアントは TCP で SHOUTcast に接続します。ベースポートから 1 つ上のポートを使用します。たとえば、ベース ポートが 8000 の場合、リスナーは 8000 に接続し、あなたは 8001 に接続します。
- 接続すると、SHOUTcast サーバーは何も言いません。ブロードキャスト パスワードを送信し、その後に新しい
CrLf
(または\r\n
) を付けます。
パスワードが間違っている場合は、invalid password
またはそのようなことが表示されます。それが正しければ、次のような結果が得られます。
OK2
icy-caps:11
各行のCrLf
後に があり、これら 2 つのヘッダーが送信された後、. のペアがあることに注意してくださいCrLf
。
ここで、一連のヘッダーを送信するのは送信元クライアント次第です: icy-name
, icy-genre
, icy-pub
, icy-br
, icy-url
, icy-irc
, . 次のように送信します。icy-icq
icy-aim
content-type
icy-name:My Awesome Station
各行のCrLf
後には , が続き、すべてのヘッダーの送信が完了したら、CrLf
.
これがすべて完了したら、ストリーム データの送信を開始します。特定の場所から開始する必要はなく、データを送信するだけです。フレームに同期するかどうかは、受信側のクライアント次第です。SHOUTcast サーバーは、そこを流れるトラフィックに対して完全に「愚か」です。必要に応じて、Telnet クライアントに接続して大量のテキストを送信できます。
メタデータの更新
では、次のトラックの情報をどのように送信し、何を送信しないのか疑問に思われることでしょう。面白いことに、これは音声データを送信する接続から完全に帯域外です。
ポート ベース (この例では 8000) に Web リクエストを送信するだけです。
http://yourserver:8000/admin.cgi?pass=yourpassword&mode=updinfo&song=your%20song&url=some_url_goes_here_but_hardly_any_clients_use_it
読みにくい場合は、次のパラメーターを使用します。
これらの同じパラメーターやその他のパラメーターはすべて、SHOUTcast 管理パネルで見つけることができます。