1

我目前正在研究 AS3 中的动态 MP3 播放器。该播放器还将支持连续(长度)的无线电流。

因为我的播放器将包含一个“搜索”栏,所以我允许用户搜索 Sound 对象的数据。现在我知道,对于连续流,存储在用户 RAM 上的数据永远不会停止,因为下载永远不会在连续流上停止。这意味着,经过几个小时的流式传输,我的应用程序正在使用分配的 RAM。我已经在我自己的机器上测试了这个应用程序,运行一个非常高的规格,并且应用程序在我的浏览器中崩溃了。当我说应用程序崩溃时,我指的是整个 Flash,这意味着我必须重新启动浏览器才能再次使用 Flash。我知道我的应用程序是原因,因为 Flash 过去从未崩溃过。只有当我的应用程序已经流式传输 2 个多小时时才会这样做。

所以我想做的就是只允许用户缓存长达一个小时的音频。一个小时后,我想清除前半小时的声音对象数据,这意味着只有最近半小时的音频被存储并可供查找。

所以我有我的流:

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

并且sound是存储数据的地方。所以我的问题是:如何清除该对象的前 30 分钟音频?

4

1 回答 1

0

也许这个Sound类并不意味着可靠地播放“无限”的 MP3 文件,这似乎是你的情况。它是用来播放普通 MP3“歌曲”的。两小时的 MP3 声音很容易累积到超过 200 兆字节的数据。

但是有一个很好的解决方案 - 使用NetConnectionNetStream类来流式传输音频。那里有很多教程。您还可以流式传输您的 MP3,只是有点不同 - 将涉及一个中央服务器,它将即时对这些 MP3 进行转码,以真正的“流式传输”方式将其传送给您。其中一种服务器是 Adob​​e Flash Media Server,它是 Adob​​e 的一款价格过高的作品。存在许多免费和开源的替代品,它们可以很好地满足您的目的 - Red5、nginx-rtmp 等等,我已经自己测试过了。

于 2012-10-11T12:44:38.453 回答