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。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

壁仞科技BR100-GPU的性能及应用

性能 算力领先:壁仞科技发布的GPU产品,如系列,具有超高的算力。据壁仞科技公布的数据,BR100的峰值算力超过了英伟达目前在售的旗舰计算产品A100 GPU的三倍,并创造了全球通用GPU的算力记录。晶体管数量:BR1…

hadoop 之 libhdfs

Hadoop 3.2.2 libhdfs/hdfs.c struct hdfsFile_internal {void* file;enum hdfsStreamType type;int flags; };以上数据结构中的 flags 是由以下接口赋值 hdfsFile hdfsOpenFile(hdfsFS fs, const char *path, int flags,int bufferSize, short replication, tSize blockSiz…

vue3+vant4 二次封装IndexBar城市列表组件以及性能优化

前言 二次封装城市列表以及对静态资源的引入做异步引入优化。 版本号: vue3.3 vant4 效果图 数据源 城市列表 city.json 永久网盘链接 链接:https://pan.baidu.com/s/10E-b441-4P7mjvomlJhm0g 提取码:m92c 字段大致讲解 indexList :每个字…

开窗函数!

开窗函数(Window Function)是SQL中的一种高级功能,允许你在一组相关行(一个“窗口”)上执行聚合操作,而不像传统聚合函数(如SUM(), AVG(), COUNT())那样将所有匹配行合并成单个汇总行…

数据库的设计,为什么那么重要?#PostgreSQL培训

良好的数据库设计能够确保数据的完整性和准确性。 通过减少冗余、优化查询和确保数据一致性,可以降低系统出现故障的可能性,从而减少修复和维护的时间和成本。 良好的数据库设计可以确保数据的合规性,并降低因违反法规而面临的罚款和诉讼风险…

人机交互中的阴差阳错

人机交互是一门研究系统与用户之间的交互关系的学问。它旨在设计和实现使人们能够与计算机系统进行有效交互的方法和技术。人机交互领域研究的热门话题之一就是人工智能。另一个热门话题就是增强现实(Augmented Reality)和虚拟现实(Virtual R…

算法训练 | 回溯算法Part3 | 39.组合总和、40.组合总和II、131.分割回文串

目录 39.组合总和 回溯法 40.组合总和II 回溯法 131.分割回文串 回溯法 39.组合总和 题目链接:39. 组合总和 - 力扣(LeetCode) 文章讲解:programmercarl.com 回溯法 解题思路 本题没有数量要求,可以无限重复…

【java11】java11新特性之局部变量类型推断升级

局部变量类型推断是java10开始新增的新特性,java11中对局部变量推断进行了升级,var支持添加注解的语法格式,Java10中是无法实现的,在Java11中加入了这样的语法。 Lambda中使用var修饰符 Java11允许在lambda表达式中使用var&…

大数据的数据采集

大数据采集是指从各种来源收集大量数据的过程,这些数据通常是结构化或非结构化的,并且可能来自不同的平台、设备或应用程序。大数据采集是大数据分析和处理的第一步,对于企业决策、市场分析、产品改进等方面具有重要意义。以下是大数据采集的…

Vue3项目炫酷实战,检测密码强度值

在前端项目开发中,确保用户密码的强度是保护账户安全的重要措施。本文将演示如何使用Vue 3实现一个简单的密码强度检测功能。通过实时反馈,帮助用户创建更安全的密码,从而提升整体系统的安全性。无论您是前端开发新手还是经验丰富的开发者&am…

从GPT-4到GPT-4o:人工智能的进化与革命

从GPT-4到GPT-4o:人工智能的进化与革命 活动介绍 近期,OpenAI推出了最新版本的人工智能模型——GPT-4o,引发了广泛的关注和讨论。在这篇文章中,我们将对GPT-4o进行全面评价,包括与前一版本GPT-4的对比分析&#xff0…

横空出世GPT-4o究竟有什么魅力吸引我们?

目录 如何评价GPT-4o? 方向一:对比分析 GPT-4o是OpenAI最新发布的语言模型,相较于其前身GPT-4,具有以下显著区别和提升: 方向二:技术能力 GPT-4o在语言生成和理解方面展示了卓越的技术能力: 方向三&…

与5月汽车销量共舞:MK米客方德SD NAND助力车载T-box

上周末,各家车企集体公布5月销量数据,新能源车龙头比亚迪单月销量遥遥领先,数据显示,比亚迪5月新能源汽车销量33.18万辆,上年同期销量24.02万辆。1至5月,比亚迪新能源汽车销量累计127.13万辆,同…

重生之 SpringBoot3 入门保姆级学习(17、整合SSM)

重生之 SpringBoot3 入门保姆级学习&#xff08;17、整合SSM&#xff09; 4、数据访问4.1 整合 ssm 4、数据访问 4.1 整合 ssm pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" …

指针的认识(指针变量类型意义、指针运算)

目录 一、指针变量类型的意义 a.通过指针的解引用理解类型意义 b.void* 类型指针 c.const修饰的指针变量 c.1 const放在*号左边​编辑 c.2 const放在*号右边 二、指针运算 a.指针-整数 ​编辑 b.指针 - 指针 ​编辑 c.指针的关系运算 一、指针变量类型的意义 指针变…

【Python】pandas的loc使用方法

缘分让我们相遇乱世以外 命运却要我们危难中相爱 也许未来遥远在光年之外 我愿守候未知里为你等待 我没想到为了你我能疯狂到 山崩海啸没有你根本不想逃 我的大脑为了你已经疯狂到 脉搏心跳没有你根本不重要 &#x1f3b5; 邓紫棋《光年之外》 当你处理数…

【学习】软件测试中如何进行Web网页兼容性测试

在数字时代&#xff0c;Web网页作为信息传递和交流的重要平台&#xff0c;其稳定性和用户体验至关重要。如同一位匠人细致打磨他的工艺品&#xff0c;开发者亦需精心测试网页的兼容性&#xff0c;确保其在各种设备和浏览器上的表现无懈可击。今天&#xff0c;我们就来探讨如何对…

SpringBoot+百度地图+Mysql实现中国地图可视化

通过SpringBoot百度地图Mysql实现中国地图可视化 一、申请百度地图的ak值 进入百度开发者平台 编辑以下内容 然后申请成功 二、Springboot写一个接口 确保数据库里有数据 文件目录如下 1、配置application.properties文件 #访问端口号 server.port9090 # 数据库连接信息 spr…

如何高效管理自己的时间,可以从这几个方向着手

如果你是上班族&#xff0c;天选打工人&#xff0c;你的绝大多数时间都属于老板&#xff0c;能够自己支配的时间其实并不多&#xff0c;所以你可能察觉不到时间管理的重要性。 但如果你是自由职业者或者创业者&#xff0c;想要做出点成绩&#xff0c;那你就需要做好时间管理&am…

ImageButton src图片会照成内存泄露吗 会使native内存增加吗?

在Android开发中&#xff0c;ImageButton 是用来显示按钮的视图组件&#xff0c;它通常用于显示图标或图片。对于ImageButton使用的src属性&#xff08;即按钮上的图片&#xff09;通常不会导致内存泄漏&#xff0c;但是有几种情况可能会导致内存问题&#xff1a; 1. **不正确…