问题描述
我有一个组件可以在其中截取视频的屏幕截图。它们存储在数组中,并显示在画布中视频下方的组件中。
但是,我要实现的是在另一个组件(gallery.vue)中访问此屏幕截图数组,并在其中显示所有屏幕截图。因此,点击屏幕快照按钮后,相应的屏幕截图应显示在其他组件中。
这是我的Stream.vue组件的外观,其中包含视频和屏幕截图按钮(该组件运行良好):
<template>
<div id="app">
<div>
<video ref="video" id="video" width="1024" height="576" autoplay></video>
</div>
<div>
<button class="btn btn-dark btn-lg" style="margin-top: 5px; margin-bottom: 7px" id="snap" v-on:click="capture()">
<i class="fa fa-camera"></i>
</button>
</div>
<canvas ref="canvas" id="canvas" width="640" height="480"></canvas>
<ul>
<li v-for="c in captures" :key="c.id">
<img v-bind:src="c" height="50" />
</li>
</ul>
</div>
</template>
<script>
export default {
name: "camera",data() {
return {
video: {},canvas: {},captures: [],};
},mounted() {
this.initVideo();
},methods: {
initVideo() {
this.video = this.$refs.video;
if (
"mediaDevices" in navigator &&
"getUserMedia" in navigator.mediaDevices
) {
navigator.mediaDevices
.getUserMedia({video: true})
.then((stream) => {
const videoPlayer = document.querySelector("video");
videoPlayer.srcObject = stream;
videoPlayer.play();
});
} else {
alert("Livestream currently unavailable.");
}
},capture() {
this.canvas = this.$refs.canvas;
// this.canvas = document.querySelector("canvas");
// this.canvas = document.getElementById("galleryCanvas");
var context = this.canvas.getContext("2d");
context.drawImage(this.video,640,480);
this.captures.push(this.canvas.toDataURL("image/png"));
},},};
</script>
<template>
<div class="gallery" id="mainDiv">
<canvas ref="canvas" class="galleryCanvas" id="galleryCanvas" width="640" height="480" v-bind:captures="capture"></canvas>
<ul>
<li v-for="screenshot in captures" :key="screenshot.id">
<img v-bind:src="screenshot" height="50" />
</li>
</ul>
<!-- <div class="canvas" id="galleryCanvas"></div> -->
</div>
</template>
<script>
export default {
name: "gallery",props: {
captures: Array,};
</script>
到目前为止,我已经尝试了多种方法。我尝试通过
访问“图库”组件的画布this.canvas = document.querySelector("canvas");
或通过其ID通过
this.canvas = document.getElementById("galleryCanvas");
但是所有这些都不起作用。它只是在该组件中显示单个屏幕截图,当我单击屏幕截图按钮时,它会覆盖屏幕截图,而不是在旧屏幕截图旁边显示新屏幕截图。
这听起来像是一个相当简单的问题,但我确实为此感到困惑。 我真的很感谢您的帮助。
非常感谢您!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)