微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Howler JS:使用seek时的声音伪影咔嗒声、砰砰声

如何解决Howler JS:使用seek时的声音伪影咔嗒声、砰砰声

我正在使用 Howler JS 快速连续播放和延迟环境声音。当我不实现搜索选项(即,在开始以外的某个时间点开始播放声音)时,一切正常。然而,当我搜索时,我听到微妙的咔嗒声,向我表明声音是 1. 开始播放它不在零交叉处和 2. 声音没有从 0 音量正确淡入.即使使用延迟,其中每个 Howler 实例都使用相同的值(持续时间、淡入、淡出、搜索等),它仍然会产生这些不受欢迎的声音伪影。

我已经实现了一个淡入持续时间,我认为应该消除零交叉问题。但即使我将值设置为较大的值(例如 500 或 1000 毫秒),它仍然存在相同的问题。我正在控制台登录以仔细检查每个 Howl 是否具有良好的值。

根据我的测试,听起来点击总是发生在声音播放的开始,而不是结束时。

我也相当确定不是我的电脑或浏览器有问题,因为我使用的是立体声声像功能,当我将它设置为中心或左/右硬时,伪影留在这些位置,而当程序设置为选择随机声相值时,会在立体声场中产生伪音。

这是我代码的 Howl 构造部分:

/////////////////////////////////////////////////////////
// CREATE HOWL SOUND ////////////////////////////////////
/////////////////////////////////////////////////////////
volumeLevel = volumeLevel * optionNames.masterOverrides.volumeLevelReduction; 
let currentSound = getSoundB(arrayOfSounds[0].soundFile); 
if (typeof seekTime !== 'undefined') {
    currentSound.seek(seekTime);
}
currentSound.volume(0); 
currentSound.stereo(stereoPositionValue); 
let soundID = currentSound.play(); 
setTimeout(function () {
    // console.log('%c fadeIn: ' + fadeIn + ',fadeOut: ' + fadeOut + ',densityDuration: ' + arrayOfSounds[0].densityDuration + ',duration: ' + duration,logBlue);
    currentSound.fade(0,volumeLevel,fadeIn,soundID); // FADE IN 
},timeUntilSoundisActuallyTriggered);
let fadeOutSound = function () {
    currentSound.fade(volumeLevel,fadeOut,soundID); // FADE OUT 
    setTimeout(function () { 
        subtractNumberOfSounds(arrayOfSounds,objectName,soundOrigin,randomIdForlogNumberOfSound);
        currentSound.stop();
        if (optionNames[objectName].lazyLoad === true) {
            currentSound.unload();
        }
    },fadeOut); 
};
if (optionNames[objectName].playDuration === true) { 
    var playDurationFadeOut = setTimeout(function () {
        fadeOutSound(); 
    },playDuration);
} else {
    setTimeout(() => { 
        subtractNumberOfSounds(arrayOfSounds,randomIdForlogNumberOfSound);
        console.log('duration In: ' + duration);
    },duration); 
}

谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。