【问题标题】:Restrict the height of the wave wavesurfer.js限制波浪 wavesurfer.js 的高度
【发布时间】:2021-05-09 11:35:16
【问题描述】:

在文档中写有波形条的高度。 大于 1 的数字会增加波形条的高度。是否有可能将波形条限制为 1 或更低?

任何帮助都将不胜感激,因为我自己找不到解决方案

【问题讨论】:

    标签: javascript reactjs wavesurfer.js


    【解决方案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]);
    
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-21
      • 1970-01-01
      • 1970-01-01
      • 2019-07-07
      相关资源
      最近更新 更多