我在标准的apache服务器上托管了一个长的mp3文件(到目前为止已长达30分钟,但我希望它也可以使用更长的声音)。
我想在指定点开始播放此音频。
尝试使用Flash Actionscript 3时,我的基本测试表明,从开始到我选择的位置的所有音频都在播放之前进行了缓冲(Sound.bytesLoaded是我的 friend )。如果我开始播放一秒钟,则开始播放大约需要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
关于actionscript-3 - HTML:如何从URL中间文件开始声音播放而又不将所有声音数据缓冲到该点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4239223/