亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Wavesurfer scriptNode onaudioprocress 只運行一次

Wavesurfer scriptNode onaudioprocress 只運行一次

婷婷同學_ 2023-04-27 16:43:31
我正在使用 wavesurfer 來映射音頻,但是我需要構建一個 VuMeter。我使用了這個實現,除了在 audioprocess 上只運行一次之外,一切都運行良好。function playSound(arraybuffer, vuMeterInput, audioSource, playBtn, pauseBtn, volumeController, waveFormID, startAt = 0, sourceNode = undefined) {            var context = new AudioContext();        var wavesurfer = WaveSurfer.create({        container: waveFormID,        waveColor: '#E0E0E0',        progressColor: '#64C2EB',        barWidth: 3,        height: 20,        audioContext: context    });        wavesurfer.load(audioSource.src);        console.log(wavesurfer.backend);        var source = wavesurfer.backend.ac.createBufferSource();    wavesurfer.backend.source = source;        var gainNode = wavesurfer.backend.ac.createGain();        wavesurfer.backend.ac.decodeAudioData(arraybuffer, function (buffer) {        wavesurfer.backend.source.buffer = buffer;            });    wavesurfer.loadDecodedBuffer();        wavesurfer.backend.analyser.smoothingTimeConstant = 0.3;    wavesurfer.backend.analyser.fftSize = 1024;        wavesurfer.backend.scriptNode.bufferSize = 4096;    wavesurfer.backend.scriptNode.numberOfInputs = 1;    wavesurfer.backend.scriptNode.numberOfOutputs = 1;              function MapVumeter(){        var array = new Uint8Array(wavesurfer.backend.analyser.frequencyBinCount);        valval =  wavesurfer.backend.analyser.getByteFrequencyData(array);        console.log(valval);        console.log(Math.average(array));        vuMeterInput.mono.setAttribute("data-val", Math.average(array));    }    wavesurfer.backend.scriptNode.onaudioprocess = MapVumeter;        wavesurfer.backend.source.onended = function() {                $(playBtn).attr('hidden',false);        $(pauseBtn).attr('hidden',true);        vuMeterInput.mono.setAttribute("data-val", 0);    }        我不確定為什么如果我在 WaveSurfer 之外使用 AudioContext、Analyzer 和 gainNode 但在 wavesurfer 中它只運行一次且 val 的值為 0 Math.average(array);
查看完整描述

1 回答

?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

ScriptProcessorNodewavesurfer.js也在使用它。它可能會覆蓋您分配給的事件處理程序onaudioprocess

您可以嘗試使用 注冊您的事件處理程序addEventListener()。

wavesurfer.backend.scriptNode.addEventListener('audioprocess',?MapVumeter);


查看完整回答
反對 回復 2023-04-27
  • 1 回答
  • 0 關注
  • 222 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號