我使用此方法将Node文件中的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);}
我想知道是否有人可以提供帮助 感谢。
答案 0 :(得分:0)
也许这是编码参数的问题。有关详细信息,请参阅this answer。在解码时尝试使用utf8
以查看是否会产生影响。您运行代码的平台是什么?
答案 1 :(得分:0)
@Noah提到了answer关于使用Buffer进行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);
的更多信息