2017-01-13 5 views
7

非常に大きなオーディオ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']; 
    } 
    } 
} 

There is the full example.

たちを

問題を説明するためには、我々は次のような構造と小さなプロトタイプを作成しました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があります。

+0

は([Githubの]リカプロトタイプ用のリポジトリを使用すると、問題を再現しやすくなります。 – Phonolog

+0

@Alex私はあなたがすでにクロスウォークプロジェクトで問題を提起していると思います。それはP2問題として審査されました。だから、我々はクロスウォークチームからの修正を待たなければならないかもしれない。 – Gandhi

+0

あなたは一人ではありません.... [類似の質問xda](https://forum.xda-developers.com/android/help/stagefright-makes-multiple-http-t3390372)さらに[github](https://github.com/WhisperSystems/Signal-Android/issues/4636)でも、 – ymz

答えて

1

まだ https://crosswalk-project.org/jira/plugins/servlet/mobile#login/ 横断歩道のプロジェクトサイトを提出しない場合は、usualy彼らはimidiate行動を取ると、それを解決し、それを提出することができるプラグインの横断歩道に関連するバグを発見した場合。 解決したら、ここで回答を更新してください。

UPDATE

私はあなたの(おそらくあなた)の問題が見つかりました:何かを作成する同じ質問を持っ https://crosswalk-project.org/jira/plugins/servlet/mobile#issue/XWALK-7484

開発者は、このリンク上の問題を追跡.. ATB