我有一个很长的 mp3 文件托管在标准 apache 服务器上(到目前为止长 30 分钟,但我希望它也能处理更长的声音)。
我想在指定点开始播放此音频。
当尝试使用 Flash Actionscript 3 时,我的基本测试表明,从开始到我选择的位置的所有音频都会在播放前进行缓冲(Sound.bytesLoaded 是我的朋友)。 如果我开始1秒,大约需要3秒才能开始播放,30秒开始,大约需要25秒。 显然,对于很长的 mp3,比如跳到 3 小时有声读物的中间播放,这是不切实际的。
这是我正在使用的 ActionScript 3.0 代码:
button.addEventListener(MouseEvent.MOUSE_DOWN, function():void {
var s:Sound = new Sound();
var req:URLRequest = new URLRequest("http://example.com/audio.mp3");
s.load(req);
s.play(30 * 60 * 1000); // start 30 seconds in.
}
);
有人知道这在 Flash 中是否可行吗?
如果没有,是否可以在不安装任何服务器端解决方案的情况下从网页执行此操作?
非常感谢。
据我了解,这是一个通过 HTTP 与流媒体进行常规“渐进式下载”的问题。
在标准设置中,常规 HTTP 服务器和 Flash Player 无法跳过 mp3 或视频的过去部分,必须首先下载该点之前的所有数据,正如您所描述的。
启用跳过/搜索的一种方法是使用流媒体服务器,例如 Adobe 的 Flash Media Streaming Server 或开源替代方案 Red5 来提供 mp3 服务。
但是也有一些方法可以在 HTTP 服务器上设置所谓的“伪流”:
http://flowplayer.org/plugins/streaming/pseudostreaming.html