簡體   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