2

背景: htmlshoutcastにダブルバッファリングアプローチを使用してラジオをストリーミングしています。http://www.smackfu.com/stuff/programming/shoutcast.htmlを使用してストリームからメタデータ情報を取得します

問題 私には3つの問題があります。
1-私はすでにラジオを聞くためにurlconnectionとinputstreamを使用しています。メタデータを取得するために新しい接続を開きたくありません。しかし、同じ入力ストリームから両方を取得しようとすると、ラジオを聞くことができなくなりました。これは不可能だと思います。2つの別々の接続を使用する必要がありますか?パフォーマンスに悪いのではないですか?

2-アプリケーションが起動すると、現在の曲の情報を取得します。問題ない。ただし、曲が変わったときにどのように通知されますか。曲が変わるとサーバーが情報を送るそうです。しかし、私はURLconnectionを開始し、入力ストリームを取得し、メタデータを取得して、接続を閉じています。サーバーからどのように通知すればよいのか理解できませんでしたか?接続を開いたままにする必要がありますか?

3-そして最後の質問。AFAIKプログレッシブストリーミングは、Android2.2より前では使用できません。これはhttpだけに当てはまりますか?プロトコルがrtspの場合、Android 2.2より前にプログレッシブストリーミングを作成できますか?誰かがそれを確実かつ明確にしてください?

どうもありがとう、

4

2 に答える 2

3
  1. メタデータの新しい接続を開くことは想定されていません。メタデータはMP3ストリームに統合されています(これはすべて、投稿したリンクに記載されています)。
  2. 明らかに接続を閉じると、MP3ストリームもメタデータも受信できなくなります。
  3. 参照:MediaPlayerを使用してAndroidのURLからオーディオをストリーミングしますか?
于 2011-09-29T07:24:14.603 に答える
2

icy-metaintヘッダーフィールドの番号を覚えておく必要があります。

(オーディオデコーダーに送信する)ストリームからその数のバイトを受信した後、メタデータ部分を期待し、これを読み取る必要があります(これらのデータをオーディオデコーダーに送信しないでください)。次に、ストリームからエンコードされたオーディオを再度受信し、icy-metaintバイトの後にメタデータを定期的に読み取るプロセスを続行します。

これは、サーバーがメタデータ(アーティスト/曲のタイトルに関する情報)を定期的に送信し、コードが入力ストリームをオーディオとメタデータに分割する必要があることを意味します。

于 2011-09-29T07:28:30.050 に答える