当前位置:  开发笔记 > 编程语言 > 正文

播放m4a网络音频时基于CrossWalk的混合应用程序的奇怪行为

如何解决《播放m4a网络音频时基于CrossWalk的混合应用程序的奇怪行为》经验,为你挑选了0个好方法。

我们在使用相当大的音频m4a文件的音频阅读器混合应用程序时遇到问题.简而言之,开始播放(使用在线音频资源时)需要太长时间.

为了说明这个问题,我们创建了一个具有以下结构的较小原型:

身体:



脚本:

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和相关数据的文件夹.

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有