当前位置: 首页 > news >正文

如何使用ONLYOFFICE+ffmpeg来给视频文件打马赛克

如何使用ONLYOFFICE+ffmpeg来给视频文件打马赛克

我这里之前写过很多关于ONLYOFFICE使用、安装的系列图文,也写过很多关于ffmpeg使用的图文,那么这次继续,把这两个开源软件放在一起,能碰撞出什么火花般的功能来。

这就是给视频文件添加马赛克效果!遮挡不想显示出来的内容。

当然了,会有很多人建议我,那么多商业视频非线性编辑软件的破解版都可以给视频文件打马赛克,那么多免费视频编辑软件似乎也可以打马赛克,但是我就是不用,即使是那些免费的国产软件,他们免费的目的就是夹带私货控制你的电脑,我就是完全采用安全可控的开源软件来打马赛克,就是功能强大的开源视频处理软件ffmpeg和办公软件ONLYOFFICE。

 

在ffmpeg的几种打码方式中选择OverLay功能打码

boxblur

这个参数是正经的给视频打马赛克,因此我就不贴效果图了,大家都知道马赛克什么样。在众多的参数中,指定所打马赛克的大小、颜色、粗糙度等参数,指定打码到原始视频画面的横纵坐标处,等等,但是我没有选择这种方式,是因为我这个视频要打码的位置有好几个,就得用这个方式反复多次打码,或者一次打码手撸非常长的命令行参数,太麻烦了,弃用该方法,当然,这里给出boxblur的官方参考手册见文末的参考文献。

delogo

这个参数本来不是打马赛克的功能,而是抹除视频中的电视台标、各处角落的徽标logo使用的功能,比方说,暑期旅游旺季时节,你去旅游胜地旅游,海南三亚、河北北戴河的沙滩上,录了短视频,短视频的画面中间是你的主角,背景是蓝天碧海金色的沙滩,似乎很美好,但是视频中就必然会有其他的游客闯入背景画面,或者坐在沙滩上看海,或者跳进海浪里面扑腾,那么你就用delogo这个参数,加到这个偷脸的游客身上,然后ffmpeg就会自动的插值运算,把delogo范围外地画面,就是干净的金色的沙滩的典型的纹理给贴补扩展到偷脸游客的身上,用旁边的画面来贴补中间的区域,还原蓝天大海的纯净的背景。

因此某些场合也可以用delogo来打码,但是,我们电视里面常见的井茶抓捕犯罪嫌疑人的画面,他会只给井茶和犯罪嫌疑人的面部打码,如果也用delogo给警察和犯罪嫌疑人的面部打码,那就会把这些人的脑袋给抹除了,直接看到背景画面,就变成了好多无头人的惊悚恐怖片的效果了。

当然,这里给出delogo的官方参考手册见文末的参考文献。最后我选择的是下面的打码方式

overlay

overlay的原理是在要打马赛克的地方上面叠加渲染一层,图片,图片随便绘制一些纹理打乱线条、颜色并设置为半透明,就相当于给下面一层的原始视频打了马赛克,有多个地方要打马赛克也不麻烦,无非是直接做一张全画幅的图片,要打几处马赛克就在几处地方画上半透明的纹理图像,其余地方都设为纯透明,并且overlay参数比较简单,最终,我上面视频所用的命令是:

ffmpeg -i "南海机器人01打码前.mp4" -i mytouma.png -filter_complex "overlay=x=(main_w-overlay_w)/2:y=(main_h-overlay_h)/2" 南海机器人01打码后.mp4

上面既然原理讲明白了,那么这个命令的参数我就不细讲了,这里给出overlay的官方参考手册见文末的参考文献。

上述命令中的mytouma.png就是打码所用的马赛克图片:

这个文件如何制作呢?

ONLYOFFICE制作打码图片

我用了很久的微软Office以后,发现就像游戏打通关一样,周围没有比我更精通微软Office的人了,孤独是多么的寂寞,于是,果断转换到开源的ONLYOFFICE了,在Office类软件的武林中,OO和MO才是真正的巅峰双煞!ONLYOFFICE最近新出了协作空间,于是赶紧申请了一个试试,在协作空间里面创建了一个叫做ADS-B的房间,在这个房间里面来开展工作,未经授权的任何其他人都是无法访问这里的,既能确保内容安全,又能让房间成员协作办公。简言之,ONLYOFFICE协作空间是一个协同工作平台,帮助您更好地与客户、业务合作伙伴、承包商及第三方进行文档协作。在此平台内,您可以创建自定义房间,设置灵活访问权限。支持设置以下级别的访问权限:

  • 仅查看

  • 可评论

  • 可审阅

  • 可填写表单

  • 可编辑

  • 高级用户

  • 房间管理员

更多介绍,我把文末放到介绍文章里面了欢迎调查研究,下载使用。

先在里面创建一个用来画马赛克的演示文稿,然后把自己手撸的视频截取一张原图,用来对照绘制马赛克的原图,上传到协作空间里

然后就可以在演示文稿里面插入图片,选择第三项,图片来自存储,

找到刚刚上传到虚拟办公室里面的图片,就可以插入了。

插入的图片,是默认缩放到幻灯片画幅的大小,对于1920*1080分辨率的视频,默认的ppt演示文稿A4纸的幅面大小,就是如上图所示是宽度33.87厘米高度19.05厘米,但不能以此来绘制上层蒙盖的马赛克图层,这里要点击实际大小按钮,还原到视频截图的原始视频画面大小:

宽度50.80高度28.57厘米。绘制马赛克图层,大部分区域是透明的,只需要给需要打码的部位绘制放置马赛克,但是不能真的不绘制透明画幅,需要绘制透明框来定义马赛克图层的大小尺寸,因此插入一个矩形框:

然后鼠标拖动矩形框的左下角靠近演示文稿的画面的左下角,接近边缘的时候,自动贴附上左下角,非常自动方便

然后拖动矩形框右上角贴合到演示文稿的右上角:

这个矩形就是精确的视频画面的大小尺寸了,它是要设为透明的,非常简单:

选择它,在属性里面选择没有填充,就是纯透明的,主意下面的矩形框线形也要选择没有线条:

这样,这个矩形就彻底隐身了,虽然它还存在。

然后就可以开始添加马赛克了,方法很简单,就是参考我之前的ONLYOFFICE打马赛克的图文来做就可以了,在插入图形里面选择圆角矩形:

然后把这个圆角矩形拖动到要打码的地方,拖动四角调整尺寸,覆盖住要打码的部位,然后再图片属性中,选择用图片或纹理来填充,然后从纹理选择下拉框任选一款,比如我选择了下图中的纹理,然后在不透明度位置调节滑块,比如我调节为80%,边框线选择没有线,基本上就是比较好的马赛克遮盖效果了:

同样操作,可以添加多个马赛克遮挡视频画面的多个部位:

都调节满意后,就像上一期马赛克教程一样,来一个釜底抽薪!选择所有的马赛克和那个看不见的透明矩形,把它们安排到最下面去:

露出原图后删掉原图!

原图去无踪,马赛克更出众!

然后把马赛克图层所有零件组合到一起:

然后就可以选中这个最终的这个对象,选择另存为图片:

就可以生成上面ffmpeg打码所用的mytouma.png马赛克图片文件了。

协作空间云SAS服务与本地部署

马赛克图片下载到本地电脑上用ffmpeg进行处理。在协作空间的虚拟办公室里面的这些文件,虚拟办公室之外的人是无法访问的,即使是虚拟办公室内的人,也可以灵活设置权限让他不能修改只能查看:

如上图所示,目前,自托管 ONLYOFFICE 协作空间提供三种不同的资费方案:家用版、企业版和免费社区版(适合经验丰富的用户,需自行安装、配置和维护)。

企业版

此方案适合所有商业需求。提供可扩展性和专业支持,价格根据同时连接的数量来决定。您能得到:

  • 房间数量不限

  • 文本文档、电子表格、演示文稿和表单的在线编辑器

  • PDF阅读器和转换器

  • 移动网页编辑器

  • 桌面和移动应用程序

  • 增强的安全功能

  • 1年更新

  • 1年专业支持

免费试用

免费试用

家用版

此方案适合家庭使用,进行非商业的文档共享与协作。与企业版不同,它的价格是根据付费类型的用户数量来决定的。您能得到:

  • 管理员/高级用户数量:5

  • 房间数量不限

  • 文本文档、电子表格、演示文稿和表单的在线编辑器

  • PDF阅读器和转换器

  • 移动网页编辑器

  • 桌面和移动应用程序

  • 增强的安全功能

  • 单服务器部署

  • 终身许可

  • 1年更新

立即购买

立即购买

社区版

ONLYOFFICE协作空间-社区版完全免费,可以在自己的网络上使用协作空间的所有功能,最多可有 20 个同时连接。您能得到:

  • 免费的开源解决方案

  • 房间数量不限

  • 文本文档、电子表格、演示文稿和表单的在线编辑器

  • PDF阅读器和转换器

  • 桌面和移动应用程序

  • 增强的安全功能

  • 通过 GitHub 和论坛获得支持

  • 定期更新

立即下载

立即下载

动态打码

视频不是图片,视频是运动变化的,正如我这最终视频,只有视频前多少秒需要打马赛克,之后的都不需要打马赛克,或者别的要打码的视频里面打码的部位随时在移动,那怎么处理?其实很简单,先把视频按照时间分割成多个小视频,需要打马赛克和不需要的,打码后再合并起来就好了。

视频分割和合并也是使用ffmpeg来处理,不涉及转码,不需要重新编译,就仅仅是分割和合并,那么ffmpeg的处理速度就会非常快。

ffmpeg.exe -i Recorded.mp4 -ss 00:00:07 -to 01:38:25 -c copy Clipped.mp4

这是切割视频的命令,ss或to省略的时候默认是头尾。

对于这里的由一个大视频分割成多个小视频处理完后再合并,这个合并的操作时可以免去重新编译的,速度非常快,命令参数是concat和copy:

ffmpeg -i concat:"intermediate1.mpg|intermediate2.mpg" -c copy intermediate_all.mpg

或者可以更简化:

ffmpeg -i "concat:input1.mpg|input2.mpg|input3.mpg" -c copy output.mpg

参考文献

boxblur的官方用法参考

delogo的官方用法参考

overlay的官方用法参考

相关阅读

你还在用U盘和聊天工具来处理文档吗?ONLYOFFICE的协作空间来解决你的痛点了!icon-default.png?t=N6B9https://blog.csdn.net/VincentYoung/article/details/131103779

ONLYOFFICE协作空间是什么?icon-default.png?t=N6B9https://blog.csdn.net/zyy26/article/details/130364276?ops_request_misc=&request_id=&biz_id=102&utm_term=%E5%8D%8F%E4%BD%9C%E7%A9%BA%E9%97%B4&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-130364276.142^v92^control

相关文章:

如何使用ONLYOFFICE+ffmpeg来给视频文件打马赛克

如何使用ONLYOFFICEffmpeg来给视频文件打马赛克 我这里之前写过很多关于ONLYOFFICE使用、安装的系列图文,也写过很多关于ffmpeg使用的图文,那么这次继续,把这两个开源软件放在一起,能碰撞出什么火花般的功能来。 这就是给视频文…...

003-依赖注入、属性赋值源码分析

目录 引入作用代码分析InstantiationAwareBeanPostProcessor#postProcessProperties()AutowiredAnnotationBeanPostProcessor查找注入点元数据给注入点注入属性 引入 之前我们了解到BeanDefinition到Bean,经历了 实例化属性赋值初始化 3个步骤现在详细分析下属性赋…...

Elasticsearch 商业启示

上月的“红帽事件”,说明开源软件的“客服模式”行不通,那么,开源软件如何赚钱呢?既不能卖软件,又不能卖支持服务,该怎么办呢?我现在的看法是,只剩下一种模式是可行的,开…...

C++/Qt 读写文件

之前写过两篇跟文件操作相关的博客,有兴趣也可以看一下: C语言读写文件 Qt关于文件路径的处理 先讲一些关于基础文本文件和二进制文件的读写操作,后续将会整理C/Qt关于ini、xml、json、xlsx相关文件的读写操作。 C 相比于C语言使用FILE文…...

linux服务器之-nethogs命令

文章目录 NetHogs 工具安装安装依赖包安装epel源安装Nethogs 使用 NetHogs 工具 NetHogs是一个小型的net top工具,不像大多数工具那样拖慢每个协议或者是每个子网的速度而是依照进程进行带宽分组。 安装 安装依赖包 yum install libpcap libpcap-devel epel-rel…...

《每天5分钟玩转kubernetes》读书笔记

笔记 概念 Pod是脆弱的,但应用是健壮的。 kubelet运行在Cluster所有节点上,负责启动Pod和容器。kubeadm用于初始化Cluster。kubectl是k8s命令行工具。通过kubectl可以部署和管理应用,查看各种资源,创建、删除和更新各种组件。 …...

【RabbitMQ】golang客户端教程4——路由(使用direct交换器)

路由 在上一教程中,我们构建了一个简单的日志记录系统。我们能够向许多接收者广播日志消息。 在本教程中,我们将向它添加一个特性-我们将使它能够只订阅消息的一个子集。例如,我们将只能将关键错误消息定向到日志文件(以节省磁盘…...

Shell脚本学习-for循环结构2

案例:通过脚本实现仅sshd、rsyslog、crond、network、sysstat服务在开机时自启动。 Linux系统在开机的服务通常工作在文本模式3级别,因此只需要查找3级别以上的开启的服务即可。查看命令: chkconfig --list |grep 3:on [rootvm1 ~]# chkco…...

vue 老项目 npm install 报错Python,c++等相关错误

​​​ 老项目npm install 下载依赖包报错 解决方法: //下载python 1、 npm install --global --production windows-build-tools//配置环境 : 也可暂时不用配置,能用就不用配置(npm config set python "D:\Python27\python.exe&q…...

【c语言初级】c++基础

文章目录 1. C关键字2. 命名空间2.1 命名空间定义2.2 命名空间使用 3. C输入&输出4. 缺省参数4.1 缺省参数概念4.2 缺省参数分类 5. 函数重载5.2 C函数重载的原理--名字修饰采用C语言编译器编译后结果 1. C关键字 C是在C的基础之上,容纳进去了面向对象编程思想…...

idea打开传统eclipse项目

打开传统web项目 1.打开后选择项目文件 2.选择项目结构 3.设置jdk版本 4.导入当前项目模块 5.选择eclipse 6. 设置保存目录 7.右键模块,添加spring和web文件 8. 设置web目录之类的,并且创建打包工具 9.如果有本地lib,添加为库 最后点击应用&…...

全国各城市-财政收入-一般预算收入-各项税收-个人所得税(1999-2020年)

个人所得税是一项反映国家财政状况和个人经济水平的重要数据。通过对全国各城市个人所得税数据的研究,可以提供研究者参考的有益信息。首先,个人所得税数据反映了不同城市居民的收入水平。通过对不同城市的个人所得税数据进行比较,可以了解不…...

【动态网页抓取】 :用Python抓取所有内容的指南

一、说明 您在抓取动态网页内容时是否得到了糟糕的结果?不仅仅是你。对于标准抓取工具来说,爬网动态数据是一项具有挑战性的任务(至少可以说)。这是因为当发出HTTP请求时,响应程序的某些部分JavaScript在后台运行&…...

Spring Boot数据访问基础知识与JDBC简单实现

目录 Spring Boot数据访问基础知识 Spring Data ORM JDBC JPA JDBC简单实现 步骤1:新建Maven项目,添加依赖 步骤2:配置数据源—让程序可以访问到 步骤3:配置数据源—让IDEA可以访问到 步骤4:添加数据库和表 …...

ubuntu添加万能头文件

ubuntu的C头文件目录为/usr/include 在/usr/include下新建文件夹 bits sudo mkdir bits进入bits,新建stdc.h,并修改权限为744/777 cd bits;sudo touch stdc.h;sudo chmod 777 stdc.h将以下内容粘贴到stdc.h,保存退出 // C includes used …...

聊一聊关于前端语法 ?? 的那些事

当我们在编写前端代码时,语法是非常重要的。正确的语法可以确保我们的代码能够正常运行,并且易于维护和理解。在本文中,我们将探讨一些前端语法的问题,例如空值合并运算符(??)。 空值合并运算符是ES2020…...

宝塔Linux面板升级“获取更新包失败”怎么解决?

宝塔Linux面板执行升级命令后失败,提示“获取更新包失败,请稍后更新或联系宝塔运维”如何解决?新手站长分享宝塔面板升级失败的解决方法: 宝塔面板升级失败解决方法 1、使用root账户登录到你的云服务器上,宝塔Linux面…...

训练强化学习的经验回放策略:experience replay

经验回放:Experience Replay(训练DQN的一种策略) 优点:可以重复利用离线经验数据;连续的经验具有相关性,经验回放可以在离线经验BUFFER随机抽样,减少相关性; 超参数:Rep…...

uniapp学习

1 简单的表单校验 <!--uniapp:参考模板和字段生成页面 字段stuNumber 输入框 学号stuName 输入框 学生姓名teacher 输入框 辅导员submitDate 日期选择 填报日期morningTemperature 输入框&#xff08;数字校验一位小数&#xff09; 早上体温noonTemperature 输入框&…...

机器学习深度学习——数值稳定性和模型化参数(详细数学推导)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——Dropout &#x1f4da;订阅专栏&#xff1a;机器学习&&深度学习 希望文章对你们有所帮助 这一部…...

layui 整合UEditor 百度编辑器

layui 整合UEditor 百度编辑器 第一步&#xff1a;下载百度编辑器并配置好路径 百度编辑器下载地址&#xff1a;http://fex.baidu.com/ueditor/ 第二步&#xff1a;引入百度编辑器 代码如下&#xff1a; <div class"layui-form-item layui-form-text"><…...

1、sparkStreaming概述

1、sparkStreaming概述 1.1 SparkStreaming是什么 它是一个可扩展&#xff0c;高吞吐具有容错性的流式计算框架 吞吐量&#xff1a;单位时间内成功传输数据的数量 之前我们接触的spark-core和spark-sql都是处理属于离线批处理任务&#xff0c;数据一般都是在固定位置上&…...

【Spring Boot】Spring Boot 集成 RocketMQ 实现简单的消息发送和消费

文章目录 前言基本概念消息和主题相关发送普通消息 发送顺序消息RocketMQTemplate的API介绍参考资料&#xff1a; 前言 本文主要有以下内容&#xff1a; 简单消息的发送顺序消息的发送RocketMQTemplate的API介绍 环境搭建&#xff1a; RocketMQ的安装教程&#xff1a;在官网…...

uniapp:图片验证码检验问题处理

图形验证码功能实现 uniapp&#xff1a;解决图形验证码问题及利用arraybuffer二进制转base64格式图片&#xff08;后端传的图片数据形式&#xff1a;x00\x10JFIF\x00\x01\x02\x00…&#xff09;_❆VE❆的博客-CSDN博客 UI稿&#xff1a; 需求&#xff1a;向后端请求验证码图片&…...

将Visio和Excel导出成没有白边的PDF文件

1、VISIO如何无白边导出pdf格式 在使用Latex时&#xff0c;要导入矢量图eps格式。但是VISIO无法输出eps格式&#xff0c;这就需要将其导出为pdf。但是导出pdf时&#xff0c;往往会有大量的白边。VISIO无白边导出pdf格式的方法如下&#xff1a; 1.文件——开发工具——显示sha…...

String类及其工具类

一、String类 1.字符串对象 String str new String("hello");String对象是final修饰的&#xff0c;不可修改的&#xff0c;修改后的字符串对象是另外一个对象&#xff0c;只是修改了引用地址。每次创建都会创建一个新的对象。 2. 字面量 String s "hello&…...

踩坑(5)整合kafka 报错 java.net.UnknownHostException: 不知道这样的主机

java.net.UnknownHostException: 不知道这样的主机。 (5c0c3c629db9)at java.base/java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) ~[na:na]at java.base/java.net.InetAddress$PlatformNameService.lookupAllHostAddr(InetAddress.java:933) ~[na:na]at java.ba…...

rust持续学习 get_or_insert_with

通常使用一个值 if(xnull)xsome_valid_value 忽然今天看见一段代码 pub fn get_id() -> u64 { let mut res struct.data.borrow_mut(); *res.get_or_insert_with(||{let mut xx ...... some logiclet id xx.id; id}); }感觉这个名字蛮奇怪的 insert 然后翻了一下代码&a…...

卡尔曼滤波 | Matlab实现无迹kalman滤波仿真

文章目录 效果一览文章概述研究内容程序设计参考资料效果一览 文章概述 卡尔曼滤波 | Matlab实现无迹kalman滤波仿真 研究内容 无迹kalman滤波(UKF)不是采用的将非线性函数线性化的做法。无迹kalman仍然采用的是线性kalman滤波的架构,对于一步预测方程,使用无迹变换(UT)来…...

C++---list常用接口和模拟实现

list---模拟实现 list的简介list函数的使用构造函数迭代器的使用list的capacitylist element accesslist modifiers list的模拟实现构造函数&#xff0c;拷贝构造函数和迭代器begin和endinsert和eraseclear和析构函数 源码 list的简介 list是用双向带头联表实现的一个容器&…...