问题标签 [directsound]

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 投票
2 回答
1085 浏览

audio - DirectSound 通常支持回声消除和降噪吗?

我目前正在使用 waveInOpen 一组 Windows API 函数来录制 VOIP 应用程序的音频。我现在被要求添加回声消除,可能还有降噪和增益控制。我对 DirectSound 一无所知,但是在 Google 上搜索“回声消除”时,我在 MSDN 上发现了对 DirectSound 的引用,例如CaptureAcousticEchoCancellationEffect

如果我切换到 DirectSound,我会“免费”获得其中一些功能吗?是否仅在硬件支持的情况下才支持它们?如果支持,该硬件在普通消费者 PC 中出现的频率如何?

0 投票
1 回答
1200 浏览

c# - C# DirectSound DirectSoundBuffer.SetVolume E_NOINTERFACE

我正在为我的音频库编写 DirectSound 包装器。我遇到了directsound,它工作得很好。这意味着音频播放的效果比 waveout 等效果要好得多。但现在我有一个问题。我正在尝试设置辅助缓冲区的音量。我收到一个例外,即存在 HResult E_NOINTERFACE,因为我的接口无法转换或类似的东西。这怎么可能。我有这个 Setvolume 方法的代码: void SetVolume(int lVolume);

我正在向它传递例如 -56 的值。

这里是确切的错误消息:

“System.__ComObject”类型的 COM 对象不能转换为接口类型“AMEngine.DX.IDirectSoundBuffer”。无法执行此操作,因为对具有 IID '{279AFA85-4981-11CE-A521-0020AF0BE560} 的接口的 COM 组件上的 QueryInterface 调用由于无法执行错误:不支持此类接口(来自 HRESULT 的异常:0x80004002 (E_NOINTERFACE))。

我翻译了这个:

进入

使用以下代码成功创建它:

并且使用以下代码设置音量:(我传递的值是-56)没有声音= 0和maxsound = -10000

0 投票
3 回答
2078 浏览

directx - 将托管 DirectX 与 .Net Framework 4.0 一起使用时程序崩溃

我们在将 DirectSound 与托管 DirectX dll 和 .Net Framework 4.0 一起使用时遇到问题

该程序在 .Net Framework 2.0 上运行良好 - 但我们需要升级到 4.0 才能使用其他一些组件。

当程序调用 Sound 模块时,它会崩溃并出现以下异常。

有人看过这个并知道如何修复它吗?

0 投票
1 回答
75 浏览

directsound - 偶尔新的 LPDIRECTSOUNDBUFFER8 bad_alloc

我偶尔会收到带有以下代码的“C++ 异常:内存位置的 std::bad_alloc”。

此代码在 boot/init 上调用。我可以运行应用程序 10 次,这个异常将被抛出大约 1 次。

随机性让我想到未初始化的变量。但正如您所见,代码非常简单。

有任何想法吗?

谢谢

0 投票
1 回答
1959 浏览

windows - DirectSound 和 WinMM 是基于 WASAPI 的吗?

我在这张幻灯片中看到 vista 中的 winmm 和 directsound 基于 wasapi。

这是否意味着 winmm 和 directsound 实际上是通过调用 WASAPI 中的函数来完成它们的工作的?

经过一些谷歌搜索后,我无法找到此信息,希望这里有人知道。

0 投票
1 回答
2631 浏览

windows-8 - DirectSound 会在 Windows 8 上运行吗?

我指的是 DirectSound,它是 DirectX 9.0c 的一个组件。

我知道 MediaElement 是首选音频类,但它不提供我的应用程序需要的一些 DirectSound 音频功能,特别是指定音频输出设备目标的能力。MediaElement 只会播放到当前默认的音频播放设备——除非它正在升级到 Win8。

0 投票
0 回答
789 浏览

c# - 当声卡仅报告通道掩码为 3 时,通过 SlimDX XAudio2 从后通道播放单声道编码的音频

我有一个较旧的系统 (XP),它允许我使用 DirectSoundBuffer 和 WAVEFORMATEXTENSIBLE 对象以及为后置扬声器设置的 ChannelMask 通过 DirectX 从后置声道(右后和/或左后)播放单声道编码的 PCM 音频。

我正在尝试在旧系统上重做相同的功能以及使用 .Net 和 SlimDx XAudio2 的新系统,但是当我在旧系统上调用 SetOutputMatrix 时,它会忽略我为除前左声道和前右声道之外的任何内容设置的所有内容,即使声卡设置为 5.1 环绕声。在新系统上它工作正常。当我在旧系统上调用 GetDeviceDetails 时,它报告通道掩码为 3(只有前两个扬声器)。我猜这就是为什么即使旧的 C++ DirectSound 有效,它也只允许我在前面播放。我猜声音驱动程序有误,但我找不到任何更新。

有解决方法吗?

这是来自 XAudio2 C++ Basic Sound Demo 的示例,具有相同的行为

在这里,当我获得设备详细信息时,ChannelMask 为 3(前置扬声器),即使声卡配置设置为 5.1。声卡是旧的 SoundMax AC'97 卡。稍后当我执行以下操作时:

在第一个 GetOutputMatrix 之后,fMatrix 的 [0] 和 [1] 索引设置为 1.0。当我调用 SetOutputMatrix 时,我试图将其他通道设置为 1.0,但在 GetOutputMatrix 之后,fMatrix 只有 [1] 设置为 1.0。其他都是0。

注意:当调用 SetOutputMatrix 并且它没有设置它不会失败的所有值时,它返回 OK。

0 投票
0 回答
683 浏览

directshow - 将声音流与视频流同步

我正在做一个视频/音频会议项目,我遇到了下一个问题:

  1. 每次音频缓冲区已满(大约 200 毫秒)的 pcm 原始格式时,我都会使用 DirectSound 录制声音并通过网络(多播)发送。
  2. 使用 DirectX.Capture 项目(代码项目),我通过网络(多播)发送图像。

你有什么想法如何同步这两个流吗?在局域网上我没有同步问题,但我认为在互联网上会因为对等点之间的网速、路由等的差异而出现一些问题。

谢谢!

0 投票
0 回答
438 浏览

c++ - 在 Windows 7 SP1 上卸下和连接 USB 音频 Jabra 耳机可能会导致网络出现问题。如何调查?

我从事专门的 voip 应用程序。它使用 TLS 作为信令通道,使用 (S)RTP 作为呼叫中的媒体通道。

编写了一个使用 DirectSound 播放和捕获的音频输出模块。音频模块可防止音频错误。如果它检测到错误 - 1) 关闭问题音频设备 2) 通知主应用程序有关问题 3) 客户可以选择另一个音频设备。大多数时候效果很好。

但有时“移除 / 等待 10-20 秒 / 插入 USB Jabra 耳机”的顺序会引起兴趣。没有更多传入的 RTP 数据包或它们已损坏。操作系统甚至可以向远程对等方发送有关不可用端口的 ICMP 报告。

我检查了 DevPartner 和 DrMemory 错误检查器 - 但他们的报告中没有提示。

我认为这可能是驱动程序或Windows问题。它有时可以在其他系统上重现。

问题 - 我该如何调查这个问题?也许有一些工具可以显示 Windows 中的音频驱动程序活动?

谢谢 :)

0 投票
1 回答
1818 浏览

c# - 如何在 C# WPF 项目中使用 SharpDX DirectSound 播放 .wav 文件?

我希望能够精确控制在我的程序中播放的 .wav 文件的时间。我还希望能够同时播放多个 .wav 文件。SoundPlayer 不够好,因为我不能同时播放两个声音,即使我连续播放不同的声音,每个声音之间也有大约 1/8 秒的延迟,这对于我正在做的事情来说是不可接受的。我找不到使用 SharpDX 添加设备的方法。