视频截图,如何能连续指定多帧截图?
需要做一个视频连续截图的功能,在视频已经加载好的情况下,已有几个关键时间点,点一个按钮把这个几个时间点的视频截图取出来。
最开始我直接设置currentTime
,然后调用截图方法,发现视频还没动,就截图了。
然后我把截图方法放进里this.$nextTick
里,结果还是一样的。
之后我就想在视频设置完时间的回调里写方法,设置timeupdate
,结果是多次设置currentTime
,只有最后一次触发回调方法。
aaa () {
this.imgList = []
let video = this.$refs.video
console.log(Date.now())
let fun = (a) => {
console.log(a)
let canvas = document.createElement('canvas')
canvas.width = video.videoWidth
canvas.height = video.videoHeight
canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height)
let img = document.createElement('img')
img.src = canvas.toDataURL()
this.imgList.push(img)
this.$refs.slider.appendChild(img)
console.log(img)
}
// video.addEventListener('timeupdate', fun)
video.ontimeupdate = fun
// video.cutImg = fun
for (let i = 0; i < 20; i++) {
video.currentTime = 2.9 + i / 10
// this.$nextTick(_ => {
// video.cutImg()
// })
}
// video.removeEventListener('timeupdate', fun)
// video.ontimeupdate = ''
console.log(this.imgList)
console.log(Date.now())
}
框架用的vue
,我希望可以实现点一个按钮根据已有的时间点截多张图,谢谢同志们。。
设置
currentTime
的时间间隔太短了。