繁体   English   中英

使用Node Stream合并音频文件

[英]Joining audio files with Node Stream

我有2个想要加入的.wav文件,但是由于某种原因,我只能使输出文件包含数组中的第一项:

const writeStream = fs.createWriteStream('server/playback.wav');
const inputFiles = [
  `${path.resolve(__dirname, 'response.wav')}`,
  `${path.resolve(__dirname, 'broadcast.wav')}`
];

  joinAudio() {
    if(!inputFiles.length) {
      console.log("done")
      writeStream.end("Done");
      return
    }

    currentFile = inputFiles.shift()
    let stream = fs.createReadStream(currentFile);
    stream.pipe(writeStream, {end: false});
    stream.on('end', () => {
        console.log(currentFile, "appended")
        self.joinAudio()
    });

  }

我的代码注销了两个文件都已附加并完成,但是我不明白为什么仅包含1个文件。

我要加入的两个文件都在这里:

broadcast.wav- https://ufile.io/mlnkt

response.wav- https://ufile.io/ta937

对于WAV和MP3,文件的开头有标头,因此,通过组合文件,您可以在第一个文件结束后放置标头,因此只有第一个标头中定义的音频可供收听。 您需要先剥离标题,创建一个新的wav文件,然后重新创建标题。

要么

使用ffmpeg合并文件。 到目前为止最简单。 结合child_process.spawn函数使用它,您将能够知道何时完成合并。 袜库也是一个不错的选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM