105 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
<template>
 | 
						|
  <div style="width: 100%;height: 100%;position: relative">
 | 
						|
    <video
 | 
						|
      v-if="videoSrc"
 | 
						|
      id="video"
 | 
						|
      :src="videoSrc"
 | 
						|
      style="position: relative;z-index: 10;width: 100%;height:calc(100% - 50px)"
 | 
						|
      controls
 | 
						|
      crossorigin="anonymous"
 | 
						|
    />
 | 
						|
    <div style="text-align: right">
 | 
						|
      <el-button size="small" type="primary" @click="jietu">截图</el-button>
 | 
						|
    </div>
 | 
						|
  </div>
 | 
						|
</template>
 | 
						|
 | 
						|
<script>
 | 
						|
 | 
						|
export default {
 | 
						|
  props: {
 | 
						|
    videoSrc: {
 | 
						|
      type: String,
 | 
						|
      default() {
 | 
						|
        return ''
 | 
						|
      }
 | 
						|
    },
 | 
						|
    fileName: {
 | 
						|
      type: String,
 | 
						|
      default() {
 | 
						|
        return ''
 | 
						|
      }
 | 
						|
    }
 | 
						|
  },
 | 
						|
  data() {
 | 
						|
    return {
 | 
						|
      isDisabled: false,
 | 
						|
      imgList: [],
 | 
						|
      fileObj: null,
 | 
						|
      videoList: [],
 | 
						|
      file: null,
 | 
						|
      dataBuffer: null,
 | 
						|
      percentage: 0,
 | 
						|
      isVideoToMp4: false,
 | 
						|
      isNeedToMp4: false
 | 
						|
    }
 | 
						|
  },
 | 
						|
  watch: {
 | 
						|
  },
 | 
						|
  mounted() {
 | 
						|
  },
 | 
						|
  methods: {
 | 
						|
    jietu() {
 | 
						|
      this.screenShot('video')
 | 
						|
    },
 | 
						|
    screenShot(id) {
 | 
						|
      var player = document.getElementById(id)
 | 
						|
      console.log(player)
 | 
						|
      var canvas = document.createElement('canvas')
 | 
						|
      var img = document.createElement('img')
 | 
						|
      canvas.width = player.videoWidth
 | 
						|
      canvas.height = player.videoHeight
 | 
						|
      canvas.getContext('2d').drawImage(player, 0, 0, canvas.width, canvas.height)
 | 
						|
      var dataURL = canvas.toDataURL('image/png')
 | 
						|
      img.src = dataURL
 | 
						|
      img.width = player.clientWidth
 | 
						|
      img.height = player.clientHeight
 | 
						|
      img.style.objectFit = 'contain'
 | 
						|
      console.log(dataURL)
 | 
						|
      this.downFile(dataURL, `截图${new Date().getTime()}.png`)
 | 
						|
    },
 | 
						|
    downFile(data, fileName) {
 | 
						|
      var save_link = document.createElementNS(
 | 
						|
        'http://www.w3.org/1999/xhtml',
 | 
						|
        'a'
 | 
						|
      )
 | 
						|
      save_link.href = data
 | 
						|
      save_link.download = fileName
 | 
						|
      var event = document.createEvent('MouseEvents')
 | 
						|
      event.initMouseEvent(
 | 
						|
        'click',
 | 
						|
        true,
 | 
						|
        false,
 | 
						|
        window,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        false,
 | 
						|
        false,
 | 
						|
        false,
 | 
						|
        false,
 | 
						|
        0,
 | 
						|
        null
 | 
						|
      )
 | 
						|
      save_link.dispatchEvent(event)
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
</script>
 | 
						|
 | 
						|
<style scoped>
 | 
						|
 | 
						|
</style>
 |