用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/GAGAA-HUE/ASHUO-claude-skills --skill extract-video命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | extract-video |
| slash_command | extract-video |
| description | 提取视频文件的基本信息、音频轨道、关键帧截图,或将其转换为可分析的格式。 当用户提供视频路径并需要了解内容、提取字幕、获取关键帧时使用。 |
| usage | /extract-video <视频路径> [操作类型] 操作类型(可选,默认为 info): - info 显示视频基本信息(分辨率、时长、码率、编码格式等) - frames 提取关键帧截图到临时目录 - audio 提取音频为 WAV/MP3 - subtitle 尝试提取内嵌字幕或生成音频转文字(需要 Whisper) |
用户输入 /extract-video <路径> 时,本 skill 生效。
在 Windows 系统上,按以下优先级自动检测 FFmpeg:
Winget 安装路径(默认):
%LOCALAPPDATA%\Microsoft\WinGet\Packages\Gyan.FFmpeg_*
Chocolatey 安装路径:
C:\ProgramData\chocolatey\bin\ffmpeg.exe
官方安装程序路径:
C:\Program Files\FFmpeg\bin\ffmpeg.exe
C:\ffmpeg\bin\ffmpeg.exe
系统 PATH:直接调用 ffmpeg / ffprobe
检测逻辑(Bash):
# 尝试找到 ffmpeg
FFMPEG_PATH=""
PROBE_PATHS=(
"$LOCALAPPDATA/Microsoft/WinGet/Packages/Gyan.FFmpeg_*/ffmpeg-*/bin/ffmpeg.exe"
"/c/ProgramData/chocolatey/bin/ffmpeg.exe"
"/c/Program Files/FFmpeg/bin/ffmpeg.exe"
"/c/ffmpeg/bin/ffmpeg.exe"
)
for path in "${PROBE_PATHS[@]}"; do
found=$(ls $path 2>/dev/null | head -1)
if [ -n "$found" ]; then
FFMPEG_PATH="$found"
FFPROBE_PATH="${found/ffmpeg/ffprobe}"
break
fi
done
# 如果都没找到,尝试系统 PATH
if [ -z "$FFMPEG_PATH" ]; then
if command -v ffmpeg &> /dev/null; then
FFMPEG_PATH="ffmpeg"
FFPROBE_PATH="ffprobe"
fi
fi
if [ -z "$FFMPEG_PATH" ]; then
echo "❌ FFmpeg 未找到。请安装:"
echo " winget install Gyan.FFmpeg"
echo " 或: choco install ffmpeg"
exit 1
fi
确认路径存在且为视频文件:
if [ ! -f "$VIDEO_PATH" ]; then
echo "❌ 文件不存在: $VIDEO_PATH"
exit 1
fi
运行:
"$FFPROBE_PATH" -v quiet -print_format json -show_streams -show_format "$VIDEO_PATH"
将 JSON 结果整理为易读的摘要(分辨率、时长、帧率、编码器、音频轨道数等)。
运行:
# 创建输出目录
OUTPUT_DIR="${TEMP:-/tmp}/extract-video-frames-$(date +%s)"
mkdir -p "$OUTPUT_DIR"
# 按时间间隔提取(每2秒一帧,480px宽度)
"$FFMPEG_PATH" -i "$VIDEO_PATH" -vf "fps=1/2,scale=480:-1" -q:v 2 "$OUTPUT_DIR/frame_%04d.jpg"
# 或按场景变化提取(需要更多计算)
# "$FFMPEG_PATH" -i "$VIDEO_PATH" -vf "select='gt(scene,0.3)',showinfo" -vsync vfr -q:v 2 -f image2 "$OUTPUT_DIR/scene_%04d.jpg"
生成完成后,列出提取的帧文件路径,供后续分析使用。
运行:
OUTPUT_AUDIO="${VIDEO_PATH%.*}.mp3"
"$FFMPEG_PATH" -i "$VIDEO_PATH" -vn -acodec libmp3lame -q:a 2 "$OUTPUT_AUDIO"
输出音频文件路径。
"$FFMPEG_PATH" -i "$VIDEO_PATH" -map 0:s:0 "${VIDEO_PATH%.*}.srt" 2>/dev/null
#!/bin/bash
VIDEO_PATH="$1"
ACTION="${2:-info}"
# 自动检测 FFmpeg
find_ffmpeg() {
local paths=(
"$LOCALAPPDATA/Microsoft/WinGet/Packages/Gyan.FFmpeg_*/ffmpeg-*/bin/ffmpeg.exe"
"/c/ProgramData/chocolatey/bin/ffmpeg.exe"
"/c/Program Files/FFmpeg/bin/ffmpeg.exe"
"/c/ffmpeg/bin/ffmpeg.exe"
)
for pattern in "${paths[@]}"; do
local found=$(ls $pattern 2>/dev/null | head -1)
if [ -n "$found" ] && [ -f "$found" ]; then
echo "$found"
return 0
fi
done
# 尝试 PATH
if command -v ffmpeg &> /dev/null; then
echo "ffmpeg"
return 0
fi
return 1
}
FFMPEG=$(find_ffmpeg)
if [ -z "$FFMPEG" ]; then
echo "❌ FFmpeg 未找到"
echo "请安装: winget install Gyan.FFmpeg"
1
FFPROBE=
[ ! -f ];
1
info)
-v quiet -print_format json -show_streams -show_format | \
python3 -c
;;
frames)
OUTPUT_DIR=
-p
-i -vf -q:v 2 2>/dev/null
-la
;;
audio)
OUTPUT=
-i -vn -acodec libmp3lame -q:a 2 2>/dev/null
;;
subtitle)
OUTPUT=
-i -map 0:s:0 2>/dev/null;
;;
*)
1
;;
info 操作,输出结构化的视频参数摘要。frames/audio/subtitle 操作,明确告知输出文件的路径,并总结内容。