繁体   English   中英

JSMpeg 在 canvas 旁边播放视频

[英]JSMpeg play video in alongside canvas

我想在 canvas 旁边播放视频。 我知道这个任务可能很陌生,但我需要访问每一帧。 为此我使用回调 function ,它在每帧渲染帧后调用。 我想操纵这个框架(添加矩形)并将他渲染到另一个 canvas 上。 现在我只能渲染 1 帧。 我知道为什么,但我不需要在循环中调用 requestAnimationFrame() 并传递参数。 我如何在我的情况下渲染视频并在没有 arg 的情况下调用 requestAnimationFrame()。 请帮忙。 我打破了我的头。

<template>
  <div>
    <canvas id="video-canvas" ></canvas>
    <canvas id="myCanvas"></canvas>
  </div>
</template>
<script>

import JSMpeg from 'jsmpeg-player'
export default {
  props: {

  },
  data: () => ({
    myCanvas: null,
    video: null,
    ctx: null,
  }),
  mounted() {
    this.initPlayer()
    this.myCanvas = document.getElementById("canvas")
    this.ctx = this.myCanvas.getContext("2d")
  }, 
  methods: {
    initPlayer() {
      var canvas = document.getElementById('video-canvas');
      var url = 'ws://localhost:8082/';
      var player = new JSMpeg.Player(url, {
        canvas: canvas, 
        videoBufferSize: 1024*1024*4, 
        onVideoDecode: () => {
          var image = new Image()
          var currentFrameData = player.options.canvas.toDataURL('image/webp', 0.7);
          image.src = currentFrameData
          this.ctx.drawImage(image, 0, 0, this.myCanvas.width, this.myCanvas.height)
          requestAnimationFrame()

        }
        });
    },  
  }
}
</script>



尝试这个。

onVideoDecode: (decoder, time) => {
  var image = new Image()
  var currentFrameData = player.options.canvas.toDataURL('image/webp', 0.7)
  image.src = currentFrameData
  image.onload = () => {
    ctx.drawImage(image, 0, 0, canvas.width, canvas.height)
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM