无法合并wav文件

时间:2013-07-29 14:43:02

标签: c# filesystems

我试图将两个.wav文件合并到另一个文件中。但我只能在创建的文件中看到第一个文件的数据。

但新创建的文件占用的空间等于源文件大小的总和。

foreach (string sourceFile in fileNamesList)
            {
              FileStream file=  File.Open(sourceFile, FileMode.Open);
              FileStream outFile = File.Open(output, FileMode.Append,FileAccess.Write);
                byte[] buffer = new byte[file.Length];
                int read;
                if ((read=file.Read(buffer, 0, (int)file.Length))>0)
                {

                    outFile.Write(buffer, 0, read);

                }

                file.Close();
                file.Dispose();
                outFile.Close();
                outFile.Dispose();

            }

谢谢

1 个答案:

答案 0 :(得分:1)

你不能只连接两个WAV文件,因为它们有一个标题,用于定义格式,通道数,采样率,长度等。

您需要为每个单独的WAV文件读取和解析头文件,然后使用正确的数据将新头写入新文件,然后附加每个WAV文件中的数据内容。

你不能轻易地连接两个具有不同采样率或通道数的WAV文件,但是它们并不太难(一旦你计算出标题格式)。

有关标题格式的详细信息,请参阅此处:

https://ccrma.stanford.edu/courses/422/projects/WaveFormat/

http://en.wikipedia.org/wiki/WAV

也许最简单的方法是使用Naudio之类的第三方工具来执行此操作,如下所述:

How to join 2 or more .WAV files together programatically?