【发布时间】:2021-10-05 02:05:19
【问题描述】:
嗨,我想捕捉当前的视频屏幕并在下面显示结果。
即使我在这里 https://www.w3schools.com/code/tryit.asp?filename=GC0Z7WOPB15I 有参考 javascript 代码,但我没有得到任何帮助以将其转换为工作代码形式的 vue。
问题:我想要相同的 (https://www.w3schools.com/code/tryit.asp?filename=GC0Z7WOPB15I) vue 工作代码,但对于单个缩略图
由于缺乏vuejs 知识,我无法在所需位置显示捕获的图像
试过方法一:
const app = new Vue({
el:'#app',
data(){
return {
hello:'world'
}
},
methods:{
capture(){
alert('captured called');
let videoCanvas = document.createElement('canvas');
let video = document.getElementById('video')
videoCanvas.height = video.height;
videoCanvas.width = video.width;
videoCanvas.getContext('2d').drawImage(video, 0, 0);
var snapshot = videoCanvas.toDataURL('image/png');
var img = new Image();
img.onload = function () {
document.body.appendChild(this);
};
img.src = snapshot;
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<video id="video" controls="controls">
<source src="http://www.w3schools.com/html/mov_bbb.mp4"></source>
</video>
<button @click="capture()">Play and Capture</button>
<div>------------------Show captured thumbnail below -----------------</div>
<img src=""/>
</div>
即使我尝试将此代码 https://www.w3schools.com/code/tryit.asp?filename=GC0Z7WOPB15I 转换为 https://codepen.io/eabangalore/pen/Pojrzax 也不起作用
如果任何方法(或 2 中的解决方案)对我来说都行得通
试过方法二:
const app = new Vue({
el:'#app',
data() {
return {
canvas:''
};
},
methods: {
capture(video, scaleFactor) {
if(scaleFactor == null){
scaleFactor = 1;
}
var cx =0;
var cy=0;
var w = video.videoWidth * scaleFactor;
var h = video.videoHeight * scaleFactor;
var canvas = document.createElement('canvas');
canvas.width = w * 2;
canvas.height = h * 0.5;
var ctx = canvas.getContext('2d');
ctx.drawImage(video, cx, cy, 50, 50);
ctx.font = '14pt, sans-serif';
return canvas;
} ,
displayThumbnail(){
let video = document.querySelector(`#video`);
console.log('video',video);
let scaleFactor = 0.25;
this.canvas = this.capture(video, scaleFactor);
console.log('this.canvas',this.canvas);
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<video id="video" controls="controls">
<source src="http://www.w3schools.com/html/mov_bbb.mp4"></source>
</video>
<button @click="displayThumbnail()"> Capture</button>
<div>----------------------- show captured thumbnail below -----------------------------------</div>
<div id="output" style="display: inline-block; top: 4px; position: relative ;border: dotted 1px #ccc; padding: 2px;width:100%" v-html="canvas"></div>
</div>
请帮我提前谢谢!!!
【问题讨论】:
标签: javascript vue.js vuejs3