2017-01-13 4 views
7

Nous avons des problèmes avec une application hybride de lecteur audio, en utilisant des fichiers audio m4a assez volumineux. En bref, il faut beaucoup trop de temps pour commencer la lecture (lors de l'utilisation de ressources audio en ligne).Comportement bizarre de l'application hybride CrossWalk lors de la lecture audio web m4a

Pour illustrer le problème, nous avons créé un prototype plus petit avec la structure suivante:

Corps:

<audio src="..." controls="controls" preload="none"></audio> 
<button class="change-current-time">Play and change currentTime</button> 

Script:

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.

Lorsque nous construire l'application avec Cordova 6.4.0 en utilisant WebView, il commence playb Ack dans ~ 3.5s. L'activité du réseau ressemble à ceci:

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 

Lorsque nous construisons l'application avec Cordova 6.4.0 avec le plugin Crosswalk-WebView 2.2.0, il commence la lecture en 18s au mieux, mais parfois le retard est encore plus important - jusqu'à 45s. Il semble que la raison principale est la différence de l'activité du réseau:

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 

... quand seule la première demande est servi avec le « normal » user-agent, toutes les suivantes sont servis avec stagefright/1.2 (Linux;Android 5.0.1). Pourquoi la différence et comment pouvons-nous éviter cela?

P.S. Voici the folder avec tous les apks et les données connexes.

+0

Créer quelque chose lika un [Github] (https://github.com/) référentiel pour votre prototype rendrait beaucoup plus facile de reproduire votre problème. – Phonolog

+0

@Alex Je suppose que vous avez déjà soulevé un problème dans un projet de crosswalk et qu'il a été classé en tant que problème P2. Nous devons donc attendre le correctif de l'équipe de passage pour piétons. L'ai posté pour le bénéfice des autres – Gandhi

+0

vous n'êtes pas seul .... [question similaire sur xda] (https://forum.xda-developers.com/android/help/stagefright-makes-multiple-http-t3390372) et même sur [github] (https://github.com/WhisperSystems/Signal-Android/issues/4636) – ymz

Répondre

1

Si trouvé un bogue lié à CrossWalk plugin vous pouvez l'envoyer sur si non encore soumis https://crosswalk-project.org/jira/plugins/servlet/mobile#login/ site du projet Crosswalk, ils prennent des mesures usualy imidiate et le résoudre. Si vous l'avez résolu, veuillez mettre à jour la réponse ici.

MISE À JOUR

J'ai trouvé votre (peut-être le vôtre) question: https://crosswalk-project.org/jira/plugins/servlet/mobile#issue/XWALK-7484

Les développeurs ayant la même question suivre la question sur ce lien .. ATB