0%

chromium 52才开始支持navigator.mediaDevices.getUserMedia()这个API,49也没有navigator.getUserMedia()这个接口,但是有个navigator.webkitGetUserMedia(),可以参考这里
首先来枚举所有的音视频设备:

1
navigator.mediaDevices.enumerateDevices().then(x=>{...})

找到数组中kind是videoinput的deviceId然后用deviceId来获取一个stream:

1
navigator.webkitGetUserMedia({video: deviceId}, 成功回调, 失败回调);

然后转换成一个url传递给video标签来播放:

1
video.src = window.webkitURL.createObjectURL(stream);

如果只有一个摄像头直接用 navigator.webkitGetUserMedia({video: true}, 成功回调, 失败回调);也行,获取stream的时候也可以指定一些类似于宽高的属性,MDN都有。
截图到canvas弄成base64网上有代码就不写了。
期间遇到了点问题,比较低版本的cef不支持--unsafely-treat-insecure-origin-as-secure选项导致http链接不能用media device相关的接口,后面虽然有个pr修了但是我也懒得去照着pr改了直接把SecurityPolicy::isOriginWhiteListedTrustworthy改成了永远返回true,这样所有链接都会当成安全链接了(主要是懒得每次用cef都得开这个破选项还这么长)。
另外要用navigator.webkitGetUserMedia()还需要再cefclient的命令行上加上--enable-media-stream选项,这个破选项也是我对着代码理了一大顿才找到的,用老版本的东西真是坑爹。

主要特点:

  1. 支持windows xp sp2
  2. 支持NPAPI,用的是CEF最后一个还支持NPAPI的提交
  3. 支持无边框窗体(–hide-frame), 支持使用CSS-webkit-app-region: drag;指定拖拽区域
  4. CefDisplayHandler::OnConsoleMessage增加了日志等级
  5. html5test检测支持的特性数量为485个,包括MP3和H.264支持,比cef49多了几个

其实cef49.2623用着也基本上足够了,只是有一些还是挺有用的特性只在比较新的cef版本里有,所以就自己做了点修改.
代码有点大,等有时间在传网盘或者弄个torrent.

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment


注释掉了一些XP上没有的特性,DWM D3D11 蓝牙 MF和一些对话框API,然后用YY-Thunks打个补丁就可以运行了。
目前还没做完整的测试,不过那些注释掉的特性基本上都不太需要。
支持NPAPI还在折腾,现在虽然能加载NPAPI了,但是还有很多问题,有点头大。

给博客加上了评论,遇到了俩小坑,一个是OAuth App里的Homepage URLAuthorization callback URL两个url结尾要带上斜线;另一个是next主题的配置文件中gitalk.repo不是仓库的git路径,是仓库名。

以前的域名到期了,重新申请了个,本来想用名字拼音.me来申请的,结果已经有人申请过了。

新博客用的hexo,主题next。

老博客内容都丢了,前几天去archive.org上下载了个存档,不过还是很多图没了,有时间整理下也放上来。

长时间不写markdown,语法格式都有点记不起来了。

部署的时候遇到了个坑,hexo deploy的时候把我的CNAME文件给删了,结果导致访问 https://laoxing.me 的时候404,找了半天才找到原因,重新搞个CNAME文件放到source文件夹下,内容是域名“laoxing.me”再重新发布下就好了。

然后github就500了。(其实两者并没有什么关系(逃

Test