[英]Weird behavior of CrossWalk-based hybrid app when playing m4a web audio
我們在使用相當大的音頻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
...當只有第一個請求與'普通'用戶代理一起提供時,所有后續請求都使用stagefright/1.2 (Linux;Android 5.0.1)
。
為什么差異,我們怎樣才能避免這種情況?
PS這是包含所有apks和相關數據的文件夾 。
如果發現任何與crosswalk插件有關的錯誤,你可以提交它,如果還沒有提交, 請https://crosswalk-project.org/jira/plugins/servlet/mobile#login/ Crosswalk項目網站,通常他們采取imidiate行動並解決它。 如果你解決了,請在這里更新答案。
UPDATE
我找到了你的(也許是你的)問題: https : //crosswalk-project.org/jira/plugins/servlet/mobile#issue/XWALK-7484
有相同問題的開發人員會在此鏈接上跟蹤問題.ATB
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.