Node.js+lame — TypeError: строка не является функцией

Я хочу прочитать аудиофайл с помощью Node.js, декодировать его в 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


person johnny    schedule 22.03.2013    source источник


Ответы (1)


Вот обходной путь, который сработал для меня (запуск node.js 0.10.3 на компьютере с Ubuntu). Может быть, кто-то знает, почему require('stream').Transform не работает должным образом - аргумент записи в функции _transform кажется строкой, содержащей 'utf8'. Я полный новичок, когда дело доходит до javascript и node.js...

В начале decoder.js и encoder.js есть оператор if

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

Удалите if и просто установите переменную Transform следующим образом:

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

person sundhage    schedule 08.04.2013