首页 > 其他分享 >视频抠除指定的背景颜色播放

视频抠除指定的背景颜色播放

时间:2024-01-26 13:23:54浏览次数:33  
标签:视频 const imageData videoEl 指定 value 播放 data canvasEl

<template>
  <div style="background: red; padding: 20px">
    <video ref="videoEl" src="/movie.mp4"></video>
    <hr />
    <canvas ref="canvasEl"></canvas>
    <hr />
    <button @click="videoPlay">播放</button>
    <button @click="videoPause">暂停</button>
    <button @click="videoStop">停止</button>
  </div>
</template>

<script>
import { defineComponent, onMounted, ref } from "vue";

export default defineComponent({
  name: "VideoPage",
  setup() {
    /** @type {import("vue").Ref<HTMLVideoElement>} */
    const videoEl = ref();
    /** @type {import("vue").Ref<HTMLCanvasElement>} */
    const canvasEl = ref();

    onMounted(() => {
      videoEl.value.addEventListener("canplay", function () {
        canvasEl.value.width = videoEl.value.videoWidth;
        canvasEl.value.height = videoEl.value.videoHeight;
        const ctx = canvasEl.value.getContext("2d");
        cancelAnimationFrame(window.animationFrameId);
        function canvasRender() {
          // 将video绘制到canvas
          ctx.drawImage(videoEl.value, 0, 0);
          // 在canvas中抠除指定颜色
          const imageData = ctx.getImageData(
            0,
            0,
            canvasEl.value.width,
            canvasEl.value.height
          );
          // rgba
          for (let i = 0; i < imageData.data.length; i += 4) {
            if (
              imageData.data[i] > 100 &&
              imageData.data[i + 1] > 100 &&
              imageData.data[i + 2] > 100
            ) {
              imageData.data[i + 3] = 0;
            }
          }
          ctx.putImageData(imageData, 0, 0);
          window.animationFrameId = requestAnimationFrame(canvasRender);
        }
        canvasRender();
      });
    });

    const videoPlay = () => {
      videoEl.value.play();
    };
    const videoPause = () => {
      videoEl.value.pause();
    };
    const videoStop = () => {
      videoEl.value.load();
    };

    return {
      videoEl,
      canvasEl,
      videoPlay,
      videoPause,
      videoStop,
    };
  },
});
</script>

<style scoped></style>

标签:视频,const,imageData,videoEl,指定,value,播放,data,canvasEl
From: https://www.cnblogs.com/linding/p/17989104

相关文章

  • 安防视频汇聚平台智能边缘分析一体机视频算法分析识别打电话检测算法
    在智能视频监控的广阔舞台上,打电话检测算法如同一位细心的守护者,它基于图像处理和机器学习的先进技术,致力于识别和分析视频中的人物行为。这项技术不仅仅是一个简单的监控工具,它更是一种智能的分析手段,能够在复杂的场景中准确地判断个体是否在进行电话通话。首先,算法的工作流程是一......
  • 安防视频汇聚平台智能边缘分析一体机视频算法分析识别打电话检测算法
    在智能视频监控的广阔舞台上,打电话检测算法如同一位细心的守护者,它基于图像处理和机器学习的先进技术,致力于识别和分析视频中的人物行为。这项技术不仅仅是一个简单的监控工具,它更是一种智能的分析手段,能够在复杂的场景中准确地判断个体是否在进行电话通话。首先,算法......
  • 使用ZLMediaKit对RTSP流转MP4进行播放
    框架地址:https://github.com/ZLMediaKit/ZLMediaKit/wiki/MediaServer%E6%94%AF%E6%8C%81%E7%9A%84HTTP-API 部署ZLMediaKit解码器https://blog.csdn.net/u011374856/article/details/124802856?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog......
  • 云空间技术在视频监控中的隐私保护策略
    本文分享自天翼云开发者社区《云空间技术在视频监控中的隐私保护策略》,作者:二进制诗人随着云计算技术的发展,视频监控系统越来越多地采用云空间技术来存储和处理数据。然而,随之而来的是对个人隐私保护的担忧。本文将探讨在开发和部署基于云的视频监控系统时,如何实施有效的隐私保护......
  • 云空间视频监控的可扩展性:适应不断增长的监控需求
    本文分享自天翼云开发者社区《云空间视频监控的可扩展性:适应不断增长的监控需求》,作者:二进制诗人随着企业和组织不断扩大,对视频监控系统的需求也在持续增长。云空间视频监控以其卓越的可扩展性,为满足这些日益增长的监控需求提供了理想的解决方案。本文旨在分享云视频监控的可扩展......
  • 查看指定pid的cpu内存和io情况
    #CPUroot@performance:~#pidstat-u1-p3384955Linux5.10.0-10-amd64(performance)01/26/2024_x86_64_(48CPU)09:20:37AMUIDPID%usr%system%guest%wait%CPUCPUCommand09:20:38AM033849550.003......
  • Qt编写手机端视频播放器/推流工具/Onvif工具
    一、视频播放器同时支持多种解码内核,包括qmedia内核(Qt4/Qt5/Qt6)、ffmpeg内核(ffmpeg2/ffmpeg3/ffmpeg4/ffmpeg5/ffmpeg6)、vlc内核(vlc2/vlc3)、mpv内核(mpv1/mp2)、mdk内核、海康sdk、easyplayer内核等。非常完善的多重基类设计,新增一种解码内核只需要实现极少的代码量,就可以应用整......
  • 每日一道Java面试题:方法重载与方法重写,这把指定让你明明白白!
    写在开头请聊一聊Java中方法的重写和重载?这个问题应该是各大厂面试时问的最多的话题之一了,它们几乎贯穿了我们日常的开发工作,在过往的博客中我们多多少少都提到过重载与重写,而今天我们就一起来详细的学习一下这二者的功能与区别!重载与重写的定义重写:类实现接口或者子类继承......
  • 一文深度解读多模态大模型视频检索技术的实现与使用
    当视频检索叠上大模型Buff。:::hljs-right万乐乐|技术作者:::视频检索,俗称“找片儿”,即通过输入一段文本,找出最符合该文本描述的视频。随着视频社会化趋势以及各类视频平台的快速兴起与发展,「视频检索」越来越成为用户和视频平台实现高效查找视频、定位目标内容的新需求。......
  • html中添加背景音乐自动播放
    参考: https://www.runoob.com/try/try.php?filename=tryhtml5_av_prop_autoplayhttps://www.mchweb.net/mcbach/1650918861981130752.html 现在的浏览器对于audio、video标签的页面加载时都无法自动播放,各大官方给的意见是自动播放会吵人,只有在静音的模式 muted="true"下......