Organise videos

Polar Sponsor
爱发电 赞助
.NET 9.0

整理视频文件夹:清理非视频文件,删除时长过短或损坏的视频,并利用AI视觉分析将视频分类归入编号子文件夹。

视频文件夹管理器

功能概述

视频文件夹管理器是一项面向实际任务的技能,主要用于智能化组织视频文件夹: 清理非视频文件, 删除不良的镜头, 用 AI 分析内容, 并排序为分类子文件夹;User 想要 organiiz。

核心要点

  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
  • 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。

使用与执行

从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;

结果检查与注意事项

若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

视频文件夹整理器

智能整理视频文件夹:清理非视频文件、剔除质量不佳的片段、利用 AI 分析视频内容,并按类别归入子文件夹。

使用方法

用户希望整理一个视频文件夹:$ARGUMENTS

若用户未提供文件夹路径,请提示其提供。

语言说明:自动识别用户输入所用语言,并在整场会话中始终以该语言响应。分类子文件夹的名称也须使用用户语言。

步骤 1:扫描文件夹

扫描文件夹中的所有文件(先仅扫描根目录,不递归):

# 列出所有文件及其大小
ls -la "$FOLDER"

# 查找视频文件(常见扩展名)
find "$FOLDER" -maxdepth 1 -type f ( 
  -iname "*.mp4" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mkv" 
  -o -iname "*.m4v" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.webm" 
  -o -iname "*.mts" -o -iname "*.m2ts" -o -iname "*.mpg" -o -iname "*.mpeg" 
  -o -iname "*.3gp" -o -iname "*.hevc" -o -iname "*.ts" 
)

# 查找非视频文件
find "$FOLDER" -maxdepth 1 -type f ! ( 
  -iname "*.mp4" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mkv" 
  -o -iname "*.m4v" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.webm" 
  -o -iname "*.mts" -o -iname "*.m2ts" -o -iname "*.mpg" -o -iname "*.mpeg" 
  -o -iname "*.3gp" -o -iname "*.hevc" -o -iname "*.ts" 
)

向用户汇报以下信息:

  • 找到的文件总数
  • 视频文件数量
  • 非视频文件数量(并列出具体文件名)

步骤 2:处理非视频文件

使用 AskUserQuestion 向用户询问如何处理非视频文件(仅当存在时):

问题:"发现 N 个非视频文件。您希望如何处理它们?"
选项:

  • "移至 _misc 子文件夹(推荐)" — 将非视频文件移入 $FOLDER/_misc/
  • "删除全部非视频文件" — 永久删除
  • "保持原样" — 不做任何操作

若用户选择“移至 _misc”:

mkdir -p "$FOLDER/_misc"
mv [非视频文件] "$FOLDER/_misc/"

若用户选择“删除”:

rm [非视频文件]

步骤 3:剔除过短视频

使用 AskUserQuestion 向用户询问是否剔除过短视频及阈值设定:

问题:"是否剔除极短的视频?"
选项:

  • "是,剔除时长小于 1 秒的视频(默认)"
  • "是,由我指定时长"
  • "否,保留全部视频"

若用户选择“由我指定时长”,请其输入阈值(单位:秒)。

使用 ffprobe 检查每个视频的时长:

ffprobe -v quiet -show_entries format=duration -of csv=p=0 "$VIDEO_FILE"

列出所有短于阈值的视频,显示其文件名与时长,再确认是否删除:

rm "$SHORT_VIDEO"

步骤 4:提取关键帧并利用 AI 视觉分析视频

对每个剩余视频文件,使用 ffmpeg 提取代表性帧:

# 创建临时帧存放目录
mkdir -p /tmp/video_frames

# 从每个视频中均匀提取 4 帧(分别位于总时长的 10%、30%、60%、90% 处)
DURATION=$(ffprobe -v quiet -show_entries format=duration -of csv=p=0 "$VIDEO")
ffmpeg -ss $(echo "$DURATION * 0.10" | bc) -i "$VIDEO" -frames:v 1 /tmp/video_frames/"${BASENAME}_01.jpg" -y -loglevel quiet
ffmpeg -ss $(echo "$DURATION * 0.30" | bc) -i "$VIDEO" -frames:v 1 /tmp/video_frames/"${BASENAME}_02.jpg" -y -loglevel quiet
ffmpeg -ss $(echo "$DURATION * 0.60" | bc) -i "$VIDEO" -frames:v 1 /tmp/video_frames/"${BASENAME}_03.jpg" -y -loglevel quiet
ffmpeg -ss $(echo "$DURATION * 0.90" | bc) -i "$VIDEO" -frames:v 1 /tmp/video_frames/"${BASENAME}_04.jpg" -y -loglevel quiet

同时检测低质画面:

# 检测全黑帧:计算帧平均亮度
ffmpeg -i "$VIDEO" -ss $(echo "$DURATION * 0.5" | bc) -frames:v 1 -vf "blackdetect=d=0.1:pix_th=0.10" -f null - 2>&1

# 检测剧烈抖动(基于场景切换/运动矢量)
ffmpeg -i "$VIDEO" -vf "select='gt(scene,0.4)',setpts=N/TB" -frames:v 5 /tmp/video_frames/"${BASENAME}_shake_%02d.jpg" -y -loglevel quiet 2>&1

使用 Read 工具加载已提取的帧图像,然后将全部视频的帧一次性提交给 AI 进行联合分析:

对每个视频的帧进行分析,并为每个视频生成以下两项结果:

  1. 类别:用用户语言给出简短的内容标签(例如:高速公路行车、城市街道、自然风光、室内拍摄、访谈、体育、航拍、美食、现场活动)
  2. 质量问题:
    • all_black:画面几乎全黑(黑色像素占比 >80%)
    • shaky:可见明显摄像机抖动/晃动
    • blurry:严重失焦
    • none:无质量问题

完成全部视频分析后,向用户提供汇总表格:

Filename            Duration  Category         Quality
video001.mp4        00:32     高速公路行车     none
video002.mp4        01:15     城市街道         shaky
video003.mp4        00:08     自然风光         all black
...

步骤 5:处理低质视频

若存在被标记为质量问题的视频(all_black、shaky、blurry):

使用 AskUserQuestion:

问题:"以下视频存在质量问题:[列出文件名及问题类型]。您希望如何处理?"
选项:

  • "删除全部问题视频"
  • "移至 _rejected 子文件夹"
  • "保留,不做任何操作"
  • "逐个决定"

若选择“逐个决定”,则对每个问题视频单独调用 AskUserQuestion,选项为:删除 / 移至 _rejected / 保留

执行用户选定的操作。

步骤 6:按编号子文件夹分类视频

依据 AI 分析所得类别,构建建议的文件夹结构:

  1. 汇总分析中出现的所有唯一类别
  2. 按各类别包含的视频数量降序排列(数量最多者优先)
  3. 分配两位数字前缀:01_、02_ 等

向用户展示建议结构(文件夹名使用用户语言):

建议的文件夹结构:
01_高速公路行车  (12 个视频)
02_城市街道      (8 个视频)
03_自然风光       (5 个视频)
04_室内           (3 个视频)

使用 AskUserQuestion:

问题:"该建议的文件夹结构是否合适?"
选项:

  • "合适,继续执行"
  • "需重命名部分类别"
  • "需合并部分类别"

若用户提出调整需求,请其通过 Other 输入方式明确说明修改内容,随后更新方案。

执行文件移动操作:

mkdir -p "$FOLDER/01_高速公路行车"
mv "$VIDEO" "$FOLDER/01_高速公路行车/"

全部文件移动完成后,确认完成并展示最终结构:

find "$FOLDER" -type d | sort

步骤 7:细化某一类别(可选)

使用 AskUserQuestion:

问题:"是否需要进一步组织某个类别文件夹?"
选项:

  • "不需要,全部完成"
  • "需要,让我选择一个类别"

若用户选择细化,请其从已创建的文件夹中指定目标(作为选项列出)。

随后提问:

问题:"您希望如何组织该文件夹?"
选项:

  • "按一天中的时段分组(上午 / 下午 / 傍晚)"
  • "按质量分组(精选 / 普通)"
  • "按时长分组(短 / 长)"
  • "由我描述具体方式"

利用已采集的 AI 分析数据执行所请求的子级组织;如需补充信息,可重新分析。

完成本次细化后,循环返回步骤 7,询问是否还需细化其他类别。

技术说明

前置条件

  • 必须已安装 ffmpeg 和 ffprobe(例如:执行 brew install ffmpeg)
  • 开始前请运行 which ffmpeg 验证是否可用

性能优化建议

  • 分批次提取帧,避免系统资源过载
  • 对于大文件夹(视频数 >50),提前告知用户可能耗时数分钟
  • 分析完成后清理临时帧: rm -rf /tmp/video_frames

错误处理

  • 若视频文件损坏导致 ffprobe 失败,则将其标记为 "unreadable",并单独向用户确认处理方式
  • 若 ffmpeg 帧提取失败,则跳过该视频的帧提取,并在分析结果中注明

文件夹安全性

  • 未经用户明确确认,绝不删除任何文件
  • 执行删除或移动操作前,必须向用户清晰展示将要操作的具体内容
  • 如有疑虑,优先选择移至子文件夹,而非永久删除

相关专题

更多
Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

0

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

0

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

0

10

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

0

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

0

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

0

16

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习