问题标签 [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.
c# - 使用 NAudio 一次播放多个 wav 文件时的音质问题
我的目标是:允许我的 .NET 程序的用户选择他们自己的 .wav 文件以获得音效。这些效果可以同时播放。NAudio 似乎是我最好的选择。
我决定使用 WaveMixerStream32。一个早期的挑战是我的用户拥有不同格式的 .wav 文件,因此为了能够将它们与 WaveMixerStream32 混合在一起,我需要将它们“标准化”为一种通用格式。我无法找到一个很好的例子来遵循,所以我怀疑我的问题是我做错了这部分的结果。
我的问题是,当播放某些声音时,结尾处会发出非常明显的“咔哒”声。我可以自己重现这个。
此外,我的用户抱怨说,有时声音根本没有播放,或者一直“刺耳”。我无法在开发中重现这一点,但我在我们的生产环境中亲耳听到了这一点。
我自己使用 Windows Media 和 VLC 播放了用户的 wav 文件,所以我知道这些文件没有损坏。我如何将它们与NAudio一起使用一定是个问题。
我的 NAudio 版本是 v1.4.0.0。
这是我使用的代码。要设置混音器:
令人惊讶的是,如果我在这里将“NumberOfBuffers”设置为 2,我发现声音质量很糟糕,每秒会出现几次“滴答声”。
为了初始化一个声音文件,我这样做了:
AudioSample 是我的课。它的构造函数负责 wav 文件格式的“规范化”。它看起来像这样:
基本上,AudioSample 委托给它的 _channelStream 对象。为了播放 AudioSample,我的代码将其“Position”设置为 0。执行此操作的代码被编组到 UI 线程。
这几乎效果很好。我可以同时播放多个声音。不幸的是,如上所述,音质很差。谁能帮我弄清楚为什么?
c# - 使用 NAudio 开放音频格式和音频合成
如何使用 Naudio 和 C# 打开不同的音频格式(.mp3 和 .wav 除外)?
如何在不使用 Naudio 和 C# 的情况下创建音频合成?(我的意思是如何获取音频合成所需的声音频率和其他数据)。
PS我看过这个教程系列
http://opensebj.blogspot.com/2009/02/introduction-to-using-naudio.html
和这个
c# - 同步播放 3 个 MP3 声音文件时,我收到一个奇怪的异常
我想这样做:
问题是我有时会尝试,它会引发错误:
检测到 CallbackOnCollectedDelegate 消息:对类型为“NAudio!NAudio.Wave.WaveInterop+WaveCallback::Invoke”的垃圾收集委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。将委托传递给非托管代码时,托管应用程序必须使它们保持活动状态,直到保证它们永远不会被调用。
更新:我试过这个,但错误仍然发生在 3 次。您能否尝试阅读此代码:
.net - NAudio 网络流媒体
我有一个使用 NAudio 播放一些 mp3 文件的应用程序,我花了几天时间尝试通过网络将这种声音发送到另一台电脑,但我不知道有什么更好的方法。我需要使用哪些类来访问缓冲区以及如何重新构建要在远程播放的字节数组?什么是最好的,发送 mp3Frames,或者发送原始或 pcm 数据会更好?
我真的迷路了,任何帮助将不胜感激。谢谢
naudio - 使用 NAudio 加载 .wav 后退出程序时出错
前几天我刚刚找到了 NAudio,我一直在玩它。我编写了一个简单的 Windows 窗体程序,它有一个加载按钮(加载特定的 .wav 歌曲)和播放、暂停、停止、淡入声音的按钮(我自己使用计时器和逐渐增加的音量添加的功能),以及淡出声音。我还有一个轨迹栏控件来处理音量。我创建了一个包装类来放入所有 NAudio 的东西,以及添加额外的功能,如声音开始或暂停时的淡入/淡出和事件通知。
好的,都说,这工作正常。程序正确加载、播放、暂停、停止和淡入淡出。音量轨迹栏正确反映了正在播放的歌曲的音量。这很有效,但我确实有两个问题。
首先,在我单击“加载”按钮加载声音然后执行所有我想要(或不)的播放后,当我退出程序时,我收到以下弹出错误消息(“断言失败”):“AcmStreamHeader在 AcmStreamHeader.Finalize() 处未调用 dispose。这是“中止、重试、忽略”弹出窗口之一,但几秒钟后它消失并且项目终止。(注意:加载功能创建 DirectSoundOut 并调用 CreateInputStream... 直接取自站点上的 NAudio 示例。它还为定义的事件设置事件处理程序,但这可能无关紧要。)
在类析构函数中,我进行了以下调用:
但我仍然得到错误。这是一个大问题,我将在另一个线程中问另一个问题。知道为什么会发生这种情况以及如何阻止它吗?
我在 Windows 7 32 位上运行 VS 10。
vb.net - 使用 NAudio 流式传输非 PCM 原始音频
我很想用 NAudio 来完成这项工作,所以请告诉我是否有办法解决这个问题。我有来自串行设备的流式原始音频,我试图通过 WaveOut 播放。
尝试1:
此代码有效,但有一个小问题 - 实际的音频流不是原始 PCM,它是原始的 MuLaw。它像贝多芬在奶酪刨丝器上演奏的 5th 一样播放压扩。如果我将 更改WaveFormat
为WaveFormatEncoding.MuLaw
,我会收到错误的格式异常,因为它是原始音频并且没有 RIFF 标头。
所以我转而将其转换为 PCM:
尝试2:
在这里,CreatePcmStream
尝试获取流的长度(即使 CanSeek = false)并失败。
尝试 3
它似乎也缺乏标题。
我希望在这一切中我错过了一些小事。该设备仅在使用时流式传输音频,否则不会接收到数据 - 这种情况由 (1) 处理。
.net - NAudio 和 Midi 文件读取
我在这里发布我的问题,因为建议在 NAudio 页面 (http://naudio.codeplex.com/documentation) 上这样做。
鉴于我已经使用 NAudio 加载了一个 .mid 文件,我想在适当的时间逐步浏览曲目的事件。到达“NoteOn”事件后,我想在控制台上写一些类似“Beep”的东西。这样我可以显示 .mid 文件的简单活动。详细地说,我怎样才能正确地及时遍历文件的事件?
我正在使用 vsC# 2008 并且 NAudio 的 .dll 工作正常。我已经用库加载了一个 midi 文件,可以提取轨道信息和所有内容,但我只是不确定如何在时间方面使用它。我想我需要对提供的“绝对时间”或“增量时间”值做一些事情。感谢您的帮助。
编辑:经过非常有帮助的回应后,我能够弄清楚如何做我想做的事。
如果有人知道这样做的替代方法,请告诉我。由于某种原因,在一段时间内使用睡眠会导致响应变得越来越慢。然而,这似乎工作正常。另外,我确信“convertAbsoluteTimeToMilliseconds”取决于机器。
c# - 在 C# 中播放带有时间偏移的 Midi 文件
我目前正在尝试在歌曲播放时浏览一个 midi 文件,midi 文件在歌曲前几毫秒“播放”。更详细地说,我通过将所述音符从屏幕的右侧滑动到左侧来可视化歌曲的音符。我根据来自 midi 文件的信号在屏幕右侧创建音符的可视化,然后开始将它们翻译到左侧。我希望他们在歌曲中实际播放音符的同时通过屏幕中心。
我可以使用以下代码很好地播放 midi 文件:
偏移有效地使 MIDI 文件播放一连串音符,然后返回到根本不使用偏移时的轨道位置。
我很难过,非常感谢任何帮助。我正在使用 XNA 3.1 和 NAudio。MIDI 与歌曲同步播放就好了。当然,我需要midi的播放速度与歌曲保持一致。
c# - 使用 Nadio 创建 Clapper 软件
我想创建一个通过麦克风拍手后收听的软件..
我的第一个实现是尝试让软件在我听到高音量声音时发出警告。
但我想知道是否有人可以帮助我朝着正确的方向前进?
c# - 如何使用 NAudio C# 更改播放速度
我正在实现一个媒体播放器并使用 NAudio 来播放我的文件。有什么方法可以在播放声音时提高播放速度(2X 或 4X)。代码示例将不胜感激。
在此先感谢干杯。