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

2023-12-23

我需要能够将 2 个或多个 .wav 文件合并为一个 .wav 文件。我必须使用 C# 以编程方式执行此操作(不能选择第 3 方产品)。我知道 System.Media.SoundPlayer 类,但我不想播放 .wav,而只是创建它。


这是使用构建的基本 WAV 连接函数NAudio http://naudio.codeplex.com。这将确保仅连接数据块(与中的代码示例不同)这篇 CodeProject 文章 http://www.codeproject.com/KB/audio-video/Concatenation_Wave_Files.aspx链接在另一个答案中)。它还可以防止您串联不同格式的 WAV 文件。

public static void Concatenate(string outputFile, IEnumerable<string> 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);
                }
            }
        }
    }
    finally
    {
        if (waveFileWriter != null)
        {
            waveFileWriter.Dispose();
        }
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 如何使用 C# 中的参数将用户重定向到 paypal

    如果我有像下面这样的简单表格 我可以用它来将用户重定向到 PayPal 以完成付款
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • 用于检查类是否具有运算符/成员的 C++ 类型特征[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以编写一个 C 模板来检查函数是否存在 https stackoverflow com questions 257288 is it possible to write a c template
  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 创建链表而不将节点声明为指针

    我已经在谷歌和一些教科书上搜索了很长一段时间 我似乎无法理解为什么在构建链表时 节点需要是指针 例如 如果我有一个节点定义为 typedef struct Node int value struct Node next Node 为什么为了
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况

随机推荐

  • 这段代码真的可以对抗 SQL 注入吗? [复制]

    这个问题在这里已经有答案了 可能的重复 PHP 终极清洁 安全功能 https stackoverflow com questions 4223980 php the ultimate clean secure function 我在这里找
  • 无法在python3中安装boto

    我正在尝试从源代码 pypi 安装 boto 但无法使用 python 3 2 安装它 为什么会失败 c boto gt Python32 python exe setup py install Traceback most recent
  • 重铸 *void 函数参数

    我发布了一个问题here https stackoverflow com questions 8434884 nlopt with armadillo data早些时候 我想我可以回答是否有人可以帮助我解决以下问题 我有一个函数 doubl
  • 如何向 Unity 注册 AutoMapper 配置文件

    我有以下 AutoMapper 配置文件 public class AutoMapperBootstrap Profile protected override void Configure CreateMap
  • EProxy URI 在ecore 模型中无法解析

    在我的 Ecore 模型中 来自当前模型外部的所有类型都不会由其代理解析 返回对象的所有字段getType are null并且运行时只填写存储类型URI 这是我的模型的摘录
  • dplyr / R 重置累加和

    如果 当前 总和超过某个阈值 我想使用 dplyr 生成带有重置的累积总和 在下面 我想对 a 进行求和 library dplyr library tibble tib lt tibble t c 1 2 3 4 5 6 a c 2 3
  • 尝试根据一列中的值屏蔽 2D numpy 数组

    我有以下数组 6 105 2 8 09841881 6 105 4 9 34220351 6 105 6 9 97663435 6 1001 2 9 57108242 6 1001 4 12 22355794 6 1001 6
  • 如何使 lxml 的 iterparse 忽略无效的 XML 字符?

    我的 XML 包含无效字符 LXML 的 XMLParser 对这些无效字符引发异常 但是当我使用以下命令创建 XMLParser 时恢复 真选项 它会忽略坏字符并且工作正常 我的问题是如何为 lxml 的 iterparse 函数设置类似
  • 使用 PDFKit 和 wkhtmotopdf PDF 生成挂起

    我在 OSX Lion 上使用自制软件 0 9 9 附带的 wkhtmtopdf 突然间我无法再生成 PDF 当我在 URL 末尾添加 pdf 时 wkhtmltopdf 进程会启动 但该进程永远不会完成 我怀疑这是 wkhtmltopdf
  • Angular 默认应用程序服务:Chrome 中的隐私错误:NET::ERR_CERT_AUTHORITY_INVALID

    我正在尝试遵循本指南https angular io guide setup local https angular io guide setup local 我安装了 Node js 和 Angular cli 并构建了默认应用程序 ng
  • Winforms 透明度问题(我对此感到疯狂)

    我将向您展示下面的图片 但在此之前 如果您见过雅虎小部件或卡通 主题 Windows 媒体播放器皮肤 我正在构建一个更少的标题栏 更少的背景 应用程序 它看起来像这样 source deviantart net http fc05 devi
  • 复制粘贴的图像存储在 Jupyter Notebook 中的哪里?

    这非常类似于这个问题 https stackoverflow com questions 67598559 local images in jupyter notebook但尚未得到答复 我从 PyCharm 启动了 Jupyter 服务器
  • C# WPF 在AllowTransparency="true" 的窗口上显示WebBrowser 不显示

    我正在显示一个带有 WebBrowser 控件的窗口 我希望窗户是无框的 所以我设置了 WindowStyle None 这有效 但在窗口周围显示彩色边框 Allowstransparency true 删除此设置 但不再显示 Web 浏览
  • 我想保护我的 flash 文件“swf”不被使用 C# 复制 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我想保护我的闪存文件 swf 不被使用 C 复制 你可以帮帮我吗 Regards 使用流托管向播放器提供数据以打开您的文件 您还需要相应地调
  • 如何将 Unity.RegisterType 与 Moq 一起使用?

    我有一个统一的运行代码 现在我想使用 Moq 为 ASP MVC 进行单元测试 在 global asax 的代码中 我有以下内容 IUnityContainer container new UnityContainer container
  • C# 扩展方法 - 多远才算太远?

    Rails 为 Ruby 引入了一些核心扩展 例如3 days from now它会返回 正如您期望的三天后的日期一样 使用 C 中的扩展方法 我们现在可以执行类似的操作 static class Extensions public sta
  • 是否应该在 Rails 中测试本机验证?

    大家都知道自动化测试是一件好事 并不是每个人都确切地知道要测试什么 我的问题是是否应该在应用程序中测试 validate presence of validate uniqueness of 等本机验证 在我的办公室里 我们三个人 一个认为
  • gearman 中的错误情况和重试?

    有人可以指导我 gearman 在出现异常时如何重试吗 抛出或发生错误时 我在 Django 应用程序中使用 python gearman 客户端 我的工作人员是 作为 Django 命令启动 我从中读到博客文章 http www herm
  • AT命令C++代码的输出

    我编写了以下代码 该代码使用 GSM SM5100B 向我的手机发送一条简单的消息 但这不起作用 我想用 C 代码检查每个 printf 行的输出 例如 AT CMFG 1 ok AT CMGS 69 ok ETC 有什么理由要实施这个吗
  • 如何以编程方式将 2 个或更多 .WAV 文件连接在一起?

    我需要能够将 2 个或多个 wav 文件合并为一个 wav 文件 我必须使用 C 以编程方式执行此操作 不能选择第 3 方产品 我知道 System Media SoundPlayer 类 但我不想播放 wav 而只是创建它 这是使用构建的