整理视频文件夹:清理非视频文件,删除时长过短或损坏的视频,并利用AI视觉分析将视频分类归入编号子文件夹。
视频文件夹管理器是一项面向实际任务的技能,主要用于智能化组织视频文件夹: 清理非视频文件, 删除不良的镜头, 用 AI 分析内容, 并排序为分类子文件夹;User 想要 organiiz。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
智能整理视频文件夹:清理非视频文件、剔除质量不佳的片段、利用 AI 分析视频内容,并按类别归入子文件夹。
用户希望整理一个视频文件夹:$ARGUMENTS
若用户未提供文件夹路径,请提示其提供。
语言说明:自动识别用户输入所用语言,并在整场会话中始终以该语言响应。分类子文件夹的名称也须使用用户语言。
扫描文件夹中的所有文件(先仅扫描根目录,不递归):
# 列出所有文件及其大小 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" )
向用户汇报以下信息:
使用 AskUserQuestion 向用户询问如何处理非视频文件(仅当存在时):
问题:"发现 N 个非视频文件。您希望如何处理它们?"
选项:
$FOLDER/_misc/若用户选择“移至 _misc”:
mkdir -p "$FOLDER/_misc" mv [非视频文件] "$FOLDER/_misc/"
若用户选择“删除”:
rm [非视频文件]
使用 AskUserQuestion 向用户询问是否剔除过短视频及阈值设定:
问题:"是否剔除极短的视频?"
选项:
若用户选择“由我指定时长”,请其输入阈值(单位:秒)。
使用 ffprobe 检查每个视频的时长:
ffprobe -v quiet -show_entries format=duration -of csv=p=0 "$VIDEO_FILE"
列出所有短于阈值的视频,显示其文件名与时长,再确认是否删除:
rm "$SHORT_VIDEO"
对每个剩余视频文件,使用 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 进行联合分析:
对每个视频的帧进行分析,并为每个视频生成以下两项结果:
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 ...
若存在被标记为质量问题的视频(all_black、shaky、blurry):
使用 AskUserQuestion:
问题:"以下视频存在质量问题:[列出文件名及问题类型]。您希望如何处理?"
选项:
若选择“逐个决定”,则对每个问题视频单独调用 AskUserQuestion,选项为:删除 / 移至 _rejected / 保留
执行用户选定的操作。
依据 AI 分析所得类别,构建建议的文件夹结构:
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
使用 AskUserQuestion:
问题:"是否需要进一步组织某个类别文件夹?"
选项:
若用户选择细化,请其从已创建的文件夹中指定目标(作为选项列出)。
随后提问:
问题:"您希望如何组织该文件夹?"
选项:
利用已采集的 AI 分析数据执行所请求的子级组织;如需补充信息,可重新分析。
完成本次细化后,循环返回步骤 7,询问是否还需细化其他类别。
ffmpeg 和 ffprobe(例如:执行 brew install ffmpeg)which ffmpeg 验证是否可用rm -rf /tmp/video_frames相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章