Pyscenedetect视频场景检测切分保存为mp4文件
颜有缘
2021年07月30日 15:00

Pyscenedetect是一款强大的视频场景检测库,能够将给定的视频所有的场景检测出来并保存为单独的视频文件,具体的使用方法可以直接搜索或者查看官方文档。

这里主要记录一下刚刚遇到的一个问题,使用命令行调用检测并保存文件很简单。

代码块
JavaScript
自动换行
复制代码
scenedetect -i 视频文件 detect-content split-video
复制成功

但是使用Python调用Pyscenedetect来检测场景并保存视频文件就比较复杂了,官方文档写的也不是很详细,搜索引擎也搜索不到几条有用的信息。

所以研究了一下,最后解决了这个问题,代码如下。

代码块
Python
自动换行
复制代码
from scenedetect import SceneManager, VideoManager
from scenedetect.detectors import ContentDetector
from scenedetect.video_splitter import split_video_ffmpeg

def find_scenes_save_video(video_path):
    # Create our video & scene managers, then add the detector.
    video_manager = VideoManager([video_path])
    scene_manager = SceneManager()
    scene_manager.add_detector(ContentDetector())

    # Improve processing speed by downscaling before processing.
    video_manager.set_downscale_factor()

    # Start the video manager and perform the scene detection.
    video_manager.start()
    scene_manager.detect_scenes(frame_source=video_manager)

    # 保存为视频文件
    scene_list = scene_manager.get_scene_list()
    for index, scene in enumerate(scene_list):
        split_video_ffmpeg([video_path], [scene], f"{index + 1}.mp4", "", suppress_output=True)
复制成功