赞
踩
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);
});
其中 displayMediaOptions 里面那个 regionShare
属性是我给 MediaStreamConstraints 添加的。
通过这种方式,前端同学就可以很方便地启动区域共享。下面是CEF中的运行演示:
用于选择区域的那个窗口我是用Duilib写的,捕捉范围会随窗口大小改变而改变。另外,Chromium的屏幕/窗口捕捉在Windows上有好多种实现,如GDI、DirectX、WGC等,由于时间关系,我目前只写了一份GDI的版本,以后有时间再写一下其他版本。另外还有macOS的后面也抽空实现一下。
修改的源码比较杂乱,blink、WebRTC都有些改动,还没有整理,后面整理好了再贴吧。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。