小编den*_*nis的帖子

使用web audio api和wavesurfer.js剪切和粘贴音频

我目前正在尝试制作一个网页编辑器,允许用户轻松调整其音频文件的基本设置,作为插件我集成了wavesurfer.js,因为它有一个非常整洁和跨浏览器的波形解决方案.

索引功能的必备列表后,我决定剪切和粘贴对于使这个产品工作至关重要,但是花了几个小时试图弄清楚如何在现有库中实现它,甚至开始重建wavesurfer.js功能从头开始理解我尚未成功的逻辑.

我的问题是,如果有人能给我一些关于如何开始构建剪切和粘贴功能的指示,或者甚至是一个非常感谢的例子.

提前致谢!

wavesurfer插件:http://wavesurfer-js.org

采摘网页编辑器 http://plucked.de

编辑解决方案(实例是waveurfer对象.):

function cut(instance){
  var selection = instance.getSelection();
  if(selection){
    var original_buffer = instance.backend.buffer;
    var new_buffer      = instance.backend.ac.createBuffer(original_buffer.numberOfChannels, original_buffer.length, original_buffer.sampleRate);

    var first_list_index        = (selection.startPosition * original_buffer.sampleRate);
    var second_list_index       = (selection.endPosition * original_buffer.sampleRate);
    var second_list_mem_alloc   = (original_buffer.length - (selection.endPosition * original_buffer.sampleRate));

    var new_list        = new Float32Array( parseInt( first_list_index ));
    var second_list     = new Float32Array( parseInt( second_list_mem_alloc ));
    var combined        = new Float32Array( original_buffer.length );

    original_buffer.copyFromChannel(new_list, 0);
    original_buffer.copyFromChannel(second_list, 0, second_list_index)

    combined.set(new_list)
    combined.set(second_list, first_list_index)

    new_buffer.copyToChannel(combined, 0); …
Run Code Online (Sandbox Code Playgroud)

javascript audio html5 ruby-on-rails web-audio-api

6
推荐指数
2
解决办法
4965
查看次数

标签 统计

audio ×1

html5 ×1

javascript ×1

ruby-on-rails ×1

web-audio-api ×1