我正在使用 html5 标签动态地提供用户创建的音频。
全面工作,包括 IE10,但不适用于 IE9。绝对有正确的文档类型标签,它在 IE9 标准中运行,带有 html5 文档类型。
当我的代码重新应用 src 时,脚本总是会重新启动 4 次,并在触发错误事件时再次尝试。即使 IE9 支持 m4a(使用 aac 音频)和 mp3,它始终是 this.error.code 4 (MEDIA_ERR_SRC_NOT_SUPPORTED)。
我尝试过的事情
-我们的服务器正在返回音频/x-m4a,将其更改为音频/m4a
- 强制它使用 mp3。
响应标头看起来像
Response HTTP/1.0 200 OK
Date Wed, 22 May 2013 18:09:32 GMT
Access-Control-Allow-Origin *
Content-MD5 xOmafXnKWpXcIV8x8OQVKg==
Content-Disposition inline
Content-Language en-US
Connection close
Content-Type audio/m4a
随机理论
IE 是否有可能破坏不同的音频比特率?用户提交的代码可以是 3 种不同的比特率,以及单声道和立体声。
示例代码
$(this.mAudioPlayer).bind({
error: function(){
if( this.tried != this.retries ){
this.src = this.src;
this.tried++;
var reason = "Error";
switch( this.error.code ){
case 1:
reason = "Aborted";
break;
case 2:
reason = "Decode";
break;
case 3:
reason = "Network";
break;
case 4:
reason = "Not_Supported";
break;
}
HandleWarning("Audio was restarted from error state because of " + reason);
}else{
HandleError("Audio failed to load");
}
},
canplay: function(){
this.loaded = true;
if( this.autoPlay ){
this.play();
}
}
});
Fiddler 包括我编写的所有课程,其中包含大量 html5 音频跨浏览器支持的 hack,但在任何 hack 被调用之前很久就出错了,所以我不认为它们是造成它的原因。