我的目标是录制来自Icecast服务器的无线电流。
我正在使用icecast节点模块获取无线电流,然后通过wav模块传输流来编写wave文件。
以下是我的代码示例:
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文件写入磁盘的过程中是否缺少一步?
答案 0 :(得分:1)
根据流URL,它看起来像是AAC格式的流,并且您正在尝试将该数据直接写入WAV文件,因此您最终会得到一个带有WAV标头但AAC音频数据的文件。 / p>
您需要将流写入磁盘作为AAC,然后对该文件进行转换,或者在将数据写入磁盘之前对其进行转码。