Vue+canvas实现视频截图功能

  上传视频要提供视频封面(视频封面必填),这是在开发中实际问题。封面可以用户自己制作并上传,但这样脱离网站,体验不好,常见的处理方案就是用户未选择或上传封面时,自动截取视频第一帧作为封面,但这样并不友好。因此考虑视频上传后,在播放中由人员自行截取画面作为视频封面。

  简单效果如图:

Vue+canvas实现视频截图功能

  前端代码如下:

  <template>
  <div>
  <video src="https://{{视频地址}}.mp4"
  crossOrigin="Anonymous" controls style="width:300px;"></video>
  <img :src="imgSrc">
  <div>
  <el-button @click="cutPicture">
  截图
  </el-button>
  </div>
  <canvas id="myCanvas" width="343" height="200"></canvas>
  </div>
  </template>
  <script>
  export default {
  name: 'video',
  data () {
  return {
  imgSrc: '',
  videoData:{},
  }
  },
  methods: {
  //截取当前帧的图片
  cutPicture () {
  let self = this
  var v = document.querySelector('video')
  let canvas = document.getElementById('myCanvas')
  // canvas.setAttribute("crossOrigin",'Anonymous')
  var ctx = canvas.getContext('2d')
  ctx.drawImage(v, 0, 0, 343, 200)
  var oGrayImg = canvas.toDataURL('image/jpeg')
  // this.imgSrc = oGrayImg
  // axios请求,将截图传给后端API
  this.$axios.post('test/upload', {file: oGrayImg})
  },
  }
  }
  </script>

原创文章,作者:网友投稿,如若转载,请注明出处:https://www.cloudads.cn/archives/4116.html

发表评论

登录后才能评论