javascript - Html 画布屏幕共享
问题描述
我有这段代码,它在视频标签和画布中播放我的相机视图,我如何编辑它以使其将我的屏幕(而不是我的相机视图)共享到该画布中。
这是我的html文件:
<html>
<head>
<meta charset="UTF-8">
<title>With canvas</title>
</head>
<body>
<div class="booth">
<video id="video" width="400" height="300" autoplay></video>
<canvas id="canvas" width="400" height="300" style="border: 1px solid black;"></canvas>
</div>
<script src="video.js"></script>
</body>
这是js文件:
(function() {
var canvas= document.getElementById('canvas'),
context = canvas.getContext('2d'),
video = document.getElementById('video'),
vendorUrl = window.URL || window.webkitURL;
navigator.getMedia = navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia;
navigator.getMedia ({
video: true,
audio: false
}, function(stream) {
//video.src = vendorUrl.createObjectURL(stream);
if ('srcObject' in video) {
video.srcObject = stream;
} else {
video.src = vendorUrl.createObjectURL(stream);
}
video.play();
}, function(error) {
// An error occured
//error.code
});
video.addEventListener('play', function() {
setInterval(() => {
draw(this, context, 400, 300);
}, 100);
}, false );
function draw(video, context, width, height) {
context.drawImage(video, 0, 0, width, height);
}
}) ();
请帮忙!
解决方案
您必须多次绘制图像才能模拟视频,而不是一次。所以尝试添加以每100mssetInterval
绘制一次帧
video.addEventListener('play', function() {
draw(this, context, 400, 300);
}, false );
至
video.addEventListener('play', function() {
setInterval(() => {
draw(this, context, 400, 300);
}, 100);
}, false );
推荐阅读
- javascript - 斜线命令未在控制台中列出 (discord.js)
- matlab - Matlab Psychtoolbox PTB 新纹理未出现在计算机显示器上
- dht - Kadelmia Join操作:在join操作的上下文中“刷新”是什么意思?
- caching - 使用包含 Windows 全新未知图标的大量文件加快加载 DVD
- reactjs - UseEffect 的行为不符合预期 -
- python - TypeError:需要一个类似字节的对象,而不是'str'?
- uiview - 将 SwiftUI 视图添加到 UIView 子视图,无需访问父 UIViewController
- docker - RedisException 连接在 http://localhost:80/ 上被拒绝
- swift - 如何使用 SwiftUI 应用设置超过 30 秒的警报/通知?
- java - Junit:如何检查 2 个集合是否与不同顺序的元素相等?