问题标签 [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 回答
4731 浏览

c# - 为什么有些 wav 文件可以在我的 c# directsound 应用程序中播放,而有些则不能?

我有一个 ac# 应用程序,可以通过 directsound 播放简单的 wav 文件。使用我拥有的测试数据,代码运行良好。但是,当我使用真实世界的数据时,它在创建辅助缓冲区时产生了一个非常无用的错误:“ArgumentException:值不在预期范围内。”

测试 wav 具有 512kbps 的比特率、16bit 的音频采样大小和 32kHz 的音频采样率。新的 wav 分别为 1152kbps、24bit 和 48kHz。如何让 Directsound 处理这些较大的值,或者如果不是,我如何在尝试播放文件之前以编程方式检测这些值?

它是我正在使用的托管 DirectX v9.00.1126,我在下面包含了一些示例代码:

附加信息:真实世界的 wav 文件也不会在 windows 媒体播放器中播放,告诉我需要编解码器才能播放文件,而它们在 winamp 中播放正常。

附加信息 2:比较工作测试数据和不良真实数据的字节,我可以看到在 RIFF 块之后,不良数据有一个“bext”块,互联网告诉我是与广播相关的元数据音频扩展,而测试数据直接进入 fmt 块。/is/ 坏数据中有一个 fmt 块,所以我不知道它是否格式错误,或者加载程序是否应该进一步寻找 fmt 数据。我可以看看我是否可以从向我提供数据的人那里获得有关此 rouge bext 块的一些信息 - 如果他们可以删除它,我的代码可能仍然有效。

0 投票
6 回答
8514 浏览

directx - DirectSound 是 Windows 的最佳音频抽象层吗?

DirectSound 是 Windows 的最佳音频抽象层吗?将我的应用程序从构建到特定芯片组的非常糟糕的声音实现切换到抽象层。

应用程序是本机 Winform,.net 3.5。DirectX/DirectSound 是可能的选择,但有点担心开销。还有其他选择吗?或者考虑其他事情是愚蠢的?

0 投票
1 回答
11494 浏览

winapi - 如何实时处理麦克风输入?

我开始为我的想法创建概念验证,此时,我需要一些关于我应该如何开始的指导。

我需要对麦克风输入进行采样,并实时处理该信号(想想自动调谐,但要实时工作),而不是“录制”一段时间。

我正在做的是“一种”“麦克风输入到 MIDI 转换器”,因此它需要快速响应。

我在网上调查了一下,显然要走的路是 DirectSound 或 WaveIn* API 函数。现在,根据我阅读的内容,WaveIn API 将让我填充一定大小的缓冲区,这对于录制和后期处理来说是很好的,但我想知道......我如何进行实时处理?

我是否使用 10ms 缓冲区并自己保持循环 50ms 或 100ms 数组,并且我得到一个每 10ms 触发一次分析的函数?(可以访问最新的100ms的输入,其中只有10ms是新的)

我在这里错过了什么吗?

另外,DirectSound 是如何做到的?与常规 Win32 API 相比,它是否为我提供了任何改进的功能?

0 投票
2 回答
985 浏览

windows - 没有声卡的 DirectSound/FFDShow

我有一个使用 DirectShow/DirectSound 的应用程序,它可以播放视频并提取视频/声音。在没有声卡的服务器上运行它意味着无法抓取音频,有没有办法解决这个问题?我简要地看了一下 Virtual Audio Cable 4,但这似乎并没有在终端会话中模拟声卡..

棘手的部分是它在 x64 上运行,所以我可能有点受限..

干杯

0 投票
4 回答
10023 浏览

winapi - 声音处理:我应该使用 DirectSound 还是直接使用 Win32 API?

我正在申请我将:

  • 从麦克风录制并对输入进行一些实时处理
  • 播放 MP3 文件(一首普通歌曲),但实时处理输出
  • 有时我也需要在这首歌上播放额外的声音,但我想我可以通过简单地添加缓冲区来做到这一点。

简而言之,我需要有用于录制和播放的循环缓冲区,并且我需要每 20 毫秒左右向输出缓冲区“输入”即将播放的新数据。

我一直在研究 DirectSound,它似乎并没有多大帮助。对输出缓冲区的读取和写入似乎与 Win32 非常相似,它似乎有帮助的唯一地方是在主歌曲上播放“附加声音”。

我应该使用 DirectSound,还是应该直接使用原始 Windows API?
DirectSound 会为我做些什么吗?

提前致谢!

0 投票
2 回答
6258 浏览

audio - WAVE PCM 数据的声压显示

数字声音正在使用 DirectSound 设备播放。有必要以分贝为单位显示声音活动 - 就像模拟设备一样。

从 WAVE PCM 数据(44100 Hz,16 位)计算声压的正确方法是什么?

0 投票
3 回答
1864 浏览

c++ - 来自麦克风捕获设备的 DirectSound 缓冲元素的解释

我正在做一些涉及 DirectSound 缓冲区的维护工作。我想知道如何解释缓冲区中的元素,即知道缓冲区中的每个值代表什么。此数据来自麦克风。

正在使用这种波形格式:

我的目标是检测麦克风静音。我目前通过简单地确定缓冲区中的所有值是否未能超过某个阈值体积值来实现这一点,假设每个缓冲区元素的强度直接对应于体积。

这是我目前正在尝试的:

0 投票
1 回答
6259 浏览

c++ - 使用 Speex 和 DirectSound 的声学回声消除 (AEC)

我正在尝试使用 Speex 编解码器库执行回声消除 (AEC)。根据 Speex 文档,我需要执行两个调用:

每次播放音频帧时,以及

对于捕获的每一帧。

因为我使用的是 DirectSound,所以我想我可以在调用 speex_echo_playback 时使用主 DirectSound 缓冲区作为 echo_frame,例如,

文档确实说这些是只写指针,但无论如何我自己都不能使用缓冲区数据吗?

这基本上就是我创建缓冲区的方式:

似乎,使用 DirectSound 缓冲区本身的替代方法是使用 speex_decode() 的输出并进行我自己的软件混合。

让 Speex 和 DirectSound 一起工作的任何指示或建议?谢谢你的帮助。

0 投票
1 回答
307 浏览

mp3 - 如何在 ActionScript 2.0 中从 SWF 中提取 MP3

我需要一个接一个地播放多个声音文件。问题是由于防火墙问题,我无法使用 MP3,必须使用嵌入声音的 SWF。

问题是 SWF 会播放声音,但不会与声音对象一起播放 - 所以我错过了内置功能。我需要从 SWF 中提取 Mp3 才能使用声音对象播放它。

有没有办法使用 ActionScript 2 提取嵌入在 SWF 中的 MP3?

感谢您的帮助。

0 投票
2 回答
2181 浏览

wpf - WPF 中的 DirectX.Sound

我希望从声卡设备(不是系统扬声器)在 WPF 中播放音调。我很失望地发现,除了播放哔声或 wav 文件外,WPF 没有任何本机方式来播放简单的声音频率。即播放(频率,持续时间);

研究使用 DirectX DirectSound 我遇到了 WPF 如何使用 Windows 句柄的问题,因为 Direct X 需要 Windows 窗体句柄。

有没有人有在 WPF 中播放音调的解决方案?