P小二 P小二
← 返回文章 AI Research 约 6 分钟

AI助力视频剪辑之——新恒结衣Gakki视频混剪(一)

AI助力视频剪辑系列之视频混剪(一)

最近沉迷于B站每天亿遍系列后,突然冒出来一个想法,能否用程序来实现自动剪辑。研究了一翻,发现难度不小,不过我们可以从简单的来,慢慢迭代,终极目标定在尬舞系列。

这一次从简单的混剪入手,我们开始吧。

混剪其实就是从一些影视作品等素材中提取一些人物片段,然后把他们拼接起来,当然你也可以用片段来制作表情包。

人要进行混剪,主要是步骤就是观看视频内容,看到有人物出现,就把这一段用工具保存下来。那用Python的思路也差不多,我们把视频的每一帧都过一下人脸识别,如果有人脸出现就把这一段切下来。

这里我们要用到moivepy和opencv两个库,moivepy获取图片帧,切开和合并视频,opencv进行人脸的识别。

moivepy

moivepy是一个视频编辑的Python库,可以对视频进行剪切,合并,标题插入,视频处理和自定义效果。

我们主要使用moivepy的三个功能:

加载视频获取图片帧

from moviepy.editor import VideoFileClip # 读取视频文件clip = VideoFileClip(“demo.mp4”) # 以每秒20帧的方式获取图片帧for i, img in enumerate(clip.iter_frames(fps=20)): # todo 对图片进行人脸识别


** 根据时间片段切开视频**

- -
- -
- -
- -
- ```
def extract_subclip(filename,durations):    dir_name = filename.split(".")[0]    for d in durations:        start_t, end_t = d        ffmpeg_extract_subclip(filename, start_t, end_t)    return dir_name

当识别到当前帧有人脸出现,那就后续所有的帧出现人脸的时间都算一个连续片段, 并使用ffmpeg_extract_subclip函数根据时间段把视频切分为多个片段。

如果你去看ffmpeg_extract_subclip的源码,你会发现库的大多数功能都是通过ffmpeg实现的,如果使用其他语言处理视频,可以参考此库的封装方法。

合并多个视频

def concatenate_subclip(filepath): clips = [] for root,_,files in os.walk(filepath): files.sort() for file in files: if os.path.splitext(file)[1] == “.mp4”: filePath = os.path.join(root,file) video = VideoFileClip(filePath) clips.append(video) final_clip = concatenate_videoclips(clips)    final_clip.write_videofile(”./target.mp4”, fps=24, remove_temp=False)




**opencv**

opencv是非常著名的计算机视觉库,我们后面还会经常的用到它,这次用到的是它的Python版本

- 地址: https://github.com/skvark/opencv-python

- 安装: pip install opencv-python

- 文档:https://docs.opencv.org/master/

这次主要用到了opencv的人脸检测功能:

**人脸检测**

- -
- -
- - ```
def find_faces(img):    eys_cascade = cv2.CascadeClassifier("data/haarcascade_frontalface_default.xml")    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)    faces = eys_cascade.detectMultiScale(gray, 1.3, 5)    return faces

我们提供一张图片,就可以检测是否存在人脸,达到检测视频是否存在人物的作用。

现在用到的功能都介绍完了,现在先拿《恋空》插曲《Heavenly Days》的MV测试一下,可以看到整个MV有4分31秒。

现在用到的功能都介绍完了,现在先拿《恋空》插曲《Heavenly Days》的M

运行程序,分割成了有人脸出现的21个片段

运行程序,分割成了有人脸出现的21个片段

我们查看合并的视频

我们查看合并的视频

发现这21个片段合并成一个视频,总长度1分30秒,也算达到了效果。

完整代码请点击原文链接

下一期,我们将真正使用人脸识别,完成Gakki 和三浦春马在电影《恋空》中的片段自动混剪,敬请期待。我是P小二。