【问题标题】:decoding a bin file to mp3 using Node Js使用 Node Js 将 bin 文件解码为 mp3
【发布时间】:2013-05-13 13:18:15
【问题描述】:

我正在使用这种方法在 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);}

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

【问题讨论】:

    标签: javascript node.js mp3 decode encode


    【解决方案1】:

    可能是编码参数的问题。有关详细信息,请参阅this answer。解码时尝试使用utf8,看看是否有区别。您在哪些平台上运行代码?

    【讨论】:

    • 我也试过 utf8 还是不行!它会创建解码后的 mp3 文件,但解码后的 MP3 文件的大小比原始文件大,并且由于 MISSING HEADERS 错误而无法运行!我正在 Webinos 平台上运行代码!
    【解决方案2】:

    @Noah 提到了 answer 关于使用 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的信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-01
      • 2013-09-08
      • 2023-01-10
      • 2019-07-18
      • 2016-08-24
      • 1970-01-01
      相关资源
      最近更新 更多