被剪辑过的视频都是由多个镜头组成,而对每个镜头生成GIF文件需要先分割每个镜头。镜头分割由PySceneDetect包负责,而生成GIF文件由moviepy包负责。
镜头分割
镜头分割先检测视频镜头再分割出镜头视频文件。代码如下。
from scenedetect import detect, AdaptiveDetector, split_video_ffmpeg
def splitVideo(filepath):
scene_list = detect(filepath, AdaptiveDetector())
split_video_ffmpeg(filepath, scene_list)
生成GIF
选取上面分割出镜头视频文件,再生成GIF文件。
from moviepy.editor import VideoFileClip
def sceneToGIF(filepath):
videoClip = VideoFileClip(filepath)
videoClip.write_gif("test.gif")
注意:这里能分割镜头是切变的镜头,像渐变的镜头就很难分割。需要进一步分析。