我使用此函数连接两个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文件。
我真正想要的是在wav结束前2毫秒加入第二个wav文件。
有没有办法使用NAudio
或使用其他库?
答案 0 :(得分:1)
你想做什么,不是简单的波浪连接,是合并。在合并中,波浪将被组合成一个“混合”波。
要合并文件,您可以关注NAudio
的{{3}}。