mcpField
F
ffmpeg-pyav-integration

ffmpeg-pyav-integration

github.com/josiahsiegel開発5978 回インストール19 週間前に更新
リポジトリ

ffmpeg-pyav-integration について

PythonからPyAVを使ってFFmpegライブラリに直接アクセスするためのスキルガイドです。メディア処理の流れを扱い、詳しいAPI例は別のリファレンスにまとめています。

主な機能

  1. 01音声・動画のデコードとエンコード
  2. 02シークとキーフレーム抽出
  3. 03フレームのNumPy配列変換
  4. 04コンテナ検査とパケット再多重化
  5. 05字幕とネットワークストリームの処理

活用シーン

  1. 01Pythonでフレーム単位のメディア処理を構築
  2. 02指定時刻のフレームを抽出
  3. 03ストリームの検査やパケット再多重化
  4. 04ライブラリ制御でRTSPストリームを処理

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/josiahsiegel/claude-plugin-marketplace --skill ffmpeg-pyav-integration

インストール後、Claude Code で/ffmpeg-pyav-integrationを入力して読み込まれたか確認します。

同梱ファイルreferences/pyav-recipes-and-api.md

詳細

PyAV 統合ガイド

Python から FFmpeg ライブラリに直接アクセスする必要がある場合は、コンテナ、ストリーム、パケット、フレーム、コーデック、フィルター、シーク、字幕、NumPy 変換に PyAV を使用します。この SKILL は簡潔なオーケストレーターです。完全な API の例は references/pyav-recipes-and-api.md にそのまま保存されています。

PyAV を使用する場面

以下の場合に PyAV を使用します。

  • フレーム単位の動画/音声のデコードとエンコード
  • 正確なシークとキーフレームの抽出
  • フレームごとにシェルコマンドを実行せずに行う NumPy/Pillow/OpenCV フレームへのアクセス
  • コンテナの調査、パケット単位のリマックス、字幕の読み取り
  • ライブラリレベルで制御する RTSP/ネットワークストリームの処理

単純なトランスコード、本番環境のコマンドとの同等性、または負荷の高いハードウェアアクセラレーションパイプラインには、代わりに FFmpeg CLI/サブプロセスを使用します。

クイックリファレンス

タスクPyAV のパターン備考
メディアを開くav.open(path)コンテキストマネージャーを推奨
動画をデコードcontainer.decode(video=0)VideoFrame を返します
NumPy に変換frame.to_ndarray(format='rgb24')OpenCV 用に BGR に変換
NumPy から変換av.VideoFrame.from_ndarray(arr, format='rgb24')生成したフレームをエンコード
シークcontainer.seek(offset)通常はキーフレーム単位
エンコードstream.encode(frame) の後に container.mux(packet)最後にエンコーダーをフラッシュ
閉じるcontainer.close()ループ内では特に重要

最小限のパターン

import av

with av.open("input.mp4") as container:
    stream = container.streams.video[0]
    stream.thread_type = "AUTO"
    for frame in container.decode(stream):
        rgb = frame.to_ndarray(format="rgb24")
        break
import av

with av.open("input.mp4") as container:
    stream = container.streams.video[0]
    container.seek(int(10.0 * av.time_base), backward=True)
    for frame in container.decode(stream):
        if frame.time >= 10.0:
            image = frame.to_ndarray(format="rgb24")
            break

コアワークフロー

  1. カスタム FFmpeg ビルドが明確に必要な場合を除き、ホイールから av をインストールします。
  2. 新しい FFmpeg 8.x の機能に依存する前に、PyAV と FFmpeg ライブラリの互換性を確認します。
  3. コンテナはコンテキストマネージャーで開くか、try/finally で確実に閉じます。
  4. ストリームを明示的に選択し、必要なものだけをデコードします。
  5. フレームのピクセル形式/サンプル形式を意図的に変換します。
  6. エンコードでは、コーデック、寸法、ピクセル形式、レート、オプションを明示的に設定し、エンコーダーをフラッシュします。
  7. スレッド化されたアプリケーションでは詳細ログを無効にし、Python のファイルオブジェクトよりファイルパスを優先します。

主な注意点

  • PyAV のフレームは内部バッファーを参照している場合があります。コンテナを閉じた後も保持する NumPy 配列には .copy() を呼び出してください。
  • thread_type='AUTO' によってデコード速度が大幅に向上する場合がありますが、フレーム遅延が増える可能性があります。
  • PyAV のハードウェアアクセラレーションは、CLI FFmpeg と比べて制限があります。
  • 字幕のトランスコード対応には制限があります。複雑な字幕ワークフローには FFmpeg CLI を使用してください。

リファレンスマップ

  • references/pyav-recipes-and-api.md - インストール、カスタム FFmpeg ビルド、FFmpeg 8 との互換性、デコード、NumPy 変換、エンコード、音声、フィルター、シーク、リマックス、字幕、RTSP、エラー、メモリー、スレッド処理、パフォーマンス、ハードウェアに関する注意点、一般的なパターンを網羅した、完全な保存版リファレンスです。

関連スキル

  • ffmpeg-python-integration-reference - 型安全な FFmpeg パラメーターのマッピング
  • ffmpeg-opencv-integration - OpenCV パイプラインと色変換
  • ffmpeg-fundamentals-2025 - FFmpeg の基本操作とコーデックの選択

コメント