HTML5   发布时间:2022-04-25  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了html5 – 如何在Web Audio Api中释放缓冲区?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
嗨,大家好,我喜欢Web Audio Api.可能性太棒了.据说它还处于早期阶段.最让我担心的是我不知道如何释放我不再需要的缓冲区/声音.声音缓冲,总是新的声音,因为我将混音
来自音乐家/ DJ /主持人通过websockets连接的现场声音

以下代码模拟连续加载新缓冲区的回放.我需要web audio api来添加效果混音,所以每个人都可以通过他的表现听到实时结果

不幸的是,这段代码吞噬了整个ram并崩溃了移动和桌面游猎.我不知道如何在播放后释放那些大缓冲区,我不再需要它们.我真的需要在内存中加载新的大数据.有谁有想法?否则我会遇到前8个无法再加载的文件.

var context = new webkitAudioContext();
var @R_900_10586@l=0;

function onTouchStart(){
    seTinterval(function(){
    @R_900_10586@l+=10;
    source = context.createBuffersource();    
    source.connect(context.desTination); // simulates loading large file
    source.buffer=context.createBuffer(1,10*1024*1024,context.sampleRatE);
    source.noteOn(0);
    source.noteOff(0); // acording to w3c spec resources should be deleted immediately.
    // making source property and call delete or =null will release nether source or buffer i am desperate.
    console.log(@R_900_10586@l,'mb'); //
    },1000);
}

document.addEventListener( "touchstart",onTouchStart );
document.addEventListener( "click",onTouchStart );

解决方法

JavaScript中的内存管理使用垃圾收集,这使得术语“立即”相对.在webkit认为是时候这样做之前,缓冲区不会真正发布.您可以通过在Chrome开发者工具中进行时间线录制来查看此操作(不确定在Safari中是否有任何方法可以这样做).查看这篇文章,了解如何执行此操作: https://developers.google.com/chrome-developer-tools/docs/timeline

此外,由于您将事件监听器附加到文档,因此每次点击设备时都会启动另一轮间隔,因此如果碰巧碰到它两次,您将创建双倍数量的缓冲区,意味着每秒20mb.

如此,你是否在实际播放真实文件时试过这个?您可能不会遇到此问题,因为垃圾收集器将能够在文件播放时保持同步. 10mb大mp3或ogg是几分钟的音频.

希望有所帮助!

大佬总结

以上是大佬教程为你收集整理的html5 – 如何在Web Audio Api中释放缓冲区?全部内容,希望文章能够帮你解决html5 – 如何在Web Audio Api中释放缓冲区?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。