【问题标题】:How to cut a Audio mp3 Blob in JS如何在 JS 中剪切音频 mp3 Blob
【发布时间】:2020-12-14 09:26:13
【问题描述】:

我一直在寻找在 Js 中剪切一个音频 blob,并返回一个剪切 blob。

使用 WebAudioRecorder.js 并使用您电脑的麦克风注册 blob。

我已经找到了这个 repo:mp3-cutter,但它是用 node.js 编写的,并且需要访问文件系统。

我也找到了这个:audio-cutter,但它有一个 UI。

我探索了多种解决方案,但没有找到任何简单的解决方案。

在分析录音时,我发现用麦克风注册的 mp3 有一个 1024 位的标题。使用这个,并基于this,我写了一个小Js函数:

/**
 * params:
 *     params.src: Blob Object
 *     params.start: start time in sec
 *     params.end: end time in sec
 *     params.bitrate: in kbps
 */
function cutter(params) {
        let cuttedBlob;

        if (!params.src || params.start == null || params.end == null)
            throw 'Invalid parameters! ';
        
        if (params.start > params.end)
            throw 'Start is bigger than end! ';
        
        let kbps;
        if (!params.bitrate)
        {
            console.log("Checks have been done");
            console.log(params.src);
            var kbit = params.src.size / 128;
            console.log("bitrate: " + kbit);
            kbps= Math.ceil(Math.round(kbit / 204) / 16) * 16;
            console.log(kbps + "kbps");
        }
        else
            kbps = params.bitrate;
        
        cuttedBlob = params.src.slice(1024 + (params.start * kbps), params.end * kbps, "audio/mpeg3");
        return cuttedBlob;
}

但它似乎不起作用。

我错过了什么?

提前致谢!

【问题讨论】:

标签: javascript audio blob mp3


【解决方案1】:

好的,我发现了。

您需要将您的 blob 转换为 ArrayBuffer,然后转换为 AudioBuffer,剪切它,然后使用像 mp3-lame-encoder-js 这样的编码器重新编码

为了提供帮助,我编写了一个名为 simple-mp3-cutter 的小库

【讨论】:

    猜你喜欢
    • 2021-06-19
    • 2016-06-08
    • 2021-07-23
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 2014-06-28
    相关资源
    最近更新 更多