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

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

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

相关文章

Linux虚拟机中安装MySQL5.6.34

目录 第一章、xshell工具和xftp的使用1.1)xshell下载与安装1.2)xshell连接1.3)xftp下载安装和连接 第二章、安装MySQL5.6.34(不同版本安装方式不同)2.1)关闭防火墙,传输MySQL压缩包到Linux虚拟机2.2&#x…

熟练掌握ChatGPT解决复杂问题——学会提问

目录 引言 一、5W1H分析法 1. 简单的问题(what、where、when、who) 2.复杂的问题(why、how) 2.1 为什么(Why)——原因 2.2 方式 (How)——如何 二、如何提问得到更高质量的答案…

(自控原理)线性系统的根轨迹法

目录 一、根轨迹法的基本概念 1、根轨迹概念 2、根轨迹方程 二、根轨迹绘制的基本法则 1、绘制根轨迹基本法则 三、系统性能的分析 1、闭环零点与时间响应 一、根轨迹法的基本概念 1、根轨迹概念 三大分析矫正方法:时域法、复域法(根轨迹法)、频域法 2、根…

Jmeter组件作用域及执行顺序

目录 一、Jmeter八大可执行元件 二、组件执行顺序 三、组件作用域 四、特殊说明 一、Jmeter八大可执行元件 配置元件---Config Element 用于初始化默认值和变量,以便后续采样器使用。配置元件大其作用域的初始阶段处理,配置元件仅对其所在的测试树分…

Screens 4 for mac VNC客户端 强大的远程控制工具

Screens 4 for Mac 是一款功能强大的 VNC 客户端软件,为 Mac 用户提供了便捷的远程访问和控制解决方案。无论您是需要远程管理服务器、办公电脑,还是需要远程协助他人解决问题,Screens 4 都是您的理想选择。 Screens 4 for Mac具备简洁直观的…

elasticsearch 将时间类型为时间戳保存格式的时间字段格式化返回

dsl查询用法如下: GET /your_index/_search {"_source": {"includes": ["timestamp", // Include the timestamp field in the search results// Other fields you want to include],"excludes": []},"query": …

使用 Simulink 进行 STM32 编程

目录 介绍 所需材料 步骤 1:在MATLAB中设置STM32-MAT软件路径步骤 2:在STM32CubeMX中创建一个项目步骤 3:配置时钟和 GPIO 引脚步骤 4:项目经理并生成代码步骤 5:在 Simulink 中创建模型步骤 6:在模型中插…

leetcode每日一练-第88题-合并两个有序数组

一、解题方法 先合并&#xff0c;再排序 二、code class Solution { public:void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {for(int i0;i<n;i){nums1[mi]nums2[i];//将 nums2 中的元素逐个复制到 nums1 的尾部}sort(nums1.beg…

路由器工作原理(第二十九课)

路由器工作原理(第二十九课) 一图胜过千言 1) 路由:数据从一个网络到另外一个网络之间转发数据包的过程称为路由 2) 路由器:连接不同网络,实现不同网段之间的通信 3)路由表:路由器选择数据的传输路径的依据 原始的路由表 Destination/Mask Proto Pre Cost …

使用ngrok实现内网穿透

前言&#xff1a;因为公司对接的某个项目要搭建一个测试环境&#xff0c;所以使用内网穿透的方式来搭建。非常方便&#xff0c;而且还节省资源&#xff0c;最重要的是免费啊这个工具。 ngrok官网&#xff1a;https://ngrok.com/ 点击下载&#xff0c;很快就能下好。 下好之…

【排序算法】python之冒泡,选择,插入,快速,归并

参考资料&#xff1a; 《Python实现5大排序算法》《六大排序算法&#xff1a;插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序》 --代码似乎是C语言 ———————— 本文介绍5种常见的排序算法和基于Python实现&#xff1a; 冒泡排序&#xff08;Bubble Sort&am…

【机器学习】对 MLOps 的友好的介绍(MLOps1)

一、说明 我对 MLOps 感兴趣已经有一段时间了。我第一次从机器学习工程师那里了解到它&#xff0c;由于我当时还是一名博士生&#xff0c;我并不知道它的存在。然而&#xff0c;我的好奇心被激起了&#xff0c;我开始了解它。回想起来&#xff0c;我很后悔没有早点了解它&#…

iOS——锁与死锁问题

iOS中的锁 什么是锁锁的分类互斥锁1. synchronized2. NSLock3. pthread 递归锁1. NSRecursiveLock2. pthread 信号量Semaphore1. dispatch_semaphore_t2. pthread 条件锁1. NSCodition2. NSCoditionLock3. POSIX Conditions 分布式锁NSDistributedLock 读写锁1. dispatch_barri…

css实现卡片的左上角有一个三角形的遮盖效果

需求: 卡片的左上角有一个绿色的三角形标签,用来区分状态 实现: .vCard{position: relative;overflow: hidden; } .vCard::before {content: "";position: absolute;top: 0;left: 0;width: 0;height: 0;border-bottom: 20px solid transparent;border-left: 20px …

Ariadne’s Thread-使用文本提示改进对感染区域的分割胸部x线图像

论文&#xff1a;https://arxiv.org/abs/2307.03942&#xff0c; Miccai 2023 代码&#xff1a;GitHub - Junelin2333/LanGuideMedSeg-MICCAI2023: Pytorch code of MICCAI 2023 Paper-Ariadne’s Thread : Using Text Prompts to Improve Segmentation of Infected Areas fro…

2、Tomcat介绍(下)

组件分类 在Apache Tomcat中&#xff0c;有几个顶级组件&#xff0c;它们是Tomcat的核心组件&#xff0c;负责整个服务器的运行和管理。这些顶级组件包括&#xff1a; Server(服务器)&#xff1a;Tomcat的server.xml配置文件中的<Server>元素代表整个Tomcat服务器实例。每…

vmware网络配置

效果&#xff1a; 虚拟机和物理机网络互通&#xff1b; 虚拟机可以上外网 环境&#xff1a; vmware version 17.0.0 Centos 7.9 配置 1&#xff0c;vmware 菜单 - 编辑 - Virtual Network Edit 2&#xff0c; 选择VMnet8 VMnet information:NAT&#xff1b; 勾选2个…

运输层---概述

目录 运输层主要内容一.概述和传输层服务1.1 概述1.2 传输服务和协议1.3 传输层 vs. 网络层1.4 Internet传输层协议 二. 多路复用与多路分解&#xff08;解复用&#xff09;2.1 概述2.2 无连接与面向连接的多路分解&#xff08;解复用&#xff09;2.3面向连接的多路复用*2.4 We…

Html5播放器按钮在移动端变小的问题解决方法

Html5播放器按钮在移动端变小的问题解决方法 用手机浏览器打开酷播云视频&#xff0c;有时会出现播放器按钮太小的情况&#xff0c;此时只需在<head>中加入下面这段代码即可解决&#xff1a; <meta name"viewport" content"widthdevice-width, initia…

c语言指针的运算

1、通过指针计算数组的元素&#xff08;指针相减&#xff0c;类型需要一致&#xff09;&#xff0c;比如数组元素指针相减得到的是中间相差的元素个数&#xff0c;可以用于计算数组元素的个数等 #include "stdio.h" #include <stdlib.h>int main() {int a[10]…