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

audio - 我听到使用 Graph Edit 创建的 DirectShow 图形单击音频,但我 PC 上的播放器软件可以流畅地播放音频

我有一个使用 DSPACK 组件库使用 Delphi 6 构建的 DirectShow 应用程序。这两天我一直在尝试解决音频播放的问题。当我运行我创建的过滤器图表时,我会在播放中听到重复的点击声。真正令人困惑的是,我与过滤器图同时创建的音频文件具有干净连续的音频,而不是间隙。所以我知道音频缓冲区正在正确传递,但我正在做的事情是“干扰”“实时”播放。或者我是这么想的。我花了两天时间来诊断问题,寻找信号量过长(锁定)或时间戳问题,我在另一个 Stack Overflow 帖子中记录了这些问题:

尽管输出文件“平滑”,但在渲染我的 DirectShow 过滤器期间出现口吃

几分钟前,我决定尝试使用 Graph Edit 实用程序进行测试。我创建了一个简单的图表,其中仅包含我正在使用的捕获设备(VOIP 电话麦克风)和我正在使用的渲染器设备(HD ATI 后置音频输出到耳机)。共有两个过滤器。 令我惊讶的是,我听到了同样的咔哒声。 所以这是一个根本不涉及我的代码的案例,我听到了点击。

然后我将 Graph Edit 创建的过滤器图中的音频渲染器更改为VOIP phone earpiece。点击消失了。

现在我知道有一种方法可以在 ATI 后置音频设备上获得流畅的音频,因为它是首选的音频输出设备,从我在 PC 上播放的视频到我在其上播放的波形文件,一切听起来都完美无缺。那么其他软件程序是否在做一些与仅仅连接过滤器不同的事情呢?我想知道HD ATI 后置音频的默认模式是否没有双缓冲,也许其他软件程序知道如何启用该功能?或者他们是否在做其他事情,例如使用另一个 DirectShow 或 DirectSound 过滤器或技术,以使音频在HD ATI 后置音频渲染器上流畅播放?

0 投票
1 回答
3114 浏览

c# - 使用 Directsound 播放 Wav

我需要播放多个从不同时间开始的波形文件(不是一起)。我试图使用 Directsound 播放文件,但出现了问题。我有以下代码:

问题是当我在第一行输入(var dev = new Device();),并编译程序时发生错误(ConsoleApplication1 遇到问题需要关闭)。即使我删除了除第一行之外的所有代码,也会发生这种情况。控制台报错如下:“混合模式程序集是针对运行时版本 v1.1.4322 构建的,如果没有额外的配置信息,无法在 4.0 运行时加载”。

如果此问题无法解决,是否有其他方法可以播放多个声音。声音必须具有最小的延迟,并且必须立即播放而没有任何延迟。

0 投票
1 回答
601 浏览

c# - 如何使我的应用程序被视为 Windows 中的通信程序

我正在制作一个使用语音库的程序,我想在女士说话时让所有其他声音静音或减少。

我一直在寻找一种手动使其他应用程序静音的方法,但我在 Windows 中的通信选项卡(声音选项内)中看到了一个选项,提到该窗口可以为我管理这个。就像在这张照片中:

在此处输入图像描述

所以基本上,我的应用程序需要什么才能被视为通信应用程序(例如 Skype)?

0 投票
1 回答
1020 浏览

c++ - sal.h 不包括它在路径中的时间

我正在努力将 DirectSound 实现到一个程序中,但它需要 dsound.h,而这需要 sal.h,无论出于何种原因,我都无法让 g++ 识别出我sal.h 并且它在路径中的事实文件,我什至可以直接输入命令sal.h,命令提示符将打开 sal.h。但是当我编译时

g++-3 World.cpp -c

我明白了

dsound.h:13:17: sal.h: No such file or directory.

其次是由于缺少sal.h而导致dsound.h出现数千个错误。我只是在使用记事本、g++ 和命令提示符,我需要在 VC++ 中才能让 sal.h 工作吗?没有它有什么方法可以使用 DirectSound 吗?

这是我正在编译的代码的开头,以防万一:

这是 WorldEntity.h 的开头,包含 dsound.h 的包含文件:

0 投票
1 回答
1718 浏览

audio - 如何使用 Visual C++ 在 MFC 中播放声音?

我想使用我的麦克风输入和扬声器输出在我的 PC 上实现基带信号处理算法。在 Windows 7 64 位上使用打开/读/写音频设备需要哪个库?我可以使用 MFC,还是需要使用 DirectSound 包装类来操作音频设备?我也愿意使用 GNU/Linux 环境。

0 投票
3 回答
1722 浏览

c# - DirectShow GetDuration 给出错误的持续时间值

我正在尝试使用 DirectShow 获取媒体文件的持续时间。我使用以下代码(C#):

以秒为单位获取媒体文件持续时间。但是,当我尝试打开 3-4 分钟的 MP3 文件时,track.Duration 变为 11-12 分钟。我尝试了多个文件,效果总是一样的。可能是什么原因?

0 投票
1 回答
222 浏览

c# - 如何将 DirectSound 的 MaxSampleRate 配置在 20000 以上

我正在编写小程序来输出生成的声音。

我的声卡能够达到 48000 甚至 192000 的采样率。它是 Realtek ALC883 7.1+2 声道高清音频,规格可在此处找到

但是,DirectSound 的 MaxSampleRate 的最大值是 20000?

我知道我可以从我的声卡中获得比最大值更好的效果,但是如何配置 DirectSound 以利用这一点?当我尝试以下操作时:

在消息框中显示的数字是“20000”。

0 投票
0 回答
188 浏览

c++ - 获取声卡的真实/物理/硬件采样率

我需要获得声卡的真实/物理/硬件(不知道这个词)采样率。我正在生成高频方声波并使用 DirectSound 播放它。

我需要将 DirectSound 采样率与声卡匹配。我不希望 windows 混音器重新采样我的声音,因为输出波将完全无法使用。

简而言之:如何获得声卡原生采样率?

0 投票
2 回答
1767 浏览

c# - 从多个源接收音频数据并将它们合并到一个波形文件中

我正在使用 C# 和 DirectSound 录制音频并通过本地网络将其发送到另一台接收数据并将其保存到波形文件中的计算机。

我使用类似的代码进行录制,并使用类似的代码保存波形文件(使用 NAudio)。

将所有接收到的字节保存到波形文件中。但是,我想从多台计算机接收音频并将其合并为一个波形文件。

我尝试录制两个单独的波形文件,每个客户端一个,然后将它们合并在一起。但是,我的幼稚方法没有提供任何同步方式。生成的波形文件在长度上至少相差 5 秒,并且无法适当地合并。

所以,这是我的问题:

1)如何获取从网络接收的音频字节并将它们保存到波形文件中,以便生成的文件在正确的时间播放音频?

例如,我录制了 100 秒的音频并通过网络发送。但是,实际上只记录了 95 秒的音频字节。丢失的 5 秒是由于我发送数据包时发生的小延迟累积造成的。

那么,如何在 100 秒内将这 95 秒的音频同步到正确的时间播放?

2)如何混合从多个客户端接收到的音频字节以获得同步播放所有客户端音频的单个波形文件?

如果我需要澄清我的问题,请告诉我。我感谢任何帮助!

0 投票
1 回答
3108 浏览

c++ - DirectSound:简单的 pcm 播放

我正在使用 DirectSound 并尝试使用以下代码播放简单的随机 wav 数据:

但在输出时我只听到沉默。输出也没有错误,我的 data1 确实是一些随机的东西。我究竟做错了什么?