在第一次wav结束之前在NAudio中加入两个wav文件

时间:2015-11-12 06:15:50

标签: c# wav naudio

我使用此函数连接两个wav文件

 public static void Concatenate(string outputFile, ArrayList sourceFiles)
    {
        byte[] buffer = new byte[1024];
        WaveFileWriter waveFileWriter = null;
        try
        {
            foreach (string sourceFile in sourceFiles)
            {
                using (WaveFileReader reader = new WaveFileReader(sourceFile))
                {
                    if (waveFileWriter == null)
                    {
                        // first time in create new Writer
                        waveFileWriter = new WaveFileWriter(outputFile, reader.WaveFormat);
                    }
                    else
                    {
                        if (!reader.WaveFormat.Equals(waveFileWriter.WaveFormat))
                        {
                            //throw new InvalidOperationException("Can't concatenate WAV Files that don't share the same format");
                        }
                    }
                    int read;
                    while ((read = reader.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        waveFileWriter.WriteData(buffer, 0, read);
                    }
                }
            }
        }
        catch (Exception ex)
        { 
        }
        finally
        {
            if (waveFileWriter != null)
            {
                waveFileWriter.Dispose();
            }
        }
    }

但是这个函数在第一个wav结束后加入第二个wav文件。

enter image description here

我真正想要的是在wav结束前2毫秒加入第二个wav文件。

enter image description here

有没有办法使用NAudio或使用其他库?

1 个答案:

答案 0 :(得分:1)

你想做什么,不是简单的波浪连接,是合并。在合并中,波浪将被组合成一个“混合”波。

要合并文件,您可以关注NAudio的{​​{3}}。