非常に大きなオーディオm4aファイルを使用するオーディオリーダーハイブリッドアプリケーションに問題があります。つまり、オンラインオーディオリソースを使用する場合、再生を開始するには時間がかかりすぎるからです。m4aウェブオーディオを再生するときのCrossWalkベースのハイブリッドアプリケーションの奇妙な動作
ボディ::
<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でアプリを構築すると、playbが始まります〜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
横断歩道、WebViewのプラグイン2.2.0と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)
で提供しています。
なぜ違いがあり、どうすればこの問題を回避できますか?
P.S.ここにはすべてのAPKと関連するデータが入ったthe folderがあります。
は([Githubの]リカプロトタイプ用のリポジトリを使用すると、問題を再現しやすくなります。 – Phonolog
@Alex私はあなたがすでにクロスウォークプロジェクトで問題を提起していると思います。それはP2問題として審査されました。だから、我々はクロスウォークチームからの修正を待たなければならないかもしれない。 – Gandhi
あなたは一人ではありません.... [類似の質問xda](https://forum.xda-developers.com/android/help/stagefright-makes-multiple-http-t3390372)さらに[github](https://github.com/WhisperSystems/Signal-Android/issues/4636)でも、 – ymz