moviepy音视频剪辑VideoClip类to_mask方法、to_RGB、afx方法

☞ ░ 前往老猿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详解》(付费专栏文章,但内容更全、案例更多)。

更多moviepy的介绍请参考《PyQt+moviepy音视频剪辑实战文章目录》或《专栏:使用PyQt开发图形界面Python应用》。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章