python 利用moviepy覆盖视频中某区域画面

处理视频时,会遇到想要遮住某一区域的问题,比如去除视频中的logo,二维码,某一段时间出现的场景等等......

 方法一、利用ColorClip成颜色块覆盖

def hide(src, dst):
    video = VideoFileClip(video_src)
    mask = (ColorClip((220, 200), (255, 255, 255))
            .set_positon((1300, 500))
            .set_duration(video.duration)
            )
    CompositeVideoClip([video, mask]).write_videofile(dst)

src:原视频地址

dst:修改后生成新视频地址

(220,200):生成颜色块的大小220*200

(255,255,255):白色,RGB

.set_positon((1300, 500)): 将颜色块放在需要覆盖的位置(1300,500)
.set_duration(video.duration):video.duration是原视频的时长。将颜色块放置的时长设置为视频时长,这样整个视频过程中指定画面都被覆盖。也可以指定具体的时间段,如:

.set_start(start_time).set_end(end_time)

 方法二、利用图片覆盖

def hide(video_src, dst):
    video = VideoFileClip(video_src)
    mask = (ImageClip(image_PATH)
            .set_duration(video.duration) 
            .resize((220,200)) 
            .set_pos((1300, 500))) 
    CompositeVideoClip([video, mask]).write_videofile(dst)

调用ImageClip模块生成一个clip, image_path 为图片位置

resize:更改图片大小

 

你可能感兴趣的:(moviepy,python,ffmpeg)