服务器上的音频文件以破碎的方式嵌入

时间:2011-03-14 15:56:18

标签: jquery audio mime-types jplayer

我正在使用jPlayer在我的页面中嵌入两个音频文件,基本上代码是cut'n'pasted from this page。一个是wav,另一个是mp3。一切工作都很好地在本地暂存(mac),但是当我将它上传到服务器时,音频文件以奇怪的方式失败。

Chrome启动wav文件30秒 - 即使位置清理器从开头开始 - 也提前结束,所以我怀疑javascript获得了正确的声音文件长度。 MP3从未开始播放。它假装加载,但后来却没有。

Safari以某种方式工作正常。

Firefox也很好用。也许是因为它落后于球员的闪光选项?

IE8播放mp3,但不播放wav,并且无法显示前者的进度条。

我起初认为这是我上传文件的问题。最初我使用过Transmit,这应该是关于ascii vs binary的明智之举。我试过scp这些文件,但他们仍然表现得很糟糕。

我想也许mime类型没有正确设置,所以我在我的assets文件夹中的.htaccess文件中添加了两行,但是没有改变。这是htaccess文件的样子,也许我忘记了一些我还需要包含的东西?

# prevent CGI and PHP executing in assets; php_flag doesn't actually do anything
# since lower-level settings trump any attempt to turn it off in htaccess.
# I'll leave it here for posterity.
deny from all
Options -ExecCGI
php_flag engine 0 

# Break other files
<Files ~ "\.(gif|GIF|jpe?g|JPE?G|png|PNG|docx?|DOCX?|pdf|PDF|swf|SWF|flv|FLV|ppt|PPT|pps|PPS|mp3|MP3|wav|WAV)$">
order deny,allow
allow from all
</Files>

AddType audio/x-wav wav
AddType audio/mpeg mp3 

想法?

编辑:我尝试将mime类型更改为用于wav和mp3的application / octet-stream,这似乎对播放器应用程序没有任何作用;如果我直接链接到音频文件,它会下载它们。

1 个答案:

答案 0 :(得分:0)

好的,所以有很多问题。首先,您正在流式传输WAV文件。虽然我知道并非所有HTML5播放器都能处理MP3,但您应该考虑使用MP3。

第二个问题是你的播放器有错误。进度条假定音频在停止时仍在播放。只有在音频再次开始播放时,它才会自行纠正。帮自己一个忙,并使用简单的基于Flash的MP3播放器。我知道这是亵渎神灵,但在这一点上,你真的会有更多的用户可以使用它,并且MP3可以保证工作。

第三个问题是您的ISP缺乏带宽。我现在正坐在一个非常大的管道上,用1:51下载你的4MB WAV文件。我还在第二个连接上测试了它。 WAV是未压缩的,并且会占用大量带宽。

第四,您的网络服务器不太喜欢范围,并且您的音频播放器无论如何都没有提供正确的范围请求。它正在请求文件的最后一个字节,并且您的Web服务器根本没有返回任何错误,只是关闭连接。也许这是预期的行为,我不确定,但我对此表示怀疑。

我非常有信心,如果您使用众多基于Flash的音频播放器之一,并使用MP3,那么您的麻烦就会消失。