问题标签 [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 投票
1 回答
3506 浏览

c# - WaveMixerStream32 和 IWaveProvider

NAudio 有什么方法可以将 WaveMixerStream32 与 WaveProviders 链接,而不是 WaveStreams?我正在使用 BufferedWaveProvider 流式传输多个网络流。似乎没有一种简单的方法可以将其转换为 WaveStream。

干杯!

卢克

0 投票
3 回答
21486 浏览

c# - 使用 NAudio 更改 wav 文件(到 16KHz 和 8bit)

我想使用 NAudio 将 WAV 文件更改为 8KHz 和 8bit。

但是当我播放输出文件时,声音只有嘶嘶声。我的代码是正确的还是有什么问题?

如果我将 WaveFormat 设置为 WaveFormat(44100, 16, 1),它可以正常工作。

谢谢。

0 投票
1 回答
1851 浏览

c# - NoDriver 调用 acmFormatSuggest

请看我下面的代码,

我用过MP3播放器。当任何机器未安装 ACM 编解码器时,都会出现以下错误。

“NoDriver 调用 acmFormatSuggest”。

请建议如何在我的机器上安装 ACM 编解码器。

0 投票
1 回答
509 浏览

windows - 从麦克风无损读取

我正在使用 NAudio(但它适用于直接阅读)来捕获麦克风波数据。似乎如果我的应用程序很忙,它会丢弃/跳过麦克风中的一些输入数据。

我已将阅读线程设置为最高优先级,但我同时在其他几个线程中进行大量计算。

有没有办法无损读取数据?
(或者它是无损的,而我在其他地方的错误?)

0 投票
2 回答
1032 浏览

c# - 简单的 NAudio 播放

如何让 NAudio 播放嵌入式资源“WaterforMGC.delfino.wav?” 不过,我不想要一个完整的 .cs 文件,只是我可以从中学习的一些简单的东西。

0 投票
1 回答
662 浏览

.net - 用于多线程的 NAudio:缓冲区已在播放错误时排队

我的应用程序正在运行音频播放,我们正在多线程上播放音频。有时错误是给出错误:

缓冲区已在 Play 中排队(断言失败:Abort=Quit,Retry=Debug,Ignore=Continue)

0 投票
1 回答
5151 浏览

c# - 播放流式音频数据 (C#)

我试图使用 C# 开发一个可以播放流式音频数据的 Windows 应用程序。基本上,我将有一个负责播放不同音频文件的客户端应用程序。目前,从客户端应用程序中,我从文件头中提取硬件配置参数,然后通过网络传输文件数据(PCM 流)。

那么是否可以使用从客户端发送的硬件配置参数来配置实际的硬件(在服务器端),然后将文件数据流提供给它,以便它可以播放音频数据。

在搜索的过程中,我了解了NAudio. NAudio 是否能够做这些事情,或者对我来说更好的选择是使用 Directsound APIS 切换到 nativ C/C++ 代码。

更新: 通过配置硬件,我的意思是设置与音频播放相关的参数。这些参数将包括sample rate(例如:44100 Hz)、number of channels(例如:立体声)、storage format(例如:16 位小端)等。

我的客户端应用程序在 Linux 上,我已经植入了一个 ALSA 驱动程序,它拦截 PCM 流和 hw_params 配置,然后将它们发送到服务器。

更新结束

谢谢。

0 投票
1 回答
883 浏览

audio - 带有 NAudio 的音频中继器

我正在实现一个程序,它从输入设备读取音频流并使用 NAudio 将其发送到输出设备。为此,我使用WaveIn及其DataAvailable事件从输入流中获取数据。要写数据,我即将使用WaveOut,这也意味着我需要使用IWaveProvider. 使用队列来满足我的需要似乎非常简单。除了一件事:当队列为空并Read()调用方法时应该发生什么?我在文档中没有找到任何关于此的内容。我认为我有的选项:

  1. 该方法应该阻塞,直到一些数据可用。
  2. 该方法立即返回 0,表示当前没有可用数据。
  3. 用零填充缓冲区。

我正在考虑使用选项 1 或 2,但后来我发现BufferedWaveProvider(并且WaveInProviderBufferedWaveProvider内部使用)使用选项 3。据此,我推断选项 3 是首选选项。

问题是,我是否推断出正确的,我应该使用选项 3 吗?如果我使用选项 1 或 2 会发生什么?那还能用吗?

0 投票
1 回答
3058 浏览

c# - 使用 NAudio 在运行时更改波形格式

我已经使用以下方法初始化了设备:

我正在使用以下方法向其中添加 pcm 流:

waveProvider.AddSamples(samples, 0, size);

只要流数据具有相同的配置,上述工作就可以正常工作。

我有另一个接收采样率和通道数的函数,我想重新配置 waveprovider 以使用新提供的配置。这是我正在使用的代码:

这是行不通的,我相信这也不是正确的做法。知道如何重新配置​​设备以使用新的 sample_rate 和 num_channels

谢谢。

0 投票
1 回答
2670 浏览

c# - nadio waveProvider.AddSamples 导致崩溃

在上面的代码中,buff是从一个用C. 对于日志记录,我打印了添加到样本的字节数。根据这个日志,在播放大约 2.4 Mb 样本后,我收到了下面提到的错误。

未处理的异常:System.InvalidOperationException:NAudio.Wave.BufferedWaveProvider.AddSamples(字节 [] 缓冲区,Int32 偏移量,Int32 计数)处的缓冲区已满

在添加新样本之前,我是否需要释放一些缓冲区或确保刷新旧条目?我查看了源代码,但没有找到与缓冲区大小相关的任何内容。我是不是错过了什么。

谢谢你的帮助。