desktopCapturer-如何证明音频通过?

问题描述

我有以下代码尝试从Windows桌面上运行的特定应用程序捕获音频/视频:

<!DOCTYPE html>
<html>
   <head>
      <meta charset = "UTF-8">
      <title>Audio and Video</title>
   </head>
   
   <body>
      <video autoplay></video>
      <script type = "text/javascript">
         var desktopCapturer = require('electron').desktopCapturer;
         console.log("are you here?")
         console.log(desktopCapturer)

         desktopCapturer.getSources({ types: ['window','screen'] }).then(async sources => {
            for (const source of sources) {
               if (source.name === 'MyStreamingApp') {
                  try {
                  const stream = await navigator.mediaDevices.getUserMedia({
                     audio: {
                        mandatory: {
                        chromeMediaSource: 'desktop',chromeMediaSourceId: source.id,}
                     },video: {
                        mandatory: {
                        chromeMediaSource: 'desktop',minWidth: 1280,maxWidth: 1280,minHeight: 720,maxHeight: 720
                        }
                     }
                  })
                  handleStream(stream)
                  } catch (e) {
                  handleError(e)
                  }
                  return
               }
            }
            })

            function handleStream (stream) {
            const video = document.querySelector('video')
            video.srcObject = stream
            video.onloadedmetadata = (e) => video.play()
            }

            function handleError (e) {
            console.log(e)
            }
      </script>
   </body>
</html>

当我运行此程序时,我可以听到音频...但是我当然无法确定音频是来自原始Windows应用程序还是电子应用程序

问题

关于如何测试的任何建议?我如何向自己证明电子应用程序也在发送音频?例如,是否有一种方法可以“说”电子使用特定设备播放音频,而不是仅使用默认扬声器/计算机输出?

我假设这是从正在运行的特定应用程序捕获音频/视频的方法,而不是通常从系统扬声器获取音频/视频的方法。 这个假设正确吗?

编辑1

自发布以来,我仔细阅读了本手册:

https://www.electronjs.org/docs/api/desktop-capturer?q=console.log

我更改了代码,以便不为音频指定源ID,就像这样:

              const stream = await navigator.mediaDevices.getUserMedia({
                 audio: {
                    mandatory: {
                    chromeMediaSource: 'desktop',//when capturing audio,need to remove the sourceid constraint.
                    //chromeMediaSourceId: source.id,}
                 },video: {
                    mandatory: {
                    chromeMediaSource: 'desktop',maxHeight: 720
                    }
                 }
              })

现在...当我启动电子应用程序并启动我的影音应用程序时,电子应用程序会发送切碎的音频。它是如此糟糕,我无法分辨出任何东西... 同时,我仍然可以听到来自源应用程序的音频。所以我想我已经证明它正在捕获一些音频...但是它太糟糕了,无法使用。

基于文档中的注释,它说在流音频时不指定sourceID的事实,我猜测您可以直接使用电子来从特定的Windows应用程序获取音频。您只能请求整个桌面音频。但是,如果有更多经验的人可以确认,那就太好了。

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...