1

我正在使用这种方法在 Node Js 中将 MP3 文件编码为 Base64:

encodebase64 = function(mp3file){
var bitmap = fs.readFileSync(mp3file);
var encodedstring = new Buffer(bitmap).toString('base64');
fs.writeFileSync('encodedfile.bin', encodedstring);}

然后我又想从 Base64 bin 文件构造 MP3 文件,但是创建的文件缺少一些标头,所以显然解码存在问题。解码功能是:

decodebase64 = function(encodedfile){
var bitmap = fs.readFileSync(encodedfile);
var decodedString = new Buffer(bitmap, 'base64');
fs.writeFileSync('decodedfile.mp3', decodedString);}

我想知道是否有人可以帮助谢谢。

4

2 回答 2

0

也许这是编码参数的问题。有关详细信息,请参阅此答案。尝试utf8在解码时使用,看看是否有区别。你在什么平台上运行你的代码?

于 2013-05-13T13:39:44.820 回答
0

@Noah 提到了一个关于使用 Buffers 进行 base64 解码的答案,但是如果您使用答案中的相同代码,并尝试用它创建 MP3 文件,那么它们将无法播放,并且它们的文件大小将比原始文件大,就像你一开始就经历过。

我们应该将缓冲区直接写入我们想要创建的 mp3 文件,而不将其(缓冲区)转换为 ASCII 字符串:

// const buff = Buffer.from(audioContent, 'base64').toString('ascii'); // don't
const buff = Buffer.from(audioContent, 'base64');
fs.writeFileSync('test2.mp3', buff);

有关fs.writeFile / fs.writeFileAsync 的更多信息

于 2019-08-21T22:14:27.140 回答