1. 项目背景
在视频素材的搜集过程中,尤其是针对人的动作素材,我们常需要从大量包含无人画面的视频中筛选出有人出现的片段。手动进行这一筛选过程不仅耗时,而且容易遗漏关键片段。为了提高效率,我写了一个基于YOLOv8的自动裁剪视频脚本,能够自动检测视频中是否存在人物,并提取出包含人物的片段,最后将这些片段拼接在一起,以便进一步筛选和使用。
2. 环境配置
2.1 安装YOLOv8环境
首先,确保已经安装了能够正常运行YOLOv8的环境。YOLOv8通常需要Python 3.7或更高版本,并且依赖于一些常见的Python库,如ultralytics
、opencv-python
等。可以通过以下命令安装这些依赖库:
pip install ultralytics opencv-python
2.2 安装FFmpeg
FFmpeg是一个强大的多媒体处理工具,支持视频和音频的编解码、转码、剪辑等操作。我们需要安装FFmpeg以便在Python脚本中使用。
2.2.1 使用conda安装FFmpeg(适用于Windows和macOS)
如果你使用的是Anaconda或Miniconda,可以通过以下命令从conda-forge渠道安装FFmpeg:
conda install -c conda-forge ffmpeg
2.2.2 使用apt安装FFmpeg(适用于Linux)
如果你使用的是Linux系统,可以通过以下命令安装FFmpeg:
sudo apt install ffmpeg
2.2.3 验证FFmpeg安装
安装完成后,可以通过以下命令验证FFmpeg是否安装成功:
ffmpeg -version
如果输出了版本信息,则说明FFmpeg已经成功安装并且配置正确。
2.3 安装ffmpeg-python库和tqdm库
ffmpeg-python
是一个Python库,提供了对FFmpeg命令的封装,使得我们可以在Python脚本中方便地调用FFmpeg。而tqdm
是一个快速、可扩展的 Python 进度条库,可以在长循环中添加一个进度提示信息,为长时间的循环操作提供视觉反馈。
pip install ffmpeg-python
pip install tqdm
3. 代码实现(两种方法实现)
3.1 方法一:基于帧检测的视频裁剪
这是第一个脚本,它通过逐帧检测视频中的人物,并在发现人物时标记视频片段的开始和结束时间。当视频处理完成后,将使用FFmpeg将这些片段合并成一个新的视频文件。
# 导入必要的库
import cv2
from ultralytics import YOLO
import os
import ffmpeg
import time
from tqdm import tqdm
import subprocess
#