mcpField
T
transcribe-video

transcribe-video

github.com/feiskyer创意与媒体15236 次安装28 周前更新
代码仓库

关于 transcribe-video

transcribe-video 用于提取本地视频中的文字稿。它优先使用内嵌字幕;没有字幕时则通过 API 进行语音识别,并将整理后的文字稿保存到视频旁。

主要功能

  1. 01检测内嵌字幕轨道
  2. 02提取字幕并清理文字稿
  3. 03必要时通过 API 转录音频
  4. 04将文字稿保存到视频旁

适用场景

  1. 01提取带字幕视频的文字
  2. 02转录没有内嵌字幕的视频

安装

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

$npx skills add https://github.com/feiskyer/video-skills --skill transcribe-video

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

附带文件scripts/transcribe.py

详细介绍

转录视频

从本地视频文件中提取转录文本。该技能会先检查是否含有内嵌字幕(速度更快、准确度更高),仅在未找到字幕时才使用基于 API 的语音识别。

步骤 1:确定视频文件

与用户确认视频文件路径。支持的格式:mp4、mkv、mov、avi、webm,以及 ffmpeg 能处理的任何格式。

步骤 2:检查内嵌字幕

ffprobe -v quiet -select_streams s -show_entries stream=index,codec_name:stream_tags=language,title -of json "<video_path>"
  • 如果存在字幕流 → 转到步骤 3a(提取内嵌字幕)
  • 如果不存在字幕流 → 转到步骤 3b(API 转录)

步骤 3a:提取内嵌字幕

如果存在多个字幕轨道,优先选择与视频主要语言匹配的轨道,或询问用户要使用哪个轨道。

# Extract as SRT (stream index 0 for first subtitle track; adjust if needed)
ffmpeg -i "<video_path>" -map 0:s:0 -c:s srt "<output_path>.srt" -y

提取后,将 SRT 转换为纯净文本:

  • 移除序号
  • 移除时间戳行(匹配 \d{2}:\d{2}:\d{2} 的行)
  • 移除类似 HTML 的标签(<i>、</i> 等)
  • 合并剩余的非空行

将纯净转录文本保存到视频文件同目录下的 <video_name>.txt。完成 — 跳过步骤 3b。

步骤 3b:基于 API 的转录

使用捆绑的转录脚本。该脚本从 ~/.transcribe_video.env 读取凭据。

前置条件检查
  1. 确认环境文件存在:

    test -f ~/.transcribe_video.env && echo "OK" || echo "MISSING"
    
  2. 如果文件不存在,告知用户创建 ~/.transcribe_video.env,内容如下:

    OPENAI_API_KEY=your-key-here
    # Optional Base URL:
    # OPENAI_API_BASE=https://<base-url>/v1/
    # Optional Model Name:
    # TRANSCRIBE_MODEL=gpt-4o-transcribe
    

    等待用户确认后再继续。

  3. 确认依赖项:

    python3 -c "from openai import OpenAI; from dotenv import load_dotenv; print('OK')" 2>&1
    

    如果缺少依赖项:pip install openai python-dotenv

运行转录
python3 <skill_directory>/scripts/transcribe.py "<video_path>"

该脚本提取音频(WAV、16kHz 单声道),将其发送到 API,并将转录文本保存到视频文件同目录下的 <video_name>.txt。

步骤 4:报告结果

告知用户:

  • 转录文件的保存位置
  • 行数 / 大致字数
  • 内容来自内嵌字幕还是 API 转录
  • 显示前几行作为预览

评论

支持 Markdown