☞☞ ░ 前往老猿前往老猿Python博文目录博文目录 ░
moviepy音视频剪辑VideoClip类to_mask方法和to_RGB方法用于进行剪辑内容变换。
1、、to_mask方法方法
to_mask方法返回一个由调用者剪辑实例构建的遮罩剪辑。
调用语法:调用语法:
to_mask(self, canal=0)
说明:说明:
to_mask方法用于将当前剪辑生成一个遮罩剪辑,处理时如果调用对象本身有遮罩,则直接返回调用剪辑的遮罩,
否则根据调用剪辑的数据生成遮罩数据,生成时是将调用剪辑的每一帧数据的具体像素的YUV值中的某个除以255
来实现遮罩的效果,具体对YUV哪个数据进行处理由参数canal指定,0代码Y值、1代表U值、2代表V值。
2、、to_RGB方法方法
返回一个由遮罩剪辑生成的非遮罩剪辑。
调用语法:调用语法:
to_RGB(self)
说明:说明:
该方法的处理过程是,如果调用剪辑不是遮罩,则直接返回自身,否则将剪辑的帧像素YUV各乘以255,再将每个
像素的YUV三元组变成一个九元组,其元素是YUV值重复3遍。
这样变换的原因老猿并不十分清楚,查阅了一些资料,估计是因为YUV到RGB并不是简单YUV到RGB的一个转
换,而是到24位真彩色的转换,因为一般来说直接采集到的视频数据是RGB24的格式,其位数是YUV的三倍,当
RGB24变为YUV时其实是进行了降色处理,现在要恢复到RGB24因此需要进行乘以3。
但这里有些原理没说清楚,比如RGB24是用三个字节来表示颜色,YUV在这里也用了三个字节,RGB为什么变成
了9个字节?这个问题一时无解,先留着。
另外这个方法在moviepy中只是对遮罩进行处理,当带遮罩的剪辑输出到文件或将剪辑的帧保存到图像或gif文件时
会调用该方法对剪辑的遮罩进行处理。
3、、afx方法方法
afx方法对原剪辑浅拷贝后的拷贝剪辑的声音进行变换,返回新剪辑。
调用语法:调用语法:
afx(self, fun, *a, **k)
说明:说明:
声音变换由函数fun进行
a和k是fun变换函数需要带的可变参数和关键字参数
afx实际上是调用父类Clip的fx方法去执行fun函数的
更多关于VideoClip的属性和方法请参考《moviepy音视频剪辑:视频剪辑基类VideoClip的属性及方法详解》(免
费文章)或《moviepy音视频剪辑:视频剪辑基类VideoClip详解》(付费专栏文章,但内容更全、案例更多)。