# 相关资源
- getUserMedia API 参考
- getDisplayMedia API 参考
# 本篇内容
获取摄像头画面以及捕获桌面视频
# 说在前面
getUserMedia函数是获取音视频流的方法,能指定设备获取音视频流以及限制只有视频或只有音频getDisplayMedia函数用于捕获用户桌面视频流,能指定整个显示器或者是限制某个窗口,单纯依靠浏览器是没办法获取到电脑正在播放的音频,而Electron上有捕获音视频的其他方案
# 约束
约束指上面提到的两个函数的参数,能够设置获取视频或音频的各种设置,常用的参数如下:
1 | { |
以上参数均可不写,单纯使用 { audio:true, video:true } 也是可以的
# getUserMedia
此函数返回一个 Promise,resolve 内包含一个 stream,可直接放入 video 标签播放
1 | const video = document.querySelector('#videoContainer') |
此函数运行时,浏览器会弹出授权窗口,只有用户点击允许之后才能获取到流,而点击阻止之后则会跳转到 catch 块内
# getDisplayMedia
1 | const video = document.querySelector('#videoContainer') |
此函数运行时,浏览器会弹出授权窗口,只有用户点击允许共享的内容并点击共享之后才能获取到流,而点击取消之后则会跳转到 catch 块内


# 结果
通过以上函数获取到了音视频流,我们将这些流的轨道加入到上一节建立的对等连接中,便完成了音视频的传输,底层的编码过程对我们而言是黑箱,几乎没什么操作空间。
1 | video.getTracks().forEach(track => { |
