我们在使用相当大的音频m4a文件的音频阅读器混合应用程序时遇到问题。简而言之,开始播放(使用在线音频资源时)需要很长时间。
为了说明这个问题,我们创建了一个具有以下结构的小型原型:
体:
<audio src="..." controls="controls" preload="none"></audio>
<button class="change-current-time">Play and change currentTime</button>
脚本:
var audioTags = document.querySelectorAll('audio');
[].forEach.call(audioTags, function (item) {
item.addEventListener('play', onPlayStateChange);
item.addEventListener('timeupdate', onPlayStateChange);
item.addEventListener('error', onPlayStateChange);
item.addEventListener('pause', onPauseReset);
});
function onPlayStateChange(e) {
var id = e.target.parentNode.id;
if (count[id]) {
return;
}
if (e.type === 'play') {
count[id + 'start'] = +new Date();
} else if (e.target.parentNode.querySelector('audio').currentTime > currentTimeOffset) {
var span = e.target.parentNode.querySelector('span');
count[id] = 1;
if (span) {
span.innerText = e.type === 'error' ? 'Audio type or codec does not supported' : new Date() - count[id + 'start'];
}
}
}
当我们使用WebView使用Cordova 6.4.0构建应用程序时,它会在~3.5秒内开始播放。网络活动如下所示:
GET /tmp/1916firstchapterscollection_09_various_64kb.m4a?app=webview HTTP/1.1 206 29522945
GET /tmp/1916firstchapterscollection_09_various_64kb.m4a?app=webview HTTP/1.1 206 326657
GET /tmp/1916firstchapterscollection_09_various_64kb.m4a?app=webview HTTP/1.1 206 29163520
当我们使用带有Crosswalk-webview插件2.2.0的Cordova 6.4.0构建应用程序时,它最多可以在18秒内开始播放,但有时延迟甚至更长 - 最多45秒。似乎主要原因是网络活动的差异:
GET /tmp/1916firstchapterscollection_09_various_64kb.m4a?app=crosswalk HTTP/1.1 206 2
GET /tmp/1916firstchapterscollection_09_various_64kb.m4a?app=crosswalk HTTP/1.1 200 29522945
GET /tmp/1916firstchapterscollection_09_various_64kb.m4a?app=crosswalk HTTP/1.1 206 577690
GET /tmp/1916firstchapterscollection_09_various_64kb.m4a?app=crosswalk HTTP/1.1 200 29522945
GET /tmp/1916firstchapterscollection_09_various_64kb.m4a?app=crosswalk HTTP/1.1 206 577690
GET /tmp/1916firstchapterscollection_09_various_64kb.m4a?app=crosswalk HTTP/1.1 200 29522945
GET /tmp/1916firstchapterscollection_09_various_64kb.m4a?app=crosswalk HTTP/1.1 206 577690
GET /tmp/1916firstchapterscollection_09_various_64kb.m4a?app=crosswalk HTTP/1.1 200 29522945
GET /tmp/1916firstchapterscollection_09_various_64kb.m4a?app=crosswalk HTTP/1.1 206 577690
GET /tmp/1916firstchapterscollection_09_various_64kb.m4a?app=crosswalk HTTP/1.1 206 7384995
...当只有第一个请求与“正常”服务一起提供时user-agent,所有后续版本都使用stagefright/1.2 (Linux;Android 5.0.1)
。
为什么区别,我们怎样才能避免这种情况?
P.S。这里有the folder所有的apks和相关数据。
答案 0 :(得分:1)
如果发现任何与crosswalk插件相关的错误,如果尚未提交,您可以提交 https://crosswalk-project.org/jira/plugins/servlet/mobile#login/ Crosswalk项目网站,通常他们采取imidiate行动并解决它。 如果你解决了,请在这里更新答案。
<强>更新强>
我找到了你的(也许是你的)问题: https://crosswalk-project.org/jira/plugins/servlet/mobile#issue/XWALK-7484
有相同问题的开发人员会在此链接上跟踪此问题.ATB