当前位置:   article > 正文

在CEF中给 getDisplayMedia 增加区域捕获(Region Capture)功能_cef 屏幕区域采集

cef 屏幕区域采集

Chromium(以及CEF)以及Chrome并没有提供区域捕获功能(注:有一种消息表明Chrome M97可能会添加),但因为公司产品需要,所以就阅读了一下Chromium、WebRTC的源码,上个月花了几天时间,在Windows上为CEF添加了区域捕获功能,版本基于CEF 4472(Chromium 91)。

用法也比较简单:

const displayMediaOptions = {
  audio: true,
  video: true,
  regionShare: true
};

const startButton = document.getElementById('startButton');
startButton.addEventListener('click', () => {
  navigator.mediaDevices.getDisplayMedia(displayMediaOptions)
      .then(handleSuccess, handleError);
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

其中 displayMediaOptions 里面那个 regionShare属性是我给 MediaStreamConstraints 添加的。
通过这种方式,前端同学就可以很方便地启动区域共享。下面是CEF中的运行演示:

在这里插入图片描述

用于选择区域的那个窗口我是用Duilib写的,捕捉范围会随窗口大小改变而改变。另外,Chromium的屏幕/窗口捕捉在Windows上有好多种实现,如GDI、DirectX、WGC等,由于时间关系,我目前只写了一份GDI的版本,以后有时间再写一下其他版本。另外还有macOS的后面也抽空实现一下。

修改的源码比较杂乱,blink、WebRTC都有些改动,还没有整理,后面整理好了再贴吧。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号