Node.js + lame – TypeError:string不是一个函数

我想用Node.js读取一个audi文件,将其解码为PCM并将其编码为MP3。 我正在使用节点lame做en /解码,但不幸的是我得到以下错误:

/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) 

我的编码和解码代码:

 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); }); 

你可以在这里find引发错误的文件: https : //github.com/TooTallNate/node-lame/blob/master/lib/encoder.js

这里有一个适用于我的解决方法(在Ubuntu机器上运行node.js 0.10.3)。 也许有人知道为什么require('stream').Transform将无法正常工作 – _transform函数中的写入参数似乎是一个包含'utf8'的string。 当谈到javascript和node.js时,我是一个总的新手…

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

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

删除如果只是像这样设置变换variables:

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