我如何将audio数据从波浪冲浪区域复制到新的audio缓冲区?

Wavesurfer.js是伟大的,但有点混乱。

我已经实现了波浪冲浪,但是我想要构build一种切割用户select的audio区域并将其粘贴到新的audio缓冲区的方法 。 目前,我是在区域js文件的控制台日志logging来尝试获取开始和结束时间,但变得非常困惑。

这是我点击并拖动来创build区域的波形。 我想能够运行一个函数,将这部分复制到一个新的audio缓冲区。 在这里输入图像说明

我已经在JS区域login了这里。 在这里输入图像说明

将其输出到控制台。 在这里输入图像说明

然而。 当我打印region.start或region.end到控制台,它不断0和0.0800 ….你可以在预览中看到日志,但是一旦你展开看到更多的实际区域开始和结束存在。 我不知道这是为什么。

这个链接解释了复制和粘贴整个文件。 使用networkingaudioapi和waveurfer.js剪切和粘贴audio

任何线索? 我假设我需要得到开始和结束的数字,然后使用ffmpeg将其切出,或者如果有一种方法,我可以通过Web Audio API和Wavesurfer自己做,这将是最好的。

谢谢

我对waveurfer一无所知,但是我可以根据你在查看对象或值的时候看到的不同值的混淆来猜测这个问题。

console.dir()console.dir()类似,我们可以使用它来更轻松地探究问题。

在控制台中试试这个:

 var o = { n: 42 }; console.dir(o); // -> now expand the logged object, you should see that n is 42 on = 43; // notice that the previously logged object still states that n is 42 

并在控制台中将其与本次会话进行对比:

 var o = { n: 42 }; console.dir(o); // don't expand the logged object just yet... on = 84; // -> now expand the logged object, you should see that n is 84 on = 43; // notice that the previously logged object still states that n is 84 

由此可以看出,Chrome在第一次被logging的对象的位置捕获字典/对象的值,而不是之前。

我猜测,基于你的报告,区域对象是可变的,并且它内的值在logging语句后继续改变。

当你console.log(region.end)你正在捕获值“结束”立即,而当你console.log(region) …时间经过…展开你看到的价值是捕获在扩大点物体。

也许你需要仔细看看waveurfer的API。 作为一个可怕的黑客,你可以用延迟的方式捕获值(使用超时或类似的东西),但我猜想必须有更好的方法。