ラジオ局用のSamsungTVアプリを作成していますが、Icecastストリーム内で「NowPlaying」情報を提供しています。この情報を抽出することは可能ですか(そしてどのようにすればよいですか)?
5 に答える
Shoutcast は「Icy-MetaData」をサポートします。これは、リクエスト ヘッダーの追加フィールドです。設定すると、ストリームに関するメタデータをエンコードされたオーディオ ストリーム自体に定期的な間隔で (" icy-mettaint " バイトごとに 1 回) 埋め込むように、shoutcast サーバーに要求します。「 icy-mettaint 」の値は、shoutcast サーバーの設定によって決定され、初期応答の一部としてクライアントに送信されます。
Icy :metadataと C のサンプル コードの詳細については、Shoutcast Internet Radio Protocolに関するこの記事を参照してください。
もう少し技術的な議論も
http://forums.radiotoolbox.com/viewtopic.php?t=74で利用できます。
はい、可能です。メタデータは、指定された間隔でストリーム データにインターリーブされます。基本的に、8192 バイト (またはIcy-MetaInt
応答ヘッダーで指定されたもの) を読み取ってから、メタデータ ブロックを読み取ります。
そのメタデータ ブロックの最初のバイトは、データの長さを示します。長さ 0 は、更新されたメタデータがないことを意味します。
メタ ブロックを読み取ったら、ストリーム データの読み取りに戻ります。
ここで私の答えについて詳しく説明し ます 。
ラジオ局でこれを行っている場合、Icecast の XSLT 機能を介してこのデータを提供できます。ある時点で行った、ストリーム メタデータを提供するためのランダムな古い XSLT の例。
もう 1 つのオプションは、Icecast 2.4.1 を実行するか、2 つのファイル (xml2json.xsl status-json.xsl) を古いバージョンに追加することです。
Web アプリ / Web サイトからデータにアクセスするために必要な CORS/ACAO ヘッダーの追加をサポートするのは、Icecast 2.4.1 以降のみであることに注意してください。
ラジオ局に直接協力しておらず、依頼できない場合は、この回答を無視してください。他の誰かがそれを便利だと思うかもしれません。
ネイティブ プレーヤーからこのメタを取得するオプションはありません。
おそらくjQuery.streamプラグインを使用してメタを直接取得できますが、icecast サーバーで Access-Control-Allow-Origin をセットアップする必要がありますが、それが機能するかどうかはわかりません。
ここでの最善の解決策は、次のスクリプトを使用することです: http://code.google.com/p/icecast-now-playing-script/
したがって、このスクリプトを Web サーバーにインストールし、ストリームの再生中に SmartTV アプリケーションから AJAX を実行します。