1

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

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

您可以在此处找到引发错误的文件:https ://github.com/TooTallNate/node-lame/blob/master/lib/encoder.js

4

1 回答 1

1

这是一个对我有用的解决方法(在 Ubuntu 机器上运行 node.js 0.10.3)。也许有人知道为什么require('stream').Transform不能正常工作——_transform 函数中的 write 参数似乎是一个包含 'utf8' 的字符串。当谈到 javascript 和 node.js 时,我是一个完全的新手......

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

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

删除 if 并像这样设置 Transform 变量:

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

于 2013-04-08T10:40:50.890 回答