问题标签 [waveout]
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++ - WaveOut 程序崩溃
我正在尝试读取原始 .wav 数据并将数据输出到扬声器,主要用于自我实验和教学。我自己想要数据的第二个原因是我可以解析它以尝试分离音高,或者构建均衡器或某种形式的可视化。到目前为止,我已经从正在工作的文件中读取数据,验证了标题和诸如此类的东西,但是后来我转到 WaveOut,它开始搞砸了。我的代码目前是相当意大利面条代码,当然,但这更像是一个初步测试,看看我是否可以这样做。据我现在所知,我的程序在 waveOutWrite() 处崩溃,老实说,我不知道为什么,而且我找不到任何关于如何让 WaveOut 工作的好例子。这是相关的位:
c# - 记忆样本中的 Naudio 回放会在声音中产生延迟和不美观的间隙
用于 BufferedWaveProvider
播放存储在数据库中的音频样本double[]
播放时的音频会产生声音间隙。Consume()
样本每 100 毫秒在方法内部发送一次。是否存在WaveOut()
播放速度比我们调用Consume()
方法快的问题?我们如何同步这个阅读和回放。
multithreading - waveOutOpen(), waveOutWrite() 给我的线程未记录的消息 1024
声音输出功能给了我意想不到的信息。这是我做错了什么的迹象吗?如果是这样呢?否则是否有一个很好的来源可以解释这些消息可能是什么?
根据 https://wiki.winehq.org/List_Of_Windows_Messages,waveOutOpen() 给了我消息 955 MM_WOM_OPEN 作为记录,然后是未记录的 1024(可能是 DDM_SETFMT、DM_GETDEFID、NIN_SELECT、TBM_GETPOS、WM_PSD_PAGESETUPDLG、WM_USER )。
在主线程中:
在生成的音频线程中:
waveOutWrite() 没有记录以提供任何消息,但也给了我消息 1024。
c# - NAudio WaveOut.GetCapabilities().ProductName 返回设备名称中的无效字符
我们的应用程序使用 NAudio WaveOut 将音频设备连接到用户计算机。在这种特殊情况下,用户使用以波兰语运行的 windows 机器。因此,当我们枚举设备时,WaveOut 在设备名称中返回无效字符。
例如。设备名称应为“Głośniki (Urządzenie zgodne ze standardem High Definition Audio)”
但是 WaveOut 返回这样的东西
Gԯ宮iki (Urzڤzenie zgodne ze
可能是 UTF-8 编码的情况,在这种情况下是缺失的。
需要帮助来解决这个问题。
谢谢,
c# - NAudio 播放样本值远小于记录值
当我使用 waveIn 使用 nAudio 录制时,我得到的缓冲区值很大,我的图表需要缩放到 20 000 左右才能正确显示样本。当我从录制的波形文件中重放此音频并使用 SampleChannel 样本提供程序从 waveOut 捕获样本时,值很小。
文件格式说它给我的值有一个 8 的块对齐,每个样本 32 位(浮点数?)和 2 个通道。这是否意味着应该以某种方式组合 2x4 浮点数以创建每个通道值?
我注意到提供的缓冲区数组中的浮点数是离散的,它们是浮点格式的 3.05175781E-05 的倍数。
我不知道在这里做什么。我是否需要处理 waveout sampleProvider 创建的浮点数?
c# - WaveOut 在另一个环境中播放另一个媒体时出现口吃
我正在使用 NAudio 库实时流式传输 mp3。我已经准备了一个代码来做到这一点,它通常运行良好,除非另一个媒体正在另一个进程中播放(例如 Youtube、本地 mp3 播放器..),. 那个时候,mp3是口吃的。我不知道为什么会这样。如何解决这个问题呢?
在控制台应用程序中流式传输的代码。复制粘贴,你可以试试。
c# - 调用 waveOutOpen 的无效参数
我正在尝试使用 NAudio 的 BufferedWaveProvider 来实现 Mp3 流媒体,这里是 Mark Heath 的博客。
我已经实现了所有的流式传输,但是我收到了一个带有消息“InvalidParameter calling waveOutOpen”的 MmException。
我看到了这个相关的问题:InvalidParameter calling waveOutOpen MmException,所以我查看了使用以下代码片段获得的 WaveFormat:
这是我从调试器中获取的 WaveFormat:
为了测试这一切,我将一个测试 Mp3 文件加载到 FileStream 中。当我使用 Mp3FileReader 读取整个流时,我决定看看 WaveFormat 的样子,有趣的是,我得到了一个完全不同的 WaveFormat:
在这两种情况下,我查看了流的前 16 个字节,它们是相同的。有什么想法我哪里出错了吗?还是不同的 WaveFormats 是一个红鲱鱼?可能是其他问题吗?
谢谢你的时间!
c# - WaveOutOpen 在 C# 中的 waveOutClose 之后挂起
我有一个小型 c# 应用程序,它使用 waveout 接口定期调用 waveoutwrite 将音频数据写入声卡。我不使用 NAudio,因为我需要使用 8192 字节的固定缓冲区大小。
我在一个名为 WaveNative 的包装类中使用 mmdll 库:
现在我通过调用打开设备:
这有效,我可以将音频数据写入设备。但是:当声音播放完毕后,我等待回调方法通知我所有的音频缓冲区(我有 2 个,每个 8192 字节)已完成播放:
现在,每当我尝试再次调用 waveOutOpen() 方法时,我的程序都会挂起。它不返回任何错误,它只是挂起。
我究竟做错了什么?
c++ - 双缓冲 waveOutWrite() 结结巴巴
【谜底已解开;对于那些寻找解释的人,它在这篇文章的底部]
下面是我尝试使用 WindowswaveOut*()
函数编写的 Windows 音调发生器。
尽管实际上按照 MSDN 做了所有事情(例如,应该手动重置的回调事件),但我无法从该死的东西中获得平滑的方波播放——实际上,任何平滑的播放,但为了简单起见,我演示了正方形。缓冲区边界总是以点击来迎接我!看起来 Windows 只是忽略了我使用双缓冲的事实。
生成器本身与缓冲区大小无关,如果我使用更大的缓冲区,无缝播放会持续更长的时间——但是当缓冲区最终结束时,会有一个点击。
帮助。
[更新:]
正如我被告知的那样复制标题,但无济于事:
[实际发生的事情:]
由于 Windows 在我切换缓冲区的那一刻就用完了数据,因此播放一直卡顿。为避免这种情况,您必须在反馈循环开始之前向系统提供两个缓冲区,以便当其中一个缓冲区播放完毕时,下一个缓冲区已经准备好并发送,而您重新填充刚刚退出的缓冲区。
愿迷失的灵魂(就像两天前的我)终于在这里找到清晰的方向=)
说真的,目前这是 Internet 上唯一一个提出实际可行解决方案的页面,它没有使用计时器或任何杂物,而是使用正确的方法。
c# - 重放 BufferedWaveProvider
我使用 NAudio 从麦克风记录数据,然后我需要播放音频而不编写 wav 文件。
播放/暂停/停止效果很好,但是如何将位置设置回 bwp 的开头并从音频开始播放。
我还不能写 wav 文件,因为我需要播放文件,用滑块导航它,然后用新记录的数据擦除缓冲区的末尾,然后保存修改后的文件。