JSMpeg воспроизводит видео рядом с холстом - PullRequest
0 голосов
/ 13 апреля 2020

Я хочу проигрывать видео рядом с холстом. Я знаю, что эта задача может быть странной, но мне нужно получить доступ для каждого кадра. Для этого я использую функцию обратного вызова, которая вызывается после рендеринга кадра для каждого кадра. Я хочу манипулировать этим кадром (добавить прямоугольник) и визуализировать его на другом холсте. На данный момент я могу сделать только 1 кадр. Я знаю почему, но мне не нужно вызывать requestAnimationFrame () в l oop и передавать аргумент. Как я могу сделать видео в моем случае и вызвать 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>



...