javascript – 从webAudio / mozAudio获取原始PCM数据

前端之家收集整理的这篇文章主要介绍了javascript – 从webAudio / mozAudio获取原始PCM数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图保存来自webAudio API的输出以供将来使用,到目前为止,我认为获取PCM数据并将其保存为一个文件将会达到我的期望,我想知道如果webAudio或mozAudio已经支持保存输出流,如果不是如何我从输出流中获取pcm数据

解决方法

尝试以某种程序化的方式捕获 web audio时,这里的要求不是很好.这里的推测是,您希望通过当前正在浏览的页面上的JavaScript中执行的代码执行此操作,但这还不完全清楚.

Incognito指出,you can do this in Chrome by using a callback hanging off decodeAudioData().但是,如果您只是想要捕获单个Web流的输出并将其解码为PCM,以在您选择的声音工具中使用,则可能会对您的用途过于复杂.

您可能会考虑的另一个策略是,当媒体网址被隐藏或使用当前工具进行难以解码的情况下,您可能会考虑这一策略,即capture from your underlying sound card.这样可以免费解码,如果(且仅当)您的声卡无法有效地采集流.

我们知道,you’re already encoding analog signals digitally anyway via your desire for PCM encoding.显然,只有在您有合法权利使用被采样的文件时,才能做到这一点.

不管你选择的路线,最好的运气给你.无论是程序化的流解剖还是抽样,您现在应该有足够的信息来进行.

编辑:根据OP的其他信息,这似乎是所需的解决方案(从herehere合并,使用NodeJS’ implementation of fs):

var fs = require('fs');

function saveAudio(data,saveLocation) {
    var context = new (window.AudioContext || window.webkitAudioContext)();
    var source = context.createBufferSource();

    if(context.decodeAudioData) {
        context.decodeAudioData(data,function(buffer) {
            fs.writeFile(saveLocation,buffer,function (err) {
                if (err) throw err;
                console.log('It\'s saved!');
            });
        },function(e) {
            console.log(e);
        });
    } else {
        var buffer = context.createBuffer(data,false /*mixToMono*/);
        fs.writeFile(saveLocation,function (err) {
            if (err) throw err;
            console.log('It\'s saved!');
        });
    }
}

(警告:未经测试的代码,如果这不行,欢迎编辑.)

这有效地从the Web Audio API卷出了decodeAudioData,从提供的数据解码PCM,然后尝试将其保存到目标saveLocation.很简单,真的

原文链接:https://www.f2er.com/js/152398.html

猜你在找的JavaScript相关文章