问题标签 [naudio]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
9 回答
162367 浏览

.net - 使用 C# 从流中播放音频

C# 中有没有办法直接从System.IO.Stream播放音频(例如 MP3),例如从 WebRequest 返回而不将数据临时保存到磁盘?


NAudio解决方案

在NAudio 1.3的帮助下,可以:

  1. 将 MP3 文件从 URL 加载到 MemoryStream
  2. 完全加载后将 MP3 数据转换为波形数据
  3. 使用NAudio的 WaveOut 类播放波形数据

能够播放半加载的 MP3 文件本来会很好,但由于NAudio库的设计,这似乎是不可能的。

这是将完成工作的功能:

0 投票
4 回答
2949 浏览

c# - .NET 中的精确计时

我刚刚看到这个问题,其中一个答案表明System.Diagnostics.Stopwatch应该只用于诊断性能,而不是用于生产代码。

在这种情况下,在 .NET 中获得精确计时的最佳方法是什么?我目前正处于使用NAudio的 MIDI 输出功能构建一个非常简单的MIDI 音序器的早期阶段。我希望能够以尽可能少的抖动将 MIDI 消息发送到(比如说)1/10 秒。这是可行的,还是像上下文切换这样的事情会毁了我的一天?

我目前在控制台应用程序中有一些代码,它Stopwatch在以 150bpm 生成 1/16 音符流时不断调用和计算抖动。在这种情况下,抖动非常低。但是,我将把它移到另一个线程,所以我不知道这种情况是否会继续存在。

0 投票
1 回答
2378 浏览

c# - NAudio - 在没有 FileOpenDialog 的情况下从互联网播放 mp3?

我在最新版本的 NAudio 的 NAudio Demo 中注意到,如果 Filename 为空,则会打开一个 fileopendialog。因此,如果我在该窗口中粘贴一个 http 链接并单击“确定”,我注意到 FileName 字符串看起来像这样:

"C:\Users\User\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\2FO1NTK2\20s[1].mp3"

这究竟是如何发生的?我不想要 OpenFileDialog 因为我想播放的路径已经在别处说明了。在我的例子中,我使用了一个类似于“ http://domainname.com/file.mp3 ”的字符串

这会创建一个错误,指出不支持 URL。所以我想我在这里缺少一些东西?

编辑:插入 PlayMp3FromUrl 在 WaveOut 中给了我这个错误:

'NAudio.Wave.WaveOut' 不包含采用 '3' 参数的构造函数这是在“使用(WaveOut waveOut = new WaveOut(0, 500, null))”行我试图删除所有参数,留下它()),然后编译。但是声音播放似乎开始了一微秒左右。然后一切都冻结了。我尝试过各种论点,但似乎都没有奏效。我想这与论点有关吗?

0 投票
3 回答
2265 浏览

c# - Naudio - “WaveOut”不包含采用“3”参数的构造函数

这个问题来自我之前的线程 Play mp3 from internet without FileOpenDialog

我真的希望有人对此有所了解。我被告知使用 WebRequest 开始下载流,然后播放流而不是播放本地存储的文件。但是,尝试使用 PlayMp3FromUrl 中的代码会给我这个错误:

“'NAudio.Wave.WaveOut' 不包含采用 '3' 参数的构造函数”

在这一行编译失败:

这是完整的代码:

有人可以帮我找出 WaveOut 需要哪些参数吗?

编辑:你可能想看看 WaveOut.cs,它很长。所以只要看看这里WaveOut.cs

0 投票
2 回答
21061 浏览

c# - 枚举 NAudio 中的录音设备

如何使用 NAudio 获取计算机上所有录音设备的列表?当你想记录时,你必须给它你要使用的设备的索引,但是没有办法知道那是什么设备。我希望能够从 Mic、Stereo Mix 等中进行选择。

0 投票
4 回答
4597 浏览

c# - 使用 winmm.dll 时,什么决定了 windows 中声音设备的顺序?

我正在尝试使用 NAudio 创建多声音输出应用程序。我们安装了 8 个 USB 声卡。NAudio 让我可以使用全部 8 个,但我无法找出确定哪个设备索引是哪个卡的模式。

这些卡将连接到不同的硬件,因此确保您知道您使用的是哪张卡非常重要。

我一直在尝试使用 WMI 来轮询信息,但我似乎无法找到任何决定声音设备顺序的信息。

更新: 我忘记包含有关此问题的一些信息。声卡都是通过 12 端口集线器连接的 USB 声卡。

0 投票
1 回答
3983 浏览

c# - 使用 NAudio 直接从转换后的 MP3 文件中读取样本

我正在尝试使用 NAudio 从(转换后的)MP3 文件中读取 PCM 样本,但由于该Read方法每次都返回零(表示 EOF)而失败。

示例:这段代码尝试读取单个 16 位样本,总是打印“0”:

输出:

但是这个从 WAV 文件读取的版本工作正常(我使用 iTunes 将 MP3 转换为 WAV,因此它们应该包含类似的样本):

输出:

这里发生了什么?两个流具有相同的波形格式,因此我希望能够使用相同的 API 来读取样本。设置Position属性也无济于事。

0 投票
2 回答
1045 浏览

c# - WaveChannel32 给了我一个例外:偏移量和长度超出范围

使用 NAudio 库,我正在尝试使用 WaveMixerStream32 混合一些音频,因此我使用 WaveChannel32 以正确的格式为其提供流。我收到以下消息的异常:

数组的偏移量和长度超出范围或计数大于从索引到源集合末尾的元素数。

我可以做的最小示例也抛出该错误根本不包括 WaveMixerStream32 让我得出结论,问题在于我如何使用 WaveChannel32。代码是这样的:

audio.wav 生成就好了。audio32.wav 为 58 字节,该行引发了异常。

怎么了?

0 投票
2 回答
282 浏览

c# - 我怎样才能让 2 个波形文件阅读器按顺序播放?

我正在尝试播放一组通过网络发送的音频 wav 文件,以作为整体声音流播放。我如何使用 NAudio 让一组这些块一个接一个地播放而没有声音中断或闪烁?我可以播放 1 个文件,但我找不到一种方法来检测一个声音文件何时结束或如何将第二个声音文件附加到第一个文件上。

目前,当我尝试播放 2 个文件时,第一首曲目立即被切断,唯一的最终音轨正常播放

任何帮助将不胜感激。

0 投票
1 回答
304 浏览

silverlight - Silverlight 应用程序中的 Naudio 或 FMOD 库

我必须从麦克风中抓取音频并将其写入“即时”流式传输。目标机器将读取此数据并播放。这一切都将是 Silverlight 应用程序。那么我可以使用 Naudio 库或 FMOD 来实现我的目的吗?

提前谢谢!