【问题标题】:How to save an audio stream as a wav file using NodeJS如何使用 NodeJS 将音频流保存为 wav 文件
【发布时间】:2018-05-15 17:17:36
【问题描述】:

我的目标是录制来自 Icecast 服务器的无线电流。

我正在使用icecast 节点模块来获取无线电流,然后通过将流通过wav 模块传输来写入波形文件。

这是我的代码示例:

const icecast = require('icecast');
const url = 'http://87.118.104.139/radiogibsonaac';
var wav = require('wav');

let ice, fileWriter;

ice = icecast.get(url, res => {
    fileWriter = new wav.FileWriter(__dirname+'/recording.wav', {
        channels: 1,
        sampleRate: 16000,
        bitDepth: 128
    });
    res.pipe(fileWriter);
});


setTimeout(()=>{
    fileWriter.end();
    ice.end();
},5000);

流已按预期成功记录到我的磁盘上,我可以在 VLC 中收听文件,但 wav 文件本身似乎没有正确形成。

当我尝试使用其他工具编辑文件时,每次都会显示错误。 例如,我正在尝试更改 this site 上的音频速度,但它无法识别该文件。

如果我尝试使用 Sox CLI 查看文件信息,它会显示:

sox FAIL 格式:无法打开输入文件 `recording.wav':抱歉,不了解 .wav 大小

有人知道我在将 wav 文件写入磁盘的过程中是否遗漏了一个步骤吗?

【问题讨论】:

    标签: javascript node.js stream wav icecast


    【解决方案1】:

    根据流 URL,看起来流是 AAC 格式,并且您正尝试将该数据直接写入 WAV 文件,因此您最终得到了一个带有 WAV 标头但 AAC 音频数据的文件。

    您需要将流作为 AAC 写入磁盘,然后对文件进行转换,或者在将流写入磁盘之前动态转码。

    【讨论】:

      猜你喜欢
      • 2019-08-28
      • 1970-01-01
      • 2013-11-12
      • 2018-10-16
      • 1970-01-01
      • 1970-01-01
      • 2022-10-01
      • 2019-12-31
      • 1970-01-01
      相关资源
      最近更新 更多