flash播放MP3的问题« 开源小站

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

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

真是叫人郁闷。

检查了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>

xx正常!

分析下来大致原理如下(个人分析,无依据):
首先假设的是我没有踩中任何一个bug。这个问题似乎跟原先出现过deflate的文件不能断点续传为同一个问题。

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

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

尚为猜测,希望各位朋友给个确凿的解释。

郑重声明:资讯 【flash播放MP3的问题« 开源小站】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——