问题描述
在文档中写了波形条的高度。 大于 1 的数字会增加波形条的高度。是否有可能将波形条限制为 1 或更低?
由于我自己无法找到解决方案,因此将不胜感激
解决方法
深入理解后,我创建了自己的自定义函数来优化波浪的高度
export const optimizeWavebar = (wave) => {
let refine = { ...wave };
var length = 150;
var start = 0;
var end = 150;
let surfer = refine.backend.getPeaks(length,start,end);
let cloned = [...surfer];
let max = cloned.sort((a,b) => b - a);
let height = max[0] > 0.6 ? 0.8 : 3;
let filteredForm = max[0] > 0.6 ? max[0] : 0.2;
return {
data: surfer.map((index) =>
index >= filteredForm
? filteredForm
: index <= -filteredForm
? -filteredForm
: index
),height: height,};
};
const getRefinedPeak = async (wave,url) => {
return new Promise((res,rej) => {
const unOptimized = _.cloneDeep(wave);
unOptimized.load(url);
unOptimized.on("ready",function () {
let response = optimizeWavebar(unOptimized);
wave.params.barHeight = response.height;
return res(response.data);
});
});
};
useEffect(() => {
if (currentTrack && waveformRef.current) {
setPlay(false);
const options = formWaveSurferOptions(
waveformRef.current,"#BFC9CA",true,4.5
);
wavesurfer.current = WaveSurfer.create(options);
const refinedWavebars = getRefinedPeak(
wavesurfer.current,currentTrack.url
);
refinedWavebars.then((res) => {
wavesurfer.current.backend.setPeaks(res);
wavesurfer.current.drawBuffer();
wavesurfer.current.getArrayBuffer(currentTrack.url,(data) =>
wavesurfer.loadArrayBuffer(data)
);
wavesurfer.current.load(currentTrack.url);
});
}
return () => {
wavesurfer.current?.destroy();
setEnableBtn(true);
};
},[currentTrack.id]);