您的位置:首页 > 其它

flash播放MP3的问题

2011-09-22 17:50 309 查看
最近碰到了一个奇异的问题:apache的服务器,一个Flash调Mp3进行播放,用IE和chromium打开后启动时正常,一旦暂停后,再次播放就无效。但对于Firefox则完全正常。

反复检查代码,无果。将文件上传到另外一台机器后IE也正常。反复修改KeepAlive,disk-cache之类的设置,完全没有效果。

真是叫人郁闷。

检查了apache的配置,感觉问题应该跟mod_deflate模块有关,相应的代码如下:

<IfModule deflate_module>

SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI
.(?:gif|jpe?g|png)$ no-gzip dont-vary

</IfModule>

关闭后IE恢复正常,考虑到一般情况下,mp3和swf压缩不了多少,但是却经常需要断点续传,重新修改相应配置:

<IfModule deflate_module>

SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI
.(?:gif|jpe?g|mp3|swf|png)$ no-gzip dont-vary

</IfModule>

完全正常!

分析下来大致原理如下(个人分析,无依据):

首先假设的是我没有踩中任何一个bug。这个问题似乎跟原先出现过deflate的文件不能断点续传为同一个问题。

mp3采用流格式传输,没有完全下载结束就被暂停下载,由于系统启用了mod_deflat的压缩传输模块,本地保存的实际上是一个gzip过的mp3文件。

由于目前主流浏览器都支持断点续传,而对于断点续传的处理却各有不同,IE和chromium可能会先对于gzip之前的文件进行校验,发觉校验失败,认为这是一个错误的文件,不再进行续传;FF则是先不进行校验,或者校验失败后重新下载续传。

尚为猜测,希望各位朋友给个确凿的解释。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: