mcpField

video-processor

github.com/iamzhihuixクリエイティブ・メディア256 回インストール
リポジトリ

video-processor について

動画や音声を処理するコマンドラインスキルです。ダウンロード、形式変換、音声抽出、文字起こしなどに使えます。1つのスクリプトから yt-dlp、FFmpeg、OpenAI Whisper を利用します。

主な機能

  1. 01yt-dlp による動画・音声のダウンロード
  2. 02複数形式での音声抽出
  3. 03動画の MP4 または WebM 変換
  4. 04Whisper による文字起こし
  5. 05txt、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

詳細

動画プロセッサー

使用方法

このスキルでは、yt-dlp、FFmpeg、OpenAI の Whisper モデルを使用した、YouTube 動画のダウンロード、音声の抽出、形式の変換、音声の文字起こしなど、包括的な動画処理ユーティリティを提供します。

前提条件

必須ツール(環境にインストールされている必要があります):

  • 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(CLI フレームワーク)
  • ffmpeg-python(FFmpeg 用 Python ラッパー)
  • yt-dlp(動画ダウンローダー)
ワークフロー

すべての動画処理タスクに scripts/video_processor.py スクリプトを使用します。このスクリプトでは、次のコマンドを備えたシンプルな CLI を利用できます。

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. Web 向けに最適化するため、WebM に変換します:
    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 引数を利用できます

すべての操作は、適切なデフォルト設定と包括的なエラー処理を備えた、単一の十分に文書化されたスクリプトを通じて実行されます。

コメント