2013-03-22 55 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');

相關問題