簡體   English   中英

播放m4a網絡音頻時基於CrossWalk的混合應用程序的奇怪行為

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM