用c#合并wav文件。

 也做c#语音合成,参考了你的示例程序,给我很大帮助,谢谢!
Wave合并的关键在于  1: 复制一个头   2: 调整文件大小,数据大小 3: 数据区合并。 你在程序中只合并的文件长度。
因为不同的wave文件 ,数据区的位置是不一样的,一般在“data"后面 ,这是我的代码:
 FileStream fs_1 = new FileStream(tb1.Text, FileMode.Open, FileAccess.Read);
            FileStream fs_2 = new FileStream(tb2.Text, FileMode.Open, FileAccess.Read);
            byte[] bInfo = new byte[56];
            fs_1.Read(bInfo, 0, 56);
            byte[] bInfo2 = new byte[56];
            fs_2.Read(bInfo2, 0, 56);       
          //  byte[] filesize = System.BitConverter.GetBytes((int)wavinfo_1.filesize + (int)wavinfo_2.filesize);
            int file1size = System.BitConverter.ToInt32(bInfo, 4);
            int file2size = System.BitConverter.ToInt32(bInfo2, 4);
            byte[] filesize = System.BitConverter.GetBytes(file1size +file2size);
            byte[] datasize = System.BitConverter.GetBytes(System.BitConverter.ToInt32(bInfo, 52) + System.BitConverter.ToInt32(bInfo2, 52)+48);                
            FileStream tofile = new FileStream("D://123.wav", FileMode.CreateNew);
          byte[] dushu_1 = new byte[file1size];
           byte[] dushu_2 = new byte[file2size];
            BinaryWriter w = new BinaryWriter(tofile);
           

            for (int i = 4, j = 0; i < 8; i++, j++)
            {
                bInfo[i] = filesize[j];
            }

            for (int i = 52, j = 0; i < 56; i++, j++)
            {
                bInfo[i] = datasize[j];
            }
            w.Write(bInfo);
            fs_1.Read(dushu_1, 0, file1size);
            w.Write(dushu_1, 0, file1size);

            fs_2.Read(dushu_2, 0, file2size);
            w.Write(dushu_2, 0, file2size);
            w.Flush();
            w.Close();
            fs_1.Close();
            fs_2.Close();
            tofile.Close();

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值