? ? 前往老猿Python博客 https://blog.csdn.net/LaoYuanPython ?
一、引言
在《moviepy音視頻剪輯:mask clip遮罩剪輯、遮片、蒙版的作用以及其包含的構成內容》中介紹:“mask遮罩是一種只有灰度值的像素構成的幀組成的剪輯,其作用就是在帶mask的剪輯與其他剪輯合成時確認是否顯示帶mask剪輯的對應像素,”
本文實作一個使用mask遮罩剪輯實作疊加視頻的透明效果,
二、程式實作
本案例實作一個可以在視頻上面疊加一個旋轉視頻或旋轉圖片的通用方法,支持兩個內容大小不同的視頻疊加,為了支持疊加物件為圖片,需要將圖片轉換成視頻,為了盡可能突出圖片的表達內容,在將圖片轉視頻前將圖片的背景色轉換為黑色,
相關程式包括如下函式:
- ridPicBackground:去掉圖片背景色,被convertPicToVideo呼叫
- convertPicToVideo:將圖片轉成視頻,被videoOverlyObjMask呼叫
- videoOverlyObjMask:將視頻和疊加物件疊加
上述函式中關鍵函式為videoOverlyObjMask,這個函式是視頻旋轉并疊加的主程式代碼,相關程式代碼如下:
def videoOverlyObjMask(videoFName,objType='self',obj=None):
"""
剪輯自身疊加一個該剪輯旋轉的層,旋轉層帶自身轉換的遮罩剪輯
:param videoFName: 剪輯來源視頻檔案
:return: 引數視頻剪輯自身疊加一個該剪輯旋轉層剪輯
"""
clip = VideoFileClip(videoFName, audio=True)
objClip = clip
if objType == 'img':
objClip = convertPicToVideo(obj, duration=clip.duration, createMask=False).set_fps(clip.fps)
elif objType == 'video':
if isinstance(obj, str):
objClip = VideoFileClip(obj, audio=False)
else:
objClip = obj
rotateClip = objClip.rotate(angleF,expand=True).fx(vfx.resize,clip.size)
maskclip = rotateClip.to_mask()
rotateClip = rotateClip.set_mask(maskclip)
clipVideo = CompositeVideoClip([clip, rotateClip])
return clipVideo
if __name__=='__main__':
#實作剪輯和自身旋轉剪輯疊加
result2 = videoOverlyObjMask(r"F:\video\WinBasedWorkHard_src.mp4")
result2.write_videofile(r"F:\video\WinBasedWorkHard_mask_self.mp4", threads=8)
#實作剪輯和圖片構造的旋轉剪輯疊加
result3 = videoOverlyObjMask(r"F:\video\WinBasedWorkHard_src.mp4",'img',r'F:\pic\Lotus.JPG')
result3.write_videofile(r"F:\video\WinBasedWorkHard_mask_pic.mp4", threads=8)
#實作剪輯和另一個旋轉剪輯疊加
result4 = videoOverlyObjMask(r"F:\video\mydream.mp4", 'video',r"F:\video\WinBasedWorkHard_src.mp4")
result4.write_videofile(r"F:\video\WinBasedWorkHard_mask_video.mp4", threads=8)
為了與付費專欄的文章有所差別,其他次要函式在此就不提供代碼了,本文對應的付費專欄文章為《moviepy音視頻剪輯:使用mask遮罩剪輯實作疊加透明效果詳解》,
三、案例效果
3.1、相關素材介紹
- WinBasedWorkHard_src.mp4:周星馳的“愛拼才會贏”MV抖音視頻
- mydream.mp4:張靚穎的“我的夢”抖音視頻
- Lotus.jpg:荷花圖片

3.2、剪輯和自身旋轉剪輯疊加效果

3.3、視頻和圖片構造的旋轉剪輯疊加

3.4、剪輯和另一個旋轉剪輯疊加效果

四、小結
本文介紹了通過moviepy設定mask遮罩的剪輯和另外的剪輯疊加后實作上層剪輯和下層剪輯疊加后,上層剪輯背景色部分被下層剪輯內容所呈現替代的方案,通過該實作案例的介紹,可以理解遮罩剪輯的作用,并在多個剪輯制作特效中使用該方法制作視頻特效,
如果覺得本文可以,老猿請大家幫忙點個贊、加個收藏,謝謝!
更多moviepy的介紹請參考《PyQt+moviepy音視頻剪輯實戰文章目錄》或《moviepy音視頻開發專欄》,這2個專欄內容的導讀請參考《Python音視頻剪輯庫MoviePy1.0.3中文教程導覽及可執行工具下載》,
本文對應的付費專欄文章為《moviepy音視頻剪輯:使用mask遮罩剪輯實作疊加透明效果詳解》,
關于老猿的付費專欄
老猿的付費專欄《使用PyQt開發圖形界面Python應用 https://blog.csdn.net/laoyuanpython/category_9607725.html》專門介紹基于Python的PyQt圖形界面開發基礎教程,付費專欄《moviepy音視頻開發專欄 https://blog.csdn.net/laoyuanpython/category_10232926.html》詳細介紹moviepy音視頻剪輯合成處理的類相關方法及使用相關方法進行相關剪輯合成場景的處理,都適合有一定Python基礎但無相關知識的小白讀者學習,這2個付費專欄都有對應免費專欄,只是收費專欄的文章介紹更具體、內容更深入、案例更多,
付費專欄文章目錄:《moviepy音視頻開發專欄文章目錄》、《使用PyQt開發圖形界面Python應用專欄目錄》,
關于Moviepy音視頻開發的內容,請大家參考《Python音視頻剪輯庫MoviePy1.0.3中文教程導覽及可執行工具下載》的導覽式介紹,
對于缺乏Python基礎的同仁,可以通過老猿的免費專欄《專欄:Python基礎教程目錄 https://blog.csdn.net/laoyuanpython/category_9831699.html》從零開始學習Python,
如果有興趣也愿意支持老猿的讀者,歡迎購買付費專欄,

跟老猿學Python!
? ? 前往老猿Python博文目錄 https://blog.csdn.net/LaoYuanPython/article/details/98245036 ?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/188498.html
標籤:其他
上一篇:1到100求和的三種寫法
