☞ ░ 前往老猿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應用》。