如何使用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

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

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

相关文章

【C#学习笔记】内存管理

文章目录 分配内存释放内存GC标记清除算法分代算法 .NET的GC机制有这样两个问题: 官方文档 自动内存管理 自动内存管理是CLR在托管执行过程中提供的服务之一。 公共语言运行时的垃圾回收器为应用程序管理内存的分配和释放。 对开发人员而言,这就意味着…

凯迪正大—SF6泄漏报警装置的主要特点

SF6泄漏报警系统主要特点 ① 系统采用声速原理,可定量、实时在线测量SF6泄漏气体含量,克服了传统测量方法如负电晕放电法和卤素传感器法只能定性判别是否越限的缺陷,能够准确得到气体中SF6含量。 ② 系统采用双差分处理方法,有效…

软件测试需求分析的常用方法

软件测试需求分析时,应要求产品人员对需求进行讲解,并使用相对应的方法进行科学分析,否则无法保障软件测试的完整性和科学性,从而造成在项目中后期Bug频出、风险增大等问题。 而常用的测试需求分析的方法: 1、功能分解…

设计图一般都用什么工具制作?

每个设计师都需要设计图制作软件对设计图软件的选择也有一些需求,可以提高一些效率。网上有很多免费的PC设计软件。本文推荐了2023年5款易用的设计图制作软件 1.即时设计 即时设计是一款免费的在线 UI 设计工具,无系统限制,浏览器打开即可使…

【Leetcode刷题】模拟

本篇文章为 LeetCode 模拟模块的刷题笔记,仅供参考。 目录 一. 字符串Leetcode43.字符串相乘Leetcode592.分数加减运算Leetcode68.文本左右对齐 二. 矩阵Leetcode54.螺旋矩阵Leetcode885.螺旋矩阵 IIILeetcode498.对角线遍历Leetcode874.模拟行走机器人 三. 数组Lee…

淘宝店铺数据API接口 店铺详情数据API 店铺所有商品API接口

引言 在电商平台上,店铺所有商品API接口是一项非常重要且有着广泛应用的技术。它使得开发者能够方便地获取和管理店铺中的所有商品信息,进而实现自动化的商品管理和数据分析。本文将详细介绍店铺所有商品API接口的定义、功能以及调用流程,并附…

idea打开传统eclipse项目

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

掌握 JVM 的参数及配置

点击下方关注我,然后右上角点击...“设为星标”,就能第一时间收到更新推送啦~~~ JVM(Java虚拟机)是Java编程语言的核心组件之一,它负责执行Java程序,并提供一系列参数和配置选项,可以调整Java程…

决策树与随机森林

目录 决策树是:Why:How:基本概念决策树生成举例决策树缺点参考 Demo 随机森林1.是:2.Why:3.How:参考 Demo 决策树 是: 1.一种有监督的分类(或预测)算法。 2.利用属性、…

Ubuntu安装MySQL 8.0与Navicat

目录 Ubuntu安装MySQL 8.0 1、更新软件包列表 2、安装 MySQL 8.0 3、启动 MySQL 服务 5、确保MySQL服务器正在运行 5、root 用户的密码 6、登录MySQL,输入mysql密码 7、MySQL默认位置 Ubuntu安装Navicat 1、下载 Navicat 2、额外的软件包 3、执行命令 U…

10分钟理解React生命周期

前言 学习React,生命周期很重要,我们了解完生命周期的各个组件,对写高性能组件会有很大的帮助。 一、简介 React /riˈkt/ 组件的生命周期指的是组件从创建到销毁过程中所经历的一系列方法调用。这些方法可以让我们在不同的时刻执行特定的…

uniapp自定义头部导航栏

有时我们需要一些特殊的头部导航栏页面,取消传统的导航栏,来增加页面的美观度。 下面我就教大家如何配置: 一、效果图 二、实现 首先在uniapp中打开pages.json配置文件,在单个路由配置style里面设置导航栏样式​​​​​​nav…

【计算机网络】NAT技术

文章目录 1. NAT技术简介2. 使用NAT技术转换IP的过程3. NAPT4. NAT技术的缺陷5. NAT和代理服务器 1. NAT技术简介 NAT(Network Address Translation,网络地址转换)技术,是解决IP地址不足的主要手段,并且能够有效避免外…

网络安全 Day26-PHP 简单学习

PHP 简单学习 1. 为什么要学习PHP2. PHP语法3. php 变量4. 字符串数据5. PHP 函数6. 数组 1. 为什么要学习PHP php存量多开源软件多很多安全流程 渗透方法 sql注入基于PHP语言入门简单 2. PHP语法 格式: <?php 内容?>或<?内容?>结尾分号例子<?php phpin…

[Docker实现测试部署CI/CD----自由风格的CI操作[最终架构](5)]

目录 11、自由风格的CI操作&#xff08;最终&#xff09;Jenkins容器化实现方案修改 docker.sock 权限修改 Jenkins 启动命令后重启 Jenkins构建镜像推送到Harbor修改 daemon.json 文件Jenkins 删除构建后操作Jenkins 添加 shell 命令重新构建 Jenkins通知目标服务器拉取镜像目…

【TypeScript】中定义与使用 Class 类的解读理解

目录 类的概念类的继承 &#xff1a;类的存取器&#xff1a;类的静态方法与静态属性&#xff1a;类的修饰符&#xff1a;参数属性&#xff1a;抽象类&#xff1a;类的类型: 总结&#xff1a; 类的概念 类是用于创建对象的模板。他们用代码封装数据以处理该数据。JavaScript 中的…

ChatGPT“侵入”校园,教学评价体制受冲击,需作出调整

北密歇根大学的教授奥曼在学生作业中发现了一篇关于世界宗教的“完美论文”。“这篇文章写得比大多数学生都要好......好到不符合我对学生的预期&#xff01;”他去问ChatGPT&#xff1a;“这是你写的吗&#xff1f;”ChatGPT回答&#xff1a;“99.9%的概率是的。” ChatGPT“侵…

Python入门三

目录&#xff1a; 内置库os内置库sys内置库文件处理内置库科学计算内置库日期与时间处理内置库json内置库正则表达式re内置库多线程threding内置库pythonlogging内置库pythonlogging高级使用venv环境管理pip环境管理常用第三方库yaml常用第三方库pymysql常用第三方库urllib3学…

【微信小程序创作之路】- 小程序远程数据请求、获取个人信息

【微信小程序创作之路】- 小程序远程数据请求、获取个人信息 第七章 小程序远程数据请求、获取个人信息 文章目录 【微信小程序创作之路】- 小程序远程数据请求、获取个人信息前言一、远程数据请求1.本地环境2.正式域名 二、获取用户个人信息1.展示当前用户的身份信息2.获取用…

启动RocketMQ报错

说明&#xff1a;启动RocketMQ消费者时&#xff0c;报以下错误&#xff1a;java.lang.IllegalStateException&#xff1a;Failed to start RocketMQ push consumer. 解决&#xff1a;看下所有的监听器类&#xff0c;检查是不是有相同的消费者组名&#xff0c;注释掉其中一个即可…