gpt4 book ai didi

javascript - MediaElementSource 使用的内存是否比 Web Audio API 中的 BufferSource 少?

转载 作者:行者123 更新时间:2023-11-30 14:49:27 26 4
gpt4 key购买 nike

我正在制作一个可以播放音频文件(mp3、wav)的小应用程序,并且能够在这些文件上使用均衡器(例如常规音频播放器),为此我正在使用 Web Audio Api。

我设法通过两种方式来扮演 Angular 色。使用 decodeAudioDataBaseAudioContext

function getData() {
source = audioCtx.createBufferSource();
var request = new XMLHttpRequest();

request.open('GET', 'viper.ogg', true);

request.responseType = 'arraybuffer';


request.onload = function() {
var audioData = request.response;

audioCtx.decodeAudioData(audioData, function(buffer) {
source.buffer = buffer;

source.connect(audioCtx.destination);
source.loop = true;
},

function(e){ console.log("Error with decoding audio data" + e.err); });

}

request.send();
}

// wire up buttons to stop and play audio

play.onclick = function() {
getData();
source.start(0);
play.setAttribute('disabled', 'disabled');
}

并且使用 Audio()createMediaElementSource() 更简单

let audioContainer = new Audio('assets/mp3/pink_noise.wav');
let _sourceNodes = _AudioContext.createMediaElementSource(_audioContainer);
_sourceNodes.connect(_AudioContext.destination);
_audioContainer.play();

我认为第二个使用的内存比 createBufferSource() 少,因为 createBufferSource() 将完整的音频文件存储在内存中。但我不确定这一点,我真的不需要太多使用 Chrome 开发工具等工具的经验来正确阅读它。

createMediaElementSource() 使用的内存是否比 createBufferSource() 少?

编辑:使用 Chrome 的任务管理器似乎在使用 createBufferSource() 时只是加载文件增加了大约 40000k 的内存列,而 createMediaElementSource() 和 Javascript 内存增加了 +/-60k 1000k 与 20k

最佳答案

我想您已经在任务管理器中找到了答案。

您需要了解一些事情。

  • 使用媒体元素,您将失去样本精确控制;这对你来说可能不重要
  • 使用 MediaElementAudioSourceNode 时需要适当的访问权限;如果您的所有 Assets 都在同一台服务器上,这可能不是问题

关于javascript - MediaElementSource 使用的内存是否比 Web Audio API 中的 BufferSource 少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48403472/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com