ffmpeg第五篇:让水印图片旋转起来
这篇把上次挖的坑填上
ffmpeg正式篇的上一篇(传送门)说了,这一篇要让水印旋转起来,但是后面有事情一直没有时间搞,今天,它来了............
如果想实现旋转的功能,需要使用ffmpeg过滤器的链式功能,即:先把作为水印的图片旋转,再覆盖到视频上
第一步,实现旋转功能,具体的命令如下:
ffmpeg -i buck.mp4 -i s1.jpg -lavfi "[1:v]rotate=PI/6:c=none[out];[0:v][out]overlay=10:10" out.mp4 -y
而实际出来的效果如下:
可以看到,旋转功能已经实现了,但是却有两个问题:
- 由于图片是长方形的,旋转后图片丢失了部分
- 图片移走的部分是绿色的,完全无法直视
第二步:解决上面的两个问题,具体命令如下:
ffmpeg -i buck.mp4 -i s1.jpg -lavfi "[1:v]format=rgba,rotate='PI/6:c=0x00000000:ow=hypot(iw,ih):oh=ow'[out];[0:v][out]overlay=10:10" out.mp4 -y
思路是:
- 调整水印宽高,根据勾股定律计算图片对角长度(
hypot
),将这个值设置为水印的宽高,这样,图片无论如何旋转,都不会超过设定的宽高,也就不会出现图片部分丢失的情况了 - 将图片显示的像素格式转换为rgba格式,如果做过前端的小伙伴会很熟悉的,最后的a表示透明度,如此一来,
c=0x00000000
的作用就是将图片旋转后的背景变为白色且完全透明,这样就不会遮挡视频了
第三步:让旋转停不下来,具体命令如下:
ffmpeg -i buck.mp4 -loop 1 -i s1.jpg -lavfi "[1:v]format=rgba,rotate='PI/2*t:c=0x00000000:ow=hypot(iw,ih):oh=ow'[out];[0:v][out]overlay=10:10" -shortest out.mp4 -y
细心的小伙伴会发现,这次水印图片前面添加了-loop 1
参数,具体为什么要添加相信看过第四篇(传送门)的小伙伴想必已经知道了,这里再重复一遍:因为水印图片默认在播放一次后就停下来,保留最后一帧,所以要让水印图片保持循环才行
小作业:让水印位置也随着时间动起来?
有问题请留言沟通,欢迎转载,转载请注明出处
欢迎点击个人博客地址:暖宝宝官方认证铲屎官
最新文章
- 本周进步要点20161023(含李笑来第二场live笔记要点)
- monkeyrunner 自动化测试 图片对比的实现
- objective-c(协议)
- Python文件操作题
- 关于jquery on方法进行事件绑定触发次数指数叠加的问题
- 【BZOJ】【2661】【Beijing WC2012】连连看
- HDU 5353 Average 糖果分配(模拟,图)
- Linux 锁
- 微软Azure 存储管理器的简单介绍
- Android中Chronometer 计时器和震动服务控件
- curl抓取信息
- MongoDB 副本集管理
- pc蛋蛋app开发定制
- 微信小程序与webview交互实现支付
- npm修改淘宝原
- Spring Cloud微服务笔记(三)服务治理:Spring Cloud Eureka快速入门
- Testing - 软件测试知识梳理 - 测试方法
- Java中CAS详解
- HDU 3455
- mac下svn无法上传.a文件的问题
热门文章
- Cookie 政策
- git 强制提交 &; 覆盖 origin/master
- 「NGK每日快讯」2021.1.4日NGK第62期官方快讯!
- CodeMirror动态修改代码(关键: editor.getDoc().setValue(data); editor.refresh();)
- JDK环境解析,安装和目的
- 哪些原因会导致JAVA进程退出?
- C# 类中操作主窗体控件
- ElementUI使用总结
- C++ folly库解读(二) small_vector —— 小数据集下的std::vector替代方案
- HDOJ-1213(简单并查集)