小编She*_*ess的帖子

移动平台上的Web Audio API内存泄漏

我正在开发一个将大量使用Audio的应用程序,我正处于决定是否在可支持它的设备上使用Web Audio API的研究阶段.我已经组装了一个非常简单的测试床,可以加载一个MP3精灵文件(大小约600kB),有一个播放和暂停按钮以及一个销毁按钮,理论上它应该允许GC回收Web Audio API实现使用的内存.但是,由于内存不足异常加载和销毁~5次iOS崩溃后.

我在XCode Instruments中描述了MobileSafari,事实上MobileSafari不断耗尽内存.此外,600kb MP3在解码时最终使用~80-90MB的内存.

我的问题是 - 当使用Web Audio API解码音频数据时,为什么内存使用量如此之大以及为什么内存永远不会被回收?根据我的理解,解码是浏览器的异步操作,所以可能发生在一个单独的线程上?浏览器单独的线程是否可能永远不会释放解码过程中使用的内存?

我的代码如下,非常感谢任何帮助/解释:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>Web Audio Playground</title>
</head>
<body>
<button id="load">
    Load
</button>
<button id="play">
    Play
</button>
<button id="pause">
    Pause
</button>
<button id="destroy">
    Destroy
</button>
<script type="application/javascript">
    (function () {
        window.AudioContext = window.AudioContext || window.webkitAudioContext;

        var loadButton = document.getElementById('load'),
                playButton = document.getElementById('play'),
                pauseButton = document.getElementById('pause'),
                destroyButton = document.getElementById('destroy'),
                audioContext = new window.AudioContext(),
                soundBuffer = null,
                soundSource = null;

        loadButton.addEventListener('click', function () {
            var …
Run Code Online (Sandbox Code Playgroud)

audio memory-leaks mobile-safari ios web-audio-api

13
推荐指数
2
解决办法
2069
查看次数

移动浏览器无法为<audio>标记加载base64数据uri

我试图通过从服务器作为base64编码的文本文件提供音频来缓存音频.例如:

<audio src="data:audio/mp3;base64,//MkxAA......."></audio>
Run Code Online (Sandbox Code Playgroud)

这种方法适用于Chrome,Firefox和IE10等桌面浏览器.但是它不适用于移动浏览器.在移动设备上调试网页后,浏览器会取消该请求(在Chrome,Safari,Firefox和Stock Android浏览器上测试).

有谁知道为什么会这样?如果我能理解它背后的原因并确保我没有错过任何东西,我会很高兴让这个去!

任何帮助是极大的赞赏!

audio mobile html5 base64 html5-audio

7
推荐指数
1
解决办法
759
查看次数