【发布时间】:2021-11-18 10:33:28
【问题描述】:
我有这段代码,它在视频标签中播放我的相机视图,然后在同一页面的画布元素中播放,页面有 2 个正方形,一个用于视频标签(播放相机视图),另一个用于画布(播放视频标签的相同视频)。我如何编辑我的代码以使视频在另一个页面的画布中播放以让我的用户实时观看它,如果有一种方法可以让用户在同一页面而不是另一个页面上观看它并且只看到画布,那就是也接受了。
这是我的 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>
</html>
这是我的 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);
}
}) ();
【问题讨论】:
-
如果您想在另一个页面上播放,您可以将相机数据作为数组缓冲区获取,但是为什么您想在可以在视频标签中播放时在画布中播放?
-
用户可以现场观看吗? @阿米尔·拉赫曼
-
您将获得块中的缓冲区,无论如何您都必须将其发送给其他用户,然后它可以像现场直播一样播放等待我有此类实验的代码我将在答案中发布它等待分钟
-
好的,@Amir Rahman
标签: javascript php html html5-canvas html5-video