微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Discord如何挂接到特定进程的音频中?

如何解决Discord如何挂接到特定进程的音频中?

在Google搜索结果中,没有一种众所周知的方法可以从Microsoft Windows上的特定应用程序捕获音频,至少无需求助于变通方法,例如将音频从一个进程发送到单独的虚拟音频回送设备(但是会导致无法听见声音,除非您使用硬件环回播放设备或通过主输出“收听”模拟输入)。

这些解决方法比较笨拙,需要针对每个特定应用程序进行配置,并且软件经常会行为不当,如果在执行过程中更改其输出设备,也将无法成功发出任何声音或停止运行。同时,启动Discord“实时流”会话可让您轻松而无故障地与VoIP组呼叫共享单个应用程序的声音。来自其他应用程序的声音被完全删除。从音频设备来看,似乎没有虚拟环回路由发生,并且客户端的音频播放中断绝对为零。该功能在macOS或Linux版本的软件上不可用,仅在Windows上可用。因此,可以在Win32中捕获来自特定过程的声音,但是为什么其他人不这样做呢?例如,要在诸如OBS或Audacity之类的功能非常有用的软件分支中实现类似的功能,会发生什么?

解决方法

编辑:不确定这是否有用,但我找到了这个页面:https://obsproject.com/forum/threads/audio-sources.465/

特别是,我认为这是有用的信息:

这与挂钩 Direct3D 非常相似。钩住 IAudioRenderClient 接口,拦截 GetBuffer 读取音频样本。

初学者的逆向工程时间!

另外,我不能给出明确的答案,但我可以引导你走向正确的方向。

Discord 在它的根目录中有一个名为 \modules\discord_hook 的目录,在这里我们可以找到一个名为 index.js 的 JavaScript 文件,一个名为 manifest.json 的 json 文件,一个 {{1 }} 文件,命名为 .node(已编译/加密,我无法读取),一个包含 discord_hook.node.dll 的目录,它还生成一个名为 {{ 1}}。

.exe 似乎只是加载 hook.log 并做一些其他对我们不重要的事情。

谷歌搜索 index.js 将我带到这里:https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json

discord_hook.node 文件是每个使用 WebExtension API 的扩展程序必须包含的唯一文件。

manifest.json 文件中,我们发现它引用了 manifest.jsons、.jsons、.exe.dll 及其本身。

前面提到的 .node 文件大部分是人类无法读取的。

discord_hook.node 不会输出任何看似有用的内容,只是关于图形/视频共享的内容。

这让我们需要查看子目录中的 index.jshook.log 文件,我不知道 exe,但我们可以查看这些二进制文件中留下的一些字符串.

我在 dll 中发现了一段引用偏移量 1266B4 到偏移量 126EA6 的音频的字符串(这可能并且几乎肯定会在未来的 discord 版本中改变)

以下是一些似乎值得在此处发布的字符串。

asm

另外,我在谷歌上搜索了“hook process audio”,发现了这个: https://ywjheart.wordpress.com/2017/02/26/audio-captureapihook-based-for-obs-studio/

它没有给出任何代码示例或下载,但它描述了一些关于在 OBS 中执行此操作的内容。他们还在底部链接了他们用来记录它的东西。

祝你好运,我希望所有这些信息都能在某种程度上有所帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。