c# - 在 .Net/C# 中播放音频

标签 c# audio buffer playback

我是多年经验丰富的 MFC 程序员,最近几年一直在为 Mac 和 iOS 使用 Objective C 开发商业应用程序 - 我正在努力跟上 .Net 和 C# 的速度(因为我我很快将需要将我的一个商业应用程序从 Mac 转换到 PC)。

我现在已经阅读了几本书并作为练习来更加熟悉 .Net(和 C#)我决定尝试将我的一个非商业应用程序转换为 .Net 作为一个学习练习,一切进展顺利(界面工作正常,数据结构都很好)但我需要能够播放音频。

我的 Mac 应用程序根据一系列数学公式生成音频 - 想象一个波形发生器 - 不完全相同但相似。在 Mac 上,我将音频生成为 16 位签名的原始音频,使用 Core Audio 设置音频输出路由,然后在音频路由需要新的音频缓冲区时获得回调(这样我就可以动态生成音频) .

我需要在 PC 上做同样的事情。不幸的是,我发现 MSDN 文档是一个“只见树木不见森林”的案例,因为有如此大量的文档。我可以找到可以让我加载和播放 mp3/wav 等文件的类,但我需要实时生成音频。任何人都可以指出正确的方向以找到可以让我在播放缓冲区时即时填充缓冲区的东西吗?

谢谢

最佳答案

我用过this sample在多个项目中取得了良好的效果。它基本上是 Windows Waveform Audio API 的 .Net 包装器使用 P/Invoke . 其他选择:

关于c# - 在 .Net/C# 中播放音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6739306/

相关文章:

c# - 在 C# 中非对称验证 JWT

C#检测页面重定向

java - 如何解决 QCMediaPlayer 媒体播放器不存在错误?

javascript - 如何添加 GLSL 片段着色器音频可视化

c++ - 如何将音频数据放入 AVFrame 进行编码

Android bufferedReader.readLine 用于连续监听

c# - 当元素不存在于使用 linq 的列表中时返回一个值

c# - 如果您重新抛出它们并包裹了另一个异常,是否可以捕获所有异常类型?

Mysql线程卡在 'query end',如何防止疯狂刷新

c# - Opencl 内核缓冲区在 12k 浮点元素后泄漏