moviepy音视频剪辑:使用rotate函数实现视频变换处理以及参数expand取值为True时的花屏问题解决方案
☞ ░ 前往老猿Python博文目录 ░
一、rotate函数功能介绍
moviepy的rotate函数用于将剪辑逆时针旋转指定的角度或弧度。
调用语法:rotate(clip, angle, unit="deg", resample="bicubic", expand=True)
参数说明:
angle:一个代表角度或弧度的数值或者是一个返回二者数值的与时间线相关的函数(带一个参数t)
unit:用于确认angle值对应弧度还是角度,如果是角度为“deg”,否则为“rad”,弧度和角度的换算关系为:1°=(360/2πr),其中r为半径
resample:图像重采样的算法,缺省为‘bicubic’,可以取值范围包括"nearest", “bilinear”, or “bicubic”
注:图像处理从形式上来说主要包括两个方面:1 单像素或者邻域像素的处理,比如影像的相加或者滤波运算等;2 图像几何空间变换,如图像的重采样,配准等。常用的重采样算法主要包括以下三种:1 最近邻nearest;2 双线性bilinear;3 三次卷积bicubic。expand:如果为True,会自动扩展每帧剪辑的大小以容纳旋转后的所有图像内容,确保所有图像信息不丢失,否则每帧大小保持和原剪辑一致,新剪辑也与原剪辑一样大小,超出剪辑大小部分的内容将被裁减
二、expand为True时的花屏处理
如果expand为True,由于不同旋转角度超出原剪辑的范围不同,会导致不同时刻返回的帧大小不一致,这样可能导致播放时花屏,为了解决该问题,建议将剪辑resize到高和宽都与原剪辑的对角线长度相同,这样就不会花屏。或者就设置expand=False。
三、 案例:
下面的案例随时间线变换旋转不同的角度,且将剪辑的的高和宽度调整为原剪辑对角线的大小,剪辑的画面内容不会丢失,旋转角度由angleF函数确认
def angleF(t):
ret = (10*int(t))%360
return ret*-1
if __name__=='__main__':
clip = VideoFileClip(r"F:\video\WinBasedWorkHard_src.mp4",audio=False).crop(0, 300, 540, 840)
newclip = clip.rotate(angleF,expand=True).fx(vfx.resize,(764,764))
print(clip.size,newclip.size)
newclip.write_videofile(r"F:\video\WinBasedWorkHard_rotate.mp4", threads=8)
三个不同播放时刻的截图:



更多moviepy的介绍请参考《PyQt+moviepy音视频剪辑实战文章目录》或《moviepy音视频开发专栏》。
关于收费专栏
老猿的付费专栏《使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,付费专栏《moviepy音视频开发专栏》详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,两个专栏加起来只需要19.9元,都适合有一定Python基础但无相关专利知识的小白读者学习。
对于缺乏Python基础的同仁,可以通过老猿的免费专栏《专栏:Python基础教程目录》从零开始学习Python。
如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。
☞ ░ 前往老猿Python博文目录 ░
moviepy音视频剪辑:使用rotate函数实现视频变换处理以及参数expand取值为True时的花屏问题解决方案的更多相关文章
- moviepy音视频剪辑:headblur函数遇到的ValueError assignment destination is read-only问题及解决办法
☞ ░ 前往老猿Python博文目录 ░ 一.运行环境 运行环境如下: python版本:3.7 opencv-python版本:4.2.0.34 numpy版本:1.19.0 二.错误案例代码及报错 ...
- moviepy音视频剪辑:headblur函数遇到的TypeError: integer argument expected, got float错误的解决方案
运行环境如下: python版本:3.7 opencv-python版本:4.2.0.34 numpy版本:1.19.0 错误信息: 在调用moviepy1.03版本的headblur函数执行人脸跟踪 ...
- PyQt+moviepy音视频剪辑实战1:多视频合成顺序播放或同屏播放的视频文件
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.引言 在<moviepy音视频剪辑:音视 ...
- Python函数或者类的时间参数的默认值设为datetime.date.today()引起的问题
定义了函数def main(start_date=datetime.date.today(), end_date=datetime.date.today()): pass 函数在项目启动后, end_ ...
- PyQt+moviepy音视频剪辑实战文章目录
☞ ░ 前往老猿Python博文目录 ░ 本专栏为moviepy音视频剪辑合成相关内容介绍的免费专栏,对应的收费专栏为<moviepy音视频开发专栏>. 一.moviepy基础能力系统介绍 ...
- moviepy音视频剪辑:与time时间线相关的变换函数freeze_region、make_loopable、speedx、time_mirror、time_symmetrize介绍
☞ ░ 前往老猿Python博文目录 ░ 一.引言 在<moviepy音视频剪辑:moviepy中的剪辑基类Clip详解>介绍了剪辑基类的fl.fl_time.fx方法,在<movi ...
- moviepy音视频剪辑:视频基类VideoClip子类DataVideoClip、UpdatedVideoClip、ImageClip、ColorClip、TextClip类详解
☞ ░ 前往老猿Python博文目录 ░ 一.概述 在<moviepy音视频剪辑:moviepy中的剪辑相关类及关系>介绍了剪辑相关类及关系,其中VideoClip有多个直接子类和间接子类 ...
- moviepy音视频剪辑:视频剪辑基类VideoClip的属性及方法详解
☞ ░ 前往老猿Python博文目录 ░ 一.概述 在<moviepy音视频剪辑:moviepy中的剪辑基类Clip详解>和<moviepy音视频剪辑:moviepy中的剪辑基类Cl ...
- moviepy音视频剪辑VideoClip类set_position方法pos参数的使用方法及作用
☞ ░ 前往老猿Python博文目录 ░ moviepy音视频剪辑VideoClip类set_position方法用于多个剪辑合成一个剪辑时设置调用剪辑实例的拷贝在合成剪辑的位置. 调用语法: set ...
随机推荐
- 重磅解读:K8s Cluster Autoscaler模块及对应华为云插件Deep Dive
摘要:本文将解密K8s Cluster Autoscaler模块的架构和代码的Deep Dive,及K8s Cluster Autoscaler 华为云插件. 背景信息 基于业务团队(Cloud BU ...
- Pycharm激活码(2020最新永久激活码)
如果下边的Pycharm激活码过期失效了的话,大家可以关注我的微信公众号:Python联盟,然后回复"激活码"即可获取最新Pycharm永久激活码! 56NPDDVEIV-eyJs ...
- HTML生成横向的PDF
HTML生成PDF请参照:https://www.cnblogs.com/yunfeiyang-88/p/10984740.html 如要生成横向的PDF:在html模板的style标签里面加入@pa ...
- SU+GIS,让SketchUp模型在地图上活起来
一.SU+GIS的场景展示 skp与卫星地图和倾斜摄影模型相结合人工模型与实景模型完美融合 这么一看是不是直接秒杀了单纯看看skp后联想的规划效果? 二.如何快速把草图大师的结果和GIS结合呢?在图新 ...
- gdb调试入门(下)
GDB调试主要包括: 1.查看运行时数据 2.程序错误 3.gdb调试逻辑错误 4.gdb调试段错误 5.core文件调试 一.查看运行时数据 1.print 查看变量值 2.ptype 变量: 查看 ...
- fork函数拓展
1.fork之后父子进程共享文件:文件引用计数的值改变,共享偏移. 在下面的例子中test.txt为parentchil.如果子进程没有睡眠,两个进程交叉执行,内容不可预测. 1 #include&l ...
- python之路《模块》
1.time模块 FUNCTIONS asctime(...) asctime([tuple]) -> string Convert a time tuple to a string, e.g. ...
- 服务和进程管理及查看分区和cpu
查看分区:cat /proc/partitions [root@lbg init.d]# cat /proc/partitions major minor #blocks name ...
- Spring Cloud注册中心之Consul
Consul简介 Consul是HashiCorp公司使用Golang语言开发的一中多服务解决方案工具,相比于其他服务注册中心来说,Consul的功能更为强大,丰富,其中最基本的功能包含下面几点(翻译 ...
- 【VUE】3.表单操作
1. Form组件渲染 1. components -> 新增组件Form.vue <template> <div>表单验证</div> </templ ...