HTML:如何在不缓冲所有声音数据的情况下从 URL 中间文件开始声音播放

Posted

技术标签:

【中文标题】HTML:如何在不缓冲所有声音数据的情况下从 URL 中间文件开始声音播放【英文标题】:HTML: How to start Sound playback from URL mid-file without buffering all sound data to that point 【发布时间】:2010-11-21 17:38:06 【问题描述】:

我在标准 apache 服务器上托管了一个长 mp3 文件(到目前为止已经 30 分钟,但我希望它也能处理更长的声音)。

我想在指定点开始播放此音频。

在尝试使用 Flash Actionscript 3 时,我的基本测试表明,从开始到我选择的位置的所有音频在播放之前都已缓冲(Sound.bytesLoaded 是我的朋友)。如果我开始一秒,开始播放大约需要 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 中是否可行?

如果没有,是否甚至可以在不安装任何服务器端解决方案的情况下从网页执行此操作?

非常感谢。

【问题讨论】:

【参考方案1】:

据我了解,这是通过 HTTP 与流式传输进行常规“渐进式下载”的问题。

在标准设置中,常规 HTTP 服务器和 Flash Player 无法跳过 mp3 或视频的部分内容,必须先下载到该点的所有数据,如您所述。

启用跳过/搜索的一种方法是使用像 Adob​​e 的 Flash Media Streaming Server 或开源替代品 Red5 这样的流媒体服务器来提供 mp3。

但也有一些方法可以在 HTTP 服务器上设置所谓的“伪流”:

http://flowplayer.org/plugins/streaming/pseudostreaming.html

【讨论】:

谢谢 - 这真的很有帮助。伪流看起来是最有吸引力的想法,我将尝试使用纯音频 FLV 文件和链接上的纯 php 解决方案。

以上是关于HTML:如何在不缓冲所有声音数据的情况下从 URL 中间文件开始声音播放的主要内容,如果未能解决你的问题,请参考以下文章

如何在不提交 HTML 表单的情况下从数据库中获取数据? [复制]

如何在不创建快照的情况下从 cassandra 表中删除所有记录

如何在不知道匹配返回的 json 数据中的所有值的情况下从 .Net 核心中的 Web api 调用创建模型?

在不知道所有属性的情况下从 HTML 标记内部获取文本

如何在不刷新页面的情况下从数据库中的textarea添加数据[重复]

如何在不使用自动模型表单的情况下从 Django 的文本框中获取数据?