我们正在尝试从 web1.cowbird.com 提供 MP3 文件。大多数时候一切正常。但是,有时浏览器无法播放某个文件,我不知道原因。以下是示例: http://web1.cowbird.com/items/stories/2012/11/04/05/18/47222/1_5095f977b4f532.99916135-original.mp3
如果您使用 wget 或 curl 来获取文件,则一切正常。但尝试在 Chrome 或 Firefox 中将其拉出会导致一系列奇怪的错误,因为某种原因,浏览器没有下载整个文件,因此无法播放它。出于某种原因,浏览器似乎在第一个请求中获得了 200 结果,然后发出另一个带有 Range:bytes=0- 标头的请求。响应标头看起来正确,但传输的字节数不足。
我一直在寻找,试图了解这是否与字节范围请求有关,并尝试了各种 Apache 设置,但都没有成功。很高兴提供任何其他信息。谢谢!
答案1
好的,看起来问题出在 MP3 文件上,尽管它可以在我的 Linux 桌面上下载和播放。“file”命令显示以下内容:
工作 mp3:ID3 版本为 2.3.0 的音频文件,包含:ID3 版本为 2.3.0 的音频文件,包含:MPEG ADTS,第 III 层,v1,128 kbps,44.1 kHz,立体声
无法正常工作的 mp3:ID3 版本为 2.3.0 的音频文件,包含:
这让我来到了这个网站:https://code.google.com/p/chromium/issues/detail?id=268892
这说明存在 mp3 标头问题,尽管它与 ffmpeg 不报告相同错误的情况并不完全相同。但是,在文件上运行 lame 可以修复该问题,现在它可以正常工作了。我使用了以下命令:lame -b 192 -h
现在 http 请求可以正常工作。
编辑: 不幸的是,这并没有完全解决问题,因为某些文件无法正常使用,比如这个: http://web1.cowbird.com/items/stories/2012/03/22/10/56/15271/9b5ce75faa96ae2347a7d621ee2a1a2402e1257c9a488f6bd31df0c6d502533d-original.mp3