electron视频音频处理简单说明

属于一个总结,一般我们都是使用navigator.mediaDevices.getUserMedia+desktopCapturer 集成,但是getUserMedia 对于音频的捕捉是有一些问题的(audio 为true 会有bug)

基于session setDisplayMediaRequestHandler

推荐基于此方法,可以灵活的实现音视频的捕捉处理,

  win.webContents.session.setDisplayMediaRequestHandler((stream, callback) => {
    // 此处可以进行一些ui 选择,或者业务处理(与渲染进程的通信,可以包含ui信息,不同的source 支持的能力不太一样)
    desktopCapturer.getSources({ types: ['screen','window'] }).then((sources) => {
      // Grant access to the first screen found.
      console.log("sources",sources);
      callback({ video: sources[0], audio: 'loopback' })
    })
  }, { useSystemPicker: true })

基于自定义getDisplayMedia

window.navigator.mediaDevices.getDisplayMedia = () => {
  return new Promise(async (resolve, reject) => {
    try {
      alert("navigator.mediaDevices.getDisplayMedia");
      const sources = await ipcRenderer.invoke("get-sources");
      console.log("sources", sources);
      console.log("sources[0]", sources[0]);
      // 注意此模式中audio当为chromeMediaSource 只能为false,否则会有异常问题,应该属于chrome 的bug
      const stream = await window.navigator.mediaDevices.getUserMedia({
        audio: false,
        video: {
          mandatory: {
            chromeMediaSource: "desktop",
            chromeMediaSourceId: sources[0].id,
          },
        },
      });
      stream.getTracks().forEach(track => {
        console.log("track",track);
      });
      resolve(stream);
    } catch (err) {
      reject(err);
    }
  });
};

说明

以上是一个简单说明,因为原生navigator.mediaDevices.getUserMedia audio 为true 会有异常问题,通过以上可以解决问题

参考资料

https://www.electronjs.org/docs/latest/api/desktop-capturer

https://github.com/electron/electron/pull/30702

posted on   荣锋亮  阅读(56)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2023-11-16 mailpit 试用
2023-11-16 mailpit MailHog 的替代者
2020-11-16 实现一个简单的golang db driver
2020-11-16 代码判断是否运行在docker环境中
2020-11-16 haproxy opentracing 安装构建说明
2020-11-16 haproxy 2.3 发布
2019-11-16 restql 学习一 安装试用

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示