如何解决限制波浪的高度 wavesurfer.js
在文档中写了波形条的高度。 大于 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]);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。