2017-01-13 10 views
7

У нас возникли проблемы с гибридным приложением для чтения аудио, используя довольно большие аудиофайлы m4a. Короче говоря, для начала воспроизведения требуется слишком много времени (при использовании онлайновых аудиоресурсов).Странное поведение гибридного приложения на основе CrossWalk при воспроизведении веб-аудио 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']; 
    } 
    } 
} 

There is the full example.

Когда мы создайте приложение с помощью Cordova 6.4.0 с помощью WebView, оно запустит playb ack в ~ 3.5s. Сетевая активность выглядит следующим образом:

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 

Когда мы строим приложение с Кордова 6.4.0 с Пешеходной-Webview плагиным 2.2.0, он начинает воспроизведение в 18s в лучшем случае, но иногда задержка еще более существенным - до 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. Вот the folder со всеми apks и сопутствующими данными.

+0

Создание что-то Лика в [Github] (https://github.com/) для вашего прототипа, было бы намного легче воспроизвести вашу проблему. – Phonolog

+0

@Alex Я думаю, вы уже подняли проблему в проекте crosswalk, и это было связано с проблемой 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/ Пешеходного проект сайта, они принимают обычно работает на жидкий imidiate действия и решить ее. Если вы его нашли, пожалуйста, обновите ответ здесь.

UPDATE

Я нашел ваш (возможно, ваш) вопрос: https://crosswalk-project.org/jira/plugins/servlet/mobile#issue/XWALK-7484

Разработчики, имеющие тот же вопрос отслеживать вопрос по этой ссылке .. ATB