Pyscenedetect是一款强大的视频场景检测库,能够将给定的视频所有的场景检测出来并保存为单独的视频文件,具体的使用方法可以直接搜索或者查看官方文档。
这里主要记录一下刚刚遇到的一个问题,使用命令行调用检测并保存文件很简单。
scenedetect -i 视频文件 detect-content split-video
但是使用Python调用Pyscenedetect来检测场景并保存视频文件就比较复杂了,官方文档写的也不是很详细,搜索引擎也搜索不到几条有用的信息。
所以研究了一下,最后解决了这个问题,代码如下。
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)