当前位置: 首页 > news >正文

C# 将多个wav格式的文件拼接(合并)成一个文件

1、nuget安装NAudio

image

2、代码实现

using NAudio.Wave;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;namespace SoundWin.Common
{public class WavFileMerger{/// <summary>///  // 输入的 WAV 文件路径列表(确保格式一致)//var inputFiles = new List<string>//{//    @"C:\audio\part1.wav",//    @"C:\audio\part2.wav",//    @"C:\audio\part3.wav"//};//string outputFile = @"C:\audio\output.wav";//ConcatenateWavFiles(inputFiles, outputFile);/// </summary>/// <param name="inputFiles"></param>/// <param name="outputFile"></param>/// <exception cref="ArgumentException"></exception>/// <exception cref="FileNotFoundException"></exception>/// <exception cref="InvalidOperationException"></exception>public static bool ConcatenateWavFiles(List<string> inputFiles, string outputFile,ref string error){try{if (inputFiles == null || inputFiles.Count == 0){error = "至少需要一个输入文件";return false;}// 检查所有文件是否存在foreach (var file in inputFiles){if (!File.Exists(file)){error = $"找不到音频文件: {file}";return false;}}WaveFormat format;using (var firstReader = new WaveFileReader(inputFiles[0])){format = firstReader.WaveFormat;}using (var writer = new WaveFileWriter(outputFile, format)){foreach (var inputFile in inputFiles){using (var reader = new WaveFileReader(inputFile)){// 第一个文件:设置输出格式if (format == null){format = reader.WaveFormat;}else{// 检查格式是否一致if (!WaveFormat.Equals(format, reader.WaveFormat)){error = $"文件 {inputFile} 的音频格式与其他文件不一致。" +$"需要与第一个文件 {inputFiles[0]} 的格式相同。";return false;}}// 读取并写入音频数据var buffer = new byte[reader.WaveFormat.AverageBytesPerSecond * 1]; // 1秒缓冲区int bytesRead;while ((bytesRead = reader.Read(buffer, 0, buffer.Length)) > 0){writer.Write(buffer, 0, bytesRead);}}}}return true;}catch(Exception ex){error = "异常";LogHelper.Error("合成音频异常:" + ex.ToString());return false;}}/// <summary>/// 倍速/// </summary>/// <param name="inputFiles"></param>/// <param name="outputFile"></param>/// <param name="speedFactor">几倍速度</param>public static void ConcatenateAndSpeedUpWavFiles(List<string> inputFiles, string outputFile,double speedFactor = 2.0){WaveFormat format;using (var firstReader = new WaveFileReader(inputFiles[0])){format = firstReader.WaveFormat;}using (var outputWriter = new WaveFileWriter(outputFile, format)){foreach (var inputFile in inputFiles){using (var reader = new AudioFileReader(inputFile)){// 创建 2 倍速的重采样器(通过提高采样率实现)// 原始采样率 * 2 → 播放时长减半(但音调变高)//var speedFactor = 2.0;var newSampleRate = (int)(reader.WaveFormat.SampleRate * speedFactor);// 使用 MediaFoundationResampler(Windows 平台可用)using (var resampler = new MediaFoundationResampler(reader, new WaveFormat(newSampleRate, reader.WaveFormat.Channels))){resampler.ResamplerQuality = 60; // 质量 0-60,越高越好// 读取并写入加速后的数据byte[] buffer = new byte[reader.WaveFormat.AverageBytesPerSecond * 2]; // 2秒缓冲int bytesRead;while ((bytesRead = resampler.Read(buffer, 0, buffer.Length)) > 0){outputWriter.Write(buffer, 0, bytesRead);}}}}}}}
}
View Code

 

http://www.jsqmd.com/news/38248/

相关文章:

  • 《ESP32-S3使用指南—IDF版 V1.6》第四十七章 lwIP初探
  • 2025年益阳移动滑轨屏趋势预测推荐
  • 国产化印刷厂视频监控项目实施方案 - 指南
  • 基于STM32F103与A3988驱动芯片的两相四线步进电机控制方案
  • 2025IT 监控厂商选型指南:5 款高价值运维监控产品推荐,适配数字化转型需求
  • 2025年北京代理记账服务商权威推荐榜单:执照注册资金变更/搭建财务内控/执照代办服务机构精选
  • C# 通过共享内存的方式给python传递一张图片
  • 使用docker安装配置 elasticsearch + kibana
  • Magento API文件上传漏洞导致远程代码执行分析
  • Unity实现两种图片马赛克效果
  • winform播放声音文件,播完成后自动播放下一个文件
  • 基于OFDM数据符号的多普勒频率估计与移动台速度提取方法
  • 雷池 WAF 免费版实测:小白用 Apache 搭环境,30 分钟护住 API 接口安全
  • opentelemetry全链路初探--python注入
  • 三石量化股票数据提取分析报告 - 2025年11月12日
  • 2025年运动鞋旋转扣定做厂家权威推荐榜单:鞋带导扣/快速系带旋转扣/便携旋转扣源头厂家精选
  • 2025年EGUOO诺贝尔科学家:深度解析科研赋能膳食营养的范式与边界
  • 卷积层属于输入层、输出层还是隐藏层
  • 开源方案RuoYi-Cloud-Plus详解——公网内网穿透到虚拟机环境(持续更新)
  • Elasticsearch 集群为所有分片(主分片和副本分片)进行分配,恢复正常分片调度行为
  • 2025年EGUOO男士三氨能量:深度解析氨基酸配方的男性健康逻辑
  • Pyodide 环境
  • 东方财富股票数据提取分析报告 - 2025年11月12日 - 10:49:33
  • 2025年高品质Z型斗式提升机厂家权威推荐榜单:耐用的Z型斗式提升机/正规的Z型斗式提升机/诚信的Z型斗式提升机源头厂家精选
  • 2025年EGUOO纳豆激酶功效:权威盘点心血管养护的科学边界与实证
  • NGINX Docker 镜像使用指南
  • Machine Learning - SVM
  • 2025年11月港股打新券商推荐:牌照合规性与服务实力综合评测排行榜
  • 智能呼叫中心系统测评推荐:从高并发处理到AI能力,深度剖析5大品牌的实战能力
  • 2025年EGUOO美国原装进口深度解析:本土研发到全球交付的全程品控链