使用 jPlayer 开发了一个互联网广播流媒体,它利用 jQuery 的 html5 音频标签,并为不支持的浏览器提供了闪退。在 iPhone (iOS 5.0.1) 上测试播放器时,我们遇到了一个非常特殊的问题。
当 iPhone 连接到 WiFi 时,它使用 HE-AAC V2 流@64kbps 44.1kHz(苹果产品的首选编解码器)完美流式传输。但是,当 iPhone 连接到 3G 移动网络时,它会“卡顿”或每 1-2 分钟停止流式传输 1-2 秒(不会完全停止流式传输)。令人不安的是,当 iPhone 被迫以相同的比特率使用单独的 MP3 流时,它没有这个问题并且在 3G 上运行良好。
更新 5
我们最近购买了一个 3G/4G Sprint 移动热点设备,并用该设备测试了这个问题。当 iPhone 连接到移动热点时,它显示为连接到 wifi 设备,即使实际连接是通过 3G/4G,问题也不会出现。这可能指向 iPhone 不通过 HTTP Live Streaming 处理 HE-AAC 以及直接连接到移动网络时的问题。
更新 4
将 iPhone 更新到 iOS 5.1,但问题仍然存在。
更新 3
在此处阅读有关连接到移动网络时脚本无法正确呈现的各种问题。手指似乎指向可能正在插入代理以服务网页的移动网络运营商,例如缩小图像大小。它也可能会注入一些 JavaScript 页面。测试页面可以在这里找到 注意:这个页面使用的是 HE-AAC,所以它只能在 iPhone 上运行......
更新
根据 Apple 针对 iOS 设备的 HTTP Live Streaming 文档,“纯音频内容可以是 MPEG-2 传输或 MPEG 基本音频流,可以是带有 ADTS 标头的 AAC 格式,也可以是 MP3 格式。” 我们的音乐服务器使用 OddcastV3 编码器将三个流(MP3、HE-AAC V2 和 Oggvorbis)发送到 icecastV2 服务器。不确定编码器是否为 HE-AAC V2 流插入 ADTS 标头。有没有办法检查这个?