0

我正在尝试将两个 .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();

            }

谢谢

4

1 回答 1

1

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

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

您将无法轻松连接两个具有不同采样率或通道数的 WAV 文件,但除此之外也不是很困难(一旦您确定了标头格式)。

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

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

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

也许最简单的方法是使用第三方工具(例如Nadio)来执行此操作,如下所述:

如何以编程方式将 2 个或多个 .WAV 文件连接在一起?

于 2013-07-29T14:50:59.793 回答