fly-barrage 前端弹幕库(6):实现人像免遮挡

项目官网地址:https://fly-barrage.netlify.app/;
👑🐋🎉如果感觉项目还不错的话,还请点下 star 🌟🌟🌟。
Gitee:https://gitee.com/fei_fei27/fly-barrage(Gitee 官方推荐项目);
Github:https://github.com/feiafei27/fly-barrage;

在这里插入图片描述

1:人像免遮挡原理

首先了解一下 CanvasRenderingContext2D 中的 globalCompositeOperation 属性,人像免遮挡功能便是借助了这个属性。
当我们把这个属性设置为 ‘source-out’ 的时候,Canvas 会仅在不与现有画布内容重叠的地方绘制新图形,借助这个特性便能实现人像免遮挡,技术细节如下所示:

  • 在离屏 Canvas 中完成弹幕的绘制;
  • 判断当前是否有蒙版数据,如果有的话,在渲染 Canvas 中完成蒙版的绘制,并设置 globalCompositeOperation 属性;
  • 将离屏 Canvas 中已经绘制好的弹幕绘制到渲染 Canvas 中,此时便能实现人像免遮挡功能;

实现这个功能的难点是获取视频每一帧中的人像蒙版数据,在真实的业务场景中,这个应该是后端直接传递给前端,前端直接渲染即可。
但一些特殊的视频资源,例如纯色背景的视频,前端就能完成每一帧人像蒙版数据的生成,这一块可以直接看项目完整 DEMO 中的代码,已经实现了。

2:使用 fly-barrage 实现人像免遮挡

使用 fly-barrage 库实现人像免遮挡涉及以下两个 API:

  • beforeFrameRender 钩子函数,这个钩子函数会在每一帧弹幕渲染前被触发执行,可以在这个钩子函数中计算并设置蒙版数据;
  • setMask,设置蒙版数据;

具体代码可以直接看 src/composables/portraitUnobstructed.ts。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/674752.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【matlab】绘图插入并放大/缩小子图

参考链接 代码分为两个:绘图代码与magnify.m 绘图代码就是普通的绘图代码,以下为例 %https://zhuanlan.zhihu.com/p/655767542 clc clear close all x 0:pi/100:2*pi; y1 sin(x); plot(x,y1,r-o); hold on y2sin(x)-0.05; y3sin(x)0.05; xlim([0 2*…

ai写真软件有哪些?轻松创造艺术写真照

艺术写真照是艺术与日常之间的桥梁,它将艺术的边界延伸到了我们的日常生活中,让每个人都能够通过AI技术,将平凡的瞬间转化为艺术的永恒。 那AI写真怎么样呢?今天,本文将推荐几款AI写真软件,它们将帮助你轻…

CXL (1)

为什么有CXL CXL说到底 是为了打破内存墙而生的 CXL全称是Compute Express Link, 可以用来连接CPU,以及其他任何计算单元,比如GPU。 CXL和PCIe跑在一样的physical layer上,与PCIe不一样的是,CXL允许CPU和连接的设备共…

csrf漏洞与ssrf漏洞

环境:用kali搭建的pikachu靶场 一.CSRF 1.CSRF漏洞简介 跨站请求伪造(CSRF)漏洞是一种Web应用程序安全漏洞,攻击者通过伪装成受信任用户的请求来执行未经授权的操作。这可能导致用户在不知情的情况下执行某些敏感操作&#xff0…

21、matlab生成脉冲序列:pulstran()函数

1、pulstran()函数 1)语法 语法1:y pulstran(t,d,func,fs) 基于连续函数的采样产生脉冲序列。 语法2:y pulstran(t,d,p) 生成一个脉冲序列,该脉冲序列是向量p中原型脉冲的多个延迟插值的总和。 语法3:y pulstran…

echarts柱状图坐标轴的内容太长导致显示不全的两种解决办法

情况一:坐标上的内容是文字时 width: 60,//将内容的宽度固定 overflow: truncate,//超出的部分截断 truncate: ...,//截断的部分用...代替 情况二:如果纵坐标上是数字 grid: {top: "15%",left: "2%",right: "2%",bottom:…

西贝柳斯终极版2023:Mac上的简易音乐记谱神器,谱写未来

Avid Sibelius Ultimate 2023 for Mac是一款专为Mac用户设计的音乐记谱软件,它以其强大的功能和直观的操作界面,为音乐创作者们提供了一个高效、便捷的创作平台。 一、音乐创作的得力助手 Sibelius Ultimate 2023不仅适用于有抱负的作曲家和词曲作者&a…

OpenCV中的圆形标靶检测——斑点检测算法(一)

1.导读 在上一节内容中我们简要描述了OpenCV中实现圆形标靶检测的API的使用方法,其处理流程可大致分为1)斑点形状的检测,和2)基于规则的斑点形状的过滤与定位。第一步将类似圆斑形状的区域检测出来,但可能存在一些误检测的噪声,第二步则利用圆斑的分布规则(M*N排列)进行…

海外仓系统介绍:一篇文章讲清楚这是什么,怎么选,有哪些坑

所谓的海外仓系统是一种管理海外仓的综合性工具,主要功能体现在海外仓仓储管理、一件代发订单处理、快递物流跟踪、数据统计、财务统计等方面。 因为海外仓的类型比较多,有大型集团化海外仓,起步阶段海外仓和中小型海外仓,家庭仓…

短视频矩阵系统搭建开发,ai智能剪辑系统,矩阵发布,一键管理多个账户

前言: 企业短视频矩阵是企业通过搭建多个短视频平台账号,形成一个多元化的内容传播网络。它旨在通过多平台内容的同步传播,实现企业品牌价值的最大化。短视频矩阵包括抖音、快手、视频号、小红书、百家号等热门短视频平台,其核心…

UTONMOS:元宇宙游戏,散发无尽魅力与可能

在数字世界的浩瀚星海中,utonmos元宇宙游戏宛如一颗璀璨的明珠,散发着无尽的魅力与可能。 utonmos可不单单只是一款游戏,它更是一个令人惊叹的全新虚拟宇宙,急切地等待着你去深入探索和豪迈征服。 在这里,你能随心所欲…

论文写作必备工具大揭秘:提升效率的终极指南

论文写作必备工具大揭秘:提升效率的终极指南 引言 不论你是文科、理工科还是商科的学生,面对论文的压力总是无法逃避的。临近期末,论文写作是不是让你头疼不已?别担心,你既然找到了这篇文章,就说明你渴望…

详解MyBatis(一)

目录 1.JDBC操作示例回顾 2.什么是MyBatis 3.MyBatis入门 3.1准备工作 3.2配置数据库连接字符串 3.3写持久层代码 3.4单元测试 ​4.MyBatis的基本操作 4.1打印日志 4.2参数传递 1.JDBC操作示例回顾 我们学习MySQL数据库时 ,已经学习了JDBC来操作数据库, 但…

企业微信hook接口协议,ipad协议http,一个用户多个标签

一个用户多个标签 参数名必选类型说明uuid是String每个实例的唯一标识,根据uuid操作具体企业微信 请求示例 {"uuid": "168885xxx599424","userid":0,//用户id"labelid_list":[ //标签id数组0] } 返回示例 {"data…

Nvidia Jetson/Orin +FPGA+AI大算力边缘计算盒子:公路智能巡检解决方案

项目背景 中国公路网络庞大,总里程超过535万公里,高速公路里程位居世界前列。面对基础设施存量的不断增长,公路养护管理已迈入“建管养并重”的新时代。随着养护支出的逐年攀升,如何提升养护效率、降低管理成本,成为亟…

流媒体服务器SMS-语音对讲(二)

1.简介 上篇文件介绍了流媒体与设备之间可能的交互场景,本文将介绍客户端或者web端与摄像头对讲的总体流程。 老规矩,介绍一下本人的开源流媒体,点个star,有兴趣一起开发的朋友也可以联系本人:https://gitee.com/inyem…

为什么我们需要用到空号检测

为什么需要空号检测 在我们进行群发短信营销和电话营销时,如果不提前对号码库进行空号筛选,那么会影响效率、浪费成本。 SUBMAIL 的空号检测,直接调用运营商的 API 接口进行数据对照,从而让手机号码的检测结果更加可靠。 空号检测…

Vercel deploy- Nextjs project error-URL link-env variable

Vercel deploy- Nextjs project error-URL link-env variable Error Check Database URL Check next-auth URL NEXTAUTH_URLhttps://yourappname.vercel.app/ 依次排查可能性 Application error: a server-side exception has occurred (see the server logs for more in…

sonobe:针对IVC的fold arithmetic电路实例

1. 引言 近日,arnaucube发推宣称 在EVM链(Optimistic)上验证了首个NovaCycleFold proof,对应开源代码实现见: https://github.com/privacy-scaling-explorations/sonobe(Rust Solidity) son…

Git基本使用教程(学习记录)

参考文章链接: Git教程(超详细,一文秒懂) RUNOOB Git教程 Git学习记录 1Git概述 1.1版本控制软件功能 版本管理:更新或回退到历史上任何版本,数据备份共享代码:团队间共享代码,…