TypeError: 'module' object is not callable错误信息是比较常遇到的,就是没有找到这个模块。
但是对于已经导入VideoFileClip,在VideoFileClip(').resize(size)这种写法下,pycharm是正常可以运行的,但是打包exe就会报错了。
我用python写了一个视频合成,并且实现画中画播放,但要规定画中画视频的尺寸和位置,从网上复制了一段代码,用的挺好。
clip2 = VideoFileClip(lujing).resize(size).set_position((0, 635))
VideoFileClip(lujing).resize(size)的作用是可以改变视频尺寸,python环境里执行没有问题,但是打包的时候就提示TypeError: 'module' object is not callable。
具体原因定位到resize()函数,pycharm提示将resize这个放到VideoFileClip类里,但是我不会写啊,没办法去网上查信息,但是查不到解决办法。无奈之下就继续翻看VideoFileClip()参数,结果发现本身它的参数里面有一个就可以改变视频尺寸的大小。具体试了试程序,果然可行。
其实没有必要用resize()来改变尺寸了,VideoFileClip()里有个target_resolution参数,就是定义尺寸的,而且视频处理效率还高。所以我换成下边的写法,再打包一切正常了。
clip2 = VideoFileClip(lujing, target_resolution=size).set_position((x, y))
resize()的参数是宽和高,target_resolution确相反,是高和宽,大家使用的时候注意下。
另外单个视频处理我导入的是import cv2,做这个画中画视频是复制的网络代码,导入的是
from moviepy.editor import VideoFileClip, AudioFileClip,CompositeVideoClip
用来合成音视频。
具体cv2和movipy都能实现哪些功能,我也没细看,我只要实现我的功能就行了。
感觉python虽然灵活,但也太灵活了,很多没个标准,相似库太多,爱用哪个用哪个,如果仅参考网络,很多地方都是坑啊。