Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 读取节点js中的pcm文件以获取原始数据_Javascript_Node.js_Parsing_Pcm_Waveform - Fatal编程技术网

Javascript 读取节点js中的pcm文件以获取原始数据

Javascript 读取节点js中的pcm文件以获取原始数据,javascript,node.js,parsing,pcm,waveform,Javascript,Node.js,Parsing,Pcm,Waveform,下面的代码解析一个示例pcm文件 var dataFile = 'C:\\Users\\<user>\\Desktop\\small.pcm'; fs.readFile(dataFile, function(err, res) { if(err) { console.log('Error:', e.stack); }else{ var ampData = []; var arrByte = Uint8Array.from(Buffe

下面的代码解析一个示例pcm文件

var dataFile = 'C:\\Users\\<user>\\Desktop\\small.pcm';
fs.readFile(dataFile, function(err, res) {
    if(err) {

        console.log('Error:', e.stack);

    }else{
    var ampData = [];
    var arrByte = Uint8Array.from(Buffer.from(res)); //Convert to byte array
    for(var i=0;i<arrByte.length;i=i+2){
        var val;
        var byteA = arrByte[i];
        var byteB = arrByte[i+1];
        var sign = byteA & (1 << 7);
        var x = (((byteA & 0xFF) << 8) | (byteB & 0xFF)); // convert to 16 bit signed int
        if (sign) { // if negative
                val = 0xFFFF0000 | x;  // fill in most significant bits with 1's
        }else{
          val = x;
        }
        ampData.push(val)
     }
    }
});
var数据文件='C:\\Users\\\\Desktop\\small.pcm';
readFile(数据文件,函数(err,res){
如果(错误){
log('Error:',e.stack);
}否则{
var-ampData=[];
var arrByte=Uint8Array.from(Buffer.from(res));//转换为字节数组

对于(var i=0;i

来说,我需要对其进行小端字节排序

 for(var i=0;i<arrByte.length;i=i+2){
        var byteA = arrByte[i];
        var byteB = arrByte[i+1];
        var sign = byteB & (1 << 7);
        var val = (((byteA & 0xFF) | (byteB & 0xFF) << 8)); // convert to 16 bit signed int
        if (sign) { // if negative
                val = 0xFFFF0000 | val;  // fill in most significant bits with 1's
        }
        ampData.push(val)
    }

for(var i=0;i为什么不使用readInt16LE?