mcpField

video-processor

github.com/iamzhihuix创意与媒体256 次安装
代码仓库

关于 video-processor

用于处理视频和音频文件的命令行技能,适合下载、格式转换、音轨提取和转录等任务。它通过一个脚本调用 yt-dlp、FFmpeg 和 OpenAI Whisper。

主要功能

  1. 01使用 yt-dlp 下载视频和音频
  2. 02以多种格式提取音频
  3. 03将视频转换为 MP4 或 WebM
  4. 04使用 Whisper 转录
  5. 05导出 txt、srt、vtt 或 json

适用场景

  1. 01下载视频片段或其音频
  2. 02提取音频以单独使用
  3. 03转换视频以便网页播放
  4. 04生成转录文本或带时间戳字幕

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/iamzhihuix/happy-claude-skills --skill video-processor

安装后在 Claude Code 中输入/video-processor确认已加载。

附带文件scripts/video_processor.py

详细介绍

视频处理器

说明

此技能提供全面的视频处理实用工具,包括 YouTube 视频下载、音频提取、格式转换,以及使用 yt-dlp、FFmpeg 和 OpenAI 的 Whisper 模型进行音频转录。

先决条件

必需工具(必须安装在您的环境中):

  • yt-dlp:用于从 YouTube 和数千个其他网站下载视频

    # Install via pip
    pip install -U yt-dlp
    
    # Verify installation
    yt-dlp --version
    
  • FFmpeg:用于视频/音频处理的多媒体框架

    # macOS
    brew install ffmpeg
    
    # Ubuntu/Debian
    apt-get install ffmpeg
    
    # Verify installation
    ffmpeg -version
    
  • OpenAI Whisper:语音转文本转录模型

    # Install via pip
    pip install -U openai-whisper
    
    # Verify installation
    whisper --help
    

Python 软件包(通过 PEP 723 包含在脚本中):

  • click(命令行框架)
  • ffmpeg-python(FFmpeg 的 Python 封装)
  • yt-dlp(视频下载器)
工作流

所有视频处理任务均使用 scripts/video_processor.py 脚本。此脚本提供了一个简单的命令行界面,包含以下命令:

0. 从 YouTube 或其他平台下载视频(新增!)

从 YouTube 和数千个其他受支持的网站下载视频:

# Download video
uv run .claude/skills/video-processor/scripts/video_processor.py download "https://youtube.com/watch?v=..." output.mp4

# Download audio only (as MP3)
uv run .claude/skills/video-processor/scripts/video_processor.py download "https://youtube.com/watch?v=..." --audio-only

# Show video info without downloading
uv run .claude/skills/video-processor/scripts/video_processor.py download "https://youtube.com/watch?v=..." --info

# Download with subtitles
uv run .claude/skills/video-processor/scripts/video_processor.py download "https://youtube.com/watch?v=..." output.mp4 --subtitle

选项:

  • --audio-only:仅下载音频(提取为 MP3)
  • --subtitle:下载并嵌入字幕(支持 en、zh-Hans、zh-Hant)
  • --info:显示视频信息,但不下载
  • --format:指定视频格式偏好(默认为最佳画质)
1. 从视频中提取音频

从视频文件中提取音轨:

uv run .claude/skills/video-processor/scripts/video_processor.py extract-audio input.mp4 output.wav

选项:

  • --format:输出音频格式(默认为 wav)。支持:wav、mp3、aac、flac
  • 输出适用于转录或作为独立音频使用
2. 将视频转换为 MP4

将任意视频文件转换为 MP4 格式:

uv run .claude/skills/video-processor/scripts/video_processor.py to-mp4 input.avi output.mp4

选项:

  • --codec:视频编解码器(默认为 libx264)。常见选项:libx264、libx265、h264
  • --preset:编码速度/质量预设(默认为 medium)。选项:ultrafast、fast、medium、slow、veryslow
3. 将视频转换为 WebM

将任意视频文件转换为 WebM 格式(针对网页优化):

uv run .claude/skills/video-processor/scripts/video_processor.py to-webm input.mp4 output.webm

选项:

  • --codec:视频编解码器(默认为 libvpx-vp9)。选项:libvpx、libvpx-vp9
  • WebM 针对网页播放和流式传输进行了优化
4. 使用 Whisper 转录音频

使用 OpenAI 的 Whisper 模型将音频或视频文件转录为文本:

# Transcribe video file (audio will be extracted automatically)
uv run .claude/skills/video-processor/scripts/video_processor.py transcribe input.mp4 transcript.txt

# Transcribe audio file directly
uv run .claude/skills/video-processor/scripts/video_processor.py transcribe audio.wav transcript.txt

选项:

  • --model:Whisper 模型大小(默认为 base)。选项:
    • tiny:速度最快,准确度最低(约 1GB RAM)
    • base:速度快,准确度较好(约 1GB RAM)[默认]
    • small:均衡(约 2GB RAM)
    • medium:准确度高(约 5GB RAM)
    • large:准确度最高,速度最慢(约 10GB RAM)
  • --language:语言代码(默认为自动检测)。示例:en、es、fr、de、zh
  • --format:输出格式(默认为 txt)。选项:txt、srt、vtt、json

转录工作流:

  1. 如果输入是视频,FFmpeg 会将音频提取到临时 WAV 文件
  2. Whisper 处理音频文件
  3. 转录内容会以指定格式保存
  4. 临时文件会自动清理
5. 组合工作流示例

端到端处理视频:

# 1. Extract audio for analysis
uv run .claude/skills/video-processor/scripts/video_processor.py extract-audio lecture.mp4 lecture.wav

# 2. Transcribe to SRT subtitles
uv run .claude/skills/video-processor/scripts/video_processor.py transcribe lecture.mp4 lecture.srt --format srt --model small

# 3. Convert to web format
uv run .claude/skills/video-processor/scripts/video_processor.py to-webm lecture.mp4 lecture.webm
关键技术细节

FFmpeg 与 Whisper 的集成:

  • FFmpeg 本身不转录音频,而是为外部转录准备音频
  • 工作流为:提取音频(FFmpeg)→ 转录(Whisper)→ 可选:重新与视频合并
  • FFmpeg 可以将音频直接传输给 Whisper,以进行实时处理(高级用例)

用于转录的音频格式:

  • Whisper 使用 WAV 或 MP3 格式的效果最佳
  • 采样率:16kHz 为最佳(脚本会自动处理转换)
  • 脚本会使用适合 Whisper 的最佳设置提取音频

输出格式:

  • txt:纯文本转录内容
  • srt:SubRip 字幕格式(包含时间戳)
  • vtt:WebVTT 字幕格式(网页标准)
  • json:包含词级时间戳的详细 JSON
错误处理

脚本包含全面的错误处理:

  • 验证输入文件是否存在
  • 检查是否已安装 FFmpeg 和 Whisper
  • 为缺失的依赖项提供清晰的错误消息
  • 出错时处理临时文件清理
性能提示
  • 使用 tiny 或 base 模型快速起草
  • 使用 small 或 medium 进行生产级转录
  • 仅在需要最高准确度时使用 large
  • 对于较长的视频,可先提取音频,再分段转录
  • 使用 VP9 转换 WebM 耗时更长,但生成的文件更小

示例

示例 1:快速将视频转换为 MP4

用户请求:

I have an AVI file from my old camera. Can you convert it to MP4?

你会:

  1. 使用带默认设置的 to-mp4 命令:
    uv run .claude/skills/video-processor/scripts/video_processor.py to-mp4 old_video.avi output.mp4
    
  2. 确认转换已成功完成
  3. 告知用户输出文件的位置
示例 2:提取音频并转录

用户请求:

I recorded a lecture video and need a transcript. Can you extract the audio and transcribe it?

你会:

  1. 先提取音频:
    uv run .claude/skills/video-processor/scripts/video_processor.py extract-audio lecture.mp4 lecture.wav
    
  2. 然后使用 base 模型转录(在速度和准确度之间取得良好平衡):
    uv run .claude/skills/video-processor/scripts/video_processor.py transcribe lecture.mp4 transcript.txt --model base
    
  3. 将 transcript.txt 文件分享给用户
示例 3:创建适用于 Web 的视频并添加字幕

用户请求:

I need to put this video on my website with subtitles. Can you help?

你会:

  1. 转换为 WebM,以优化 Web 播放:
    uv run .claude/skills/video-processor/scripts/video_processor.py to-webm presentation.mp4 presentation.webm
    
  2. 生成 SRT 字幕文件:
    uv run .claude/skills/video-processor/scripts/video_processor.py transcribe presentation.mp4 subtitles.srt --format srt --model small
    
  3. 告知用户现在已有:
    • presentation.webm(适用于 Web 的视频)
    • subtitles.srt(用于嵌入的字幕文件)
示例 4:指定语言进行高质量转录

用户请求:

I have a Spanish interview video that needs an accurate transcript for publication.

你会:

  1. 指定语言并使用更大的模型,以获得最佳准确度:
    uv run .claude/skills/video-processor/scripts/video_processor.py transcribe interview.mp4 transcript.txt --model medium --language es
    
  2. 可选择创建 SRT 以供审核:
    uv run .claude/skills/video-processor/scripts/video_processor.py transcribe interview.mp4 transcript.srt --format srt --model medium --language es
    
  3. 与用户一起审核转录文本,并进行必要的修正
示例 5:批量处理多个视频

用户请求:

I have a folder of training videos that all need to be converted to WebM and transcribed.

你会:

  1. 列出目录中的所有视频文件:
    ls training_videos/*.mp4
    
  2. 对每个视频文件运行转换和转录:
    # For each video: video1.mp4, video2.mp4, etc.
    uv run .claude/skills/video-processor/scripts/video_processor.py to-webm training_videos/video1.mp4 output/video1.webm
    uv run .claude/skills/video-processor/scripts/video_processor.py transcribe training_videos/video1.mp4 output/video1.txt --model base
    
    # Repeat for each file
    
  3. 确认所有转换和转录均已完成
  4. 提供输出文件摘要

总结

video-processor 技能为常见的视频处理任务提供统一接口:

  • 音频提取:以各种格式提取音轨
  • 格式转换:转换为 MP4(通用格式)或 WebM(针对 Web 优化)
  • 转录:语音转文本,支持多种输出格式
  • 灵活性:通过 CLI 参数选择模型、语言和输出格式

所有操作均通过一个文档完善的脚本处理,该脚本具有合理的默认设置和全面的错误处理。

评论

支持 Markdown