2013-03-22 53 views
1

我想用Node.js读取一个audi文件,将它解码为PCM并将其编码为MP3。我使用节点瘸做加密/解码,但不幸的是我得到了以下错误:Node.js + lame - TypeError:字符串不是函数

var filename = './beautifullie.mp3'; 
var decoder = lame.Decoder(); 
var encoder = lame.Encoder({channels: 2, bitDepth: 16, sampleRate: 44100}); 

fs.createReadStream(filename).pipe(decoder); 

decoder.on('format', function(format) { 
    console.log('Decoding .. '+JSON.stringify(format)); 
    decoder.pipe(encoder); 
}); 

encoder.on("data", function(data) { 
    console.log('Sending..'); 
    //sendData(data); 
}); 

您可以找到该文件:

/Users/Jon/streaming test/node_modules/lame/lib/encoder.js:191 
    write(output); 
^
TypeError: string is not a function 
at cb (/Users/Jon/streaming test/node_modules/lame/lib/encoder.js:191:7) 

我的编码和解码码在这里抛出错误:https://github.com/TooTallNate/node-lame/blob/master/lib/encoder.js

回答

1

这是一个解决方法,为我工作(在Ubuntu机器上运行node.js 0.10.3)。也许有人知道为什么require('stream').Transform将无法​​正常工作 - _transform函数中的写入参数似乎是一个包含'utf8'的字符串。我是一个总的新手,当涉及到JavaScript和Node.js的...

在decoder.js的开头和encoder.js有一个if语句

if (!Transform) Transform = require('readable-stream/transform');

如果删除并且像下面这样设置Transform变量:

Transform = require('readable-stream/transform');

相关问题