编辑:不确定这是否有用,但我找到了这个页面:https://obsproject.com/forum/threads/audio-sources.465/
尤其是,我觉得这是有用的信息:
这与挂钩 Direct3D 非常相似。你挂钩 IAudioRenderClient 接口,并拦截 GetBuffer 以读取音频样本。
初学者逆向工程时间!
另外,我不能给出明确的答案,但我可以引导你走向正确的方向。
Discord 在其根目录中有一个名为\modules\discord_hook 的目录,在这里我们可以找到一个名为index.js 的JavaScript 文件,一个名为manifest.json 的json 文件,一个名为.node 的文件,名为discord_hook.node (已编译/加密,我无法读取),带有.dlls 和.exes 的目录,它还会生成一个日志文件,名为hook.log。
index.js 似乎只是加载discord_hook.node 并做一些其他对我们不重要的事情。
谷歌搜索 manifest.json 将我带到这里:https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json
manifest.json 文件是每个使用 WebExtension API 的扩展程序必须包含的唯一文件。
在.json 文件中,我们发现它引用了.exes、.dlls、discord_hook.node、index.js 及其自身。
前面提到的 .node 文件在很大程度上是人类无法读取的。
hook.log 不会输出任何看似有用的信息,只输出有关图形/视频共享的信息。
这让我们在此处查看子目录中的exe 和dll 文件,我不知道asm,但我们可以查看这些二进制文件中留下的一些字符串。
我在DiscordHook.dll 中发现了一段字符串引用了偏移 1266B4 到偏移 126EA6 的音频(这可能而且几乎肯定会在未来版本的不和谐中发生变化)
这里有一些似乎值得在此处发布的字符串。
Audio buffer stopped, WASAPI capture stopping
Failed to get format of WASAPI audio buffer, not capturing, error code [%d]
Failed to get WASAPI audio client from render client, not capturing
Starting capture of WASAPI buffer with sample rate %d, depth %d, %d channels
Starting capture of Windows Sonic stream with downmix sample rate %d, depth %d, %d channels
ISpatialAudioObjectRenderStream::Stop
ISpatialAudioObjectRenderStream::BeginUpdatingAudioObjects
ISpatialAudioObjectRenderStream::EndUpdatingAudioObjects
ISpatialAudioObject::GetBuffer
HookWasapi failed to load audioses.dll
WaveFormatFromRenderClient failed with error code [%d]
LoadWASAPIOffsets failed with error code [%d]
WASAPI module sizes don't match (expected: %lu, actual: %lu)
WASAPI offsets invalid (stop: %lu, getBuffer: %lu, releaseBuffer: %lu, clientOffset: %lu, endpointOffset: %lu)
WASAPI offsets out of bounds (size: %lu, stop: %lu, getBuffer: %lu, releaseBuffer: %lu)
IAudioClient::Stop
IAudioRenderClient::GetBuffer
IAudioRenderClient::ReleaseBuffer
HookWasapi: MH_ApplyQueued failed 0x%x
另外,我用谷歌搜索了“hook process audio”并找到了这个:
https://ywjheart.wordpress.com/2017/02/26/audio-captureapihook-based-for-obs-studio/
它没有提供任何代码示例或下载,但它描述了一些关于做这件事的东西,但在 OBS 中。他们还在底部链接了他们用来记录的东西。
祝你好运,我希望所有这些信息都能在某种程度上有所帮助!