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