1

私は現在、AS3 でダイナミック MP3 プレーヤーに取り組んでいます。プレーヤーは、連続した (長さの) ラジオ ストリームもサポートします。

私のプレーヤーには「シーク」バーが含まれているため、ユーザーがサウンド オブジェクトのデータをシークできるようにします。これで、連続ストリームではダウンロードが停止しないため、ユーザーの RAM に保存されているデータが停止しないことがわかりました。これは、数時間のストリーミングの後、RAM の割り当てがアプリによって使用されていることを意味します。非常に高いスペックを実行している自分のマシンでアプリをテストしましたが、アプリがブラウザーでクラッシュします。アプリがクラッシュするとは、Flash 全体を意味します。つまり、Flash を再び使用するにはブラウザを再起動する必要があります。Flash は過去に一度もクラッシュしたことがないので、私のアプリが原因であることはわかっています。アプリが 2 時間以上ストリーミングされている場合にのみ実行されます。

したがって、私がやりたいことは、ユーザーが最大 1 時間分のオーディオをキャッシュできるようにすることです。1 時間後、サウンド オブジェクト データの前半をクリアしたいと考えています。つまり、直近の 30 分間のオーディオのみが保存され、シークに使用できるようになります。

だから私は私のストリームを持っています:

var soundObj:Sound = new Sound();
soundObj.load(new URLRequest('stream.mp3'));
//ect ect

soundデータが保存される場所です。私の質問: そのオブジェクトから最初の 30 分間のオーディオを削除するにはどうすればよいですか?

4

1 に答える 1

0

おそらく、このSoundクラスは「無制限」の MP3 ファイルを確実に再生するためのものではありません。通常のMP3「曲」を再生するように作られています。2 時間の MP3 サウンドは簡単に蓄積され、200 メガバイトを超えるデータになります。

しかし、良い解決策があります。代わりにNetConnectionNetStreamクラスを使用して、オーディオをストリーミングします。そこには多くのチュートリアルがあります。MP3 をストリーミングすることもできますが、これは少し異なります。中央サーバーが関与し、これらの MP3 をオンザフライでトランスコードし、真の「ストリーミング」方式で配信します。そのようなサーバーの 1 つが Adob​​e Flash Media Server です。これは Adob​​e の高額な製品です。私が自分でテストした Red5、nginx-rtmp など、目的に応じて適切に機能する無料のオープンソースの代替手段が多数存在します。

于 2012-10-11T12:44:38.453 に答える