この Python スクリプトは、YouTube ビデオ、ローカル ビデオ ファイル、またはその他の考えられるビデオ ソースから高品質のスクリーンショットを抽出するための多用途ツールです。これは、Loras やチェックポイントのトレーニングなどの機械学習プロジェクト用のデータセットを準備する場合、または単にお気に入りの映画から完璧なフレームを取得する場合に特に役立ちます。
requirements.txt
にリストされていますこのリポジトリのクローンを作成します。
git clone https://github.com/EnragedAntelope/youtube-screenshot-extractor.git
cd youtube-screenshot-extractor
必要な依存関係をインストールします。
pip install -r requirements.txt
FFmpeg をインストールします (キーフレーム抽出と一部のフィルターに必要)。
(オプション) GPU アクセラレーションのために PyCUDA をインストールします。
pip install pycuda>=2022.1
注: PyCUDA を使用するには、システムに CUDA がインストールされている必要があります。インストール手順については、PyCUDA のドキュメントを参照してください。
基本的な構文:
python youtube-screenshot-script.py [SOURCE] [OPTIONS]
ここで、 [SOURCE]
は YouTube URL またはローカル ビデオ ファイルへのパスのいずれかです。
注: GPU アクセラレーション (--use-gpu オプション) を使用する予定がある場合は、PyCUDA がインストールされていることを確認してください。
YouTube ビデオから 5 秒ごとにフレームを抽出し、カスタム フォルダーに保存します。
python youtube-screenshot-script.py https://www.youtube.com/watch?v=dQw4w9WgXcQ --output my_awesome_screenshots
それはとても簡単です!それでは、構成可能なすべてのオプションを詳しく見てみましょう。
--method {interval,all,keyframes,scene}
: フレーム抽出方法(デフォルト:interval)--interval INTERVAL
: フレーム間の間隔 (秒単位) (デフォルト: 5.0、「interval」メソッドでのみ使用)--quality QUALITY
: フレーム選択の品質しきい値 (0 ~ 100、デフォルト: 12.0)--blur BLUR
: フレーム選択のブラーしきい値 (デフォルト: 10.0)--detect-watermarks
: 基本的なウォーターマーク検出を有効にします--watermark-threshold THRESHOLD
: ウォーターマーク検出感度 (0-1、デフォルト: 0.8)--max-resolution RESOLUTION
: YouTube ビデオのダウンロードの最大解像度 (例: 720、1080)。ローカル ファイルの場合は無視されます。--output OUTPUT
: カスタム出力フォルダー名--png
: フレームを JPG ではなく PNG として保存します--disable-parallel
: フレームの並列処理を無効にします。--use-gpu
: 利用可能な場合は GPU アクセラレーションを使用します--fast-scene
: シーン検出に高速モードを使用します (結果の精度は低くなります)--resume
: 中断された抽出プロセスを再開します。--thumbnail
: 抽出されたフレームのサムネイル モンタージュを生成します--verbose
: 詳細なログを有効にします--dry-run
: 実際に処理せずに何が行われるかを表示します。--config CONFIG
: 設定ファイルから設定をロードします。--gradfun
: カラー バンディングを減らすために gradfun フィルターを適用します (あまり攻撃的ではなく、より多くのディテールを保持します)--deblock
: デブロッキング フィルターを適用して圧縮アーティファクトを軽減します。--deband
: デバンド フィルターを適用してカラー バンディングを軽減します (より強力で、ひどいバンディングに適しています)ローカルビデオファイルからキーフレームを抽出します。
python youtube-screenshot-script.py path/to/your/video.mp4 --method keyframes
カスタム出力フォルダーを使用して YouTube ビデオでシーン検出を使用します。
python youtube-screenshot-script.py https://www.youtube.com/watch?v=dQw4w9WgXcQ --method scene --output my_scene_shots
低い品質しきい値と PNG 出力を使用して 10 秒ごとにフレームを抽出します。
python youtube-screenshot-script.py https://www.youtube.com/watch?v=dQw4w9WgXcQ --interval 10 --quality 30 --png
GPU アクセラレーションを使用して、サムネイル モンタージュを生成します。
python youtube-screenshot-script.py path/to/your/video.mp4 --use-gpu --thumbnail
最大解像度 720p で YouTube ビデオをダウンロードし、フレームを抽出します。
python youtube-screenshot-script.py https://www.youtube.com/watch?v=dQw4w9WgXcQ --max-resolution 720
後処理フィルターを使用してフレームを抽出します。
python youtube-screenshot-script.py path/to/your/video.mp4 --gradfun --deblock --deband
処理時間:
ビデオ解像度:
--max-resolution
オプションを使用して、ダウンロードの品質を制限します。--max-resolution
オプションは無視されます。出力: フレームは、指定した出力フォルダー (またはビデオ タイトルにちなんで名付けられたデフォルトのフォルダー) に JPG または PNG 画像として保存されます。
フレーム ファイル名: frame_NNNNNN_qXX_bYY[_watermarked].(jpg|png)
の形式に従います。ここで:
NNNNNN
: フレーム番号XX
: 品質スコア (0 ~ 99、高いほど優れています)YY
: ブラースコア (数字が大きいほどブラーが少ないことを示します)_watermarked
: ウォーターマークが検出された場合に追加されるサフィックス後処理フィルター:
--dry-run
オプションを使用すると、実際にフレームを保存せずに抽出プロセスをプレビューできます。--resume
オプションを使用します。--max-resolution
オプションを使用して、ダウンロード品質を制限して処理を高速化し、ストレージ領域を節約することを検討してください。--quality 30 --blur 50
) から始めて、必要に応じて調整します。--fast-scene
オプションを使用すると、より迅速な (ただし精度は低くなります) シーン検出結果が得られます。フレームは抽出されませんでした:
--quality 20 --blur 30
)。キーフレーム抽出の問題:
シーンの検出が非常に遅い、またはクラッシュする:
--fast-scene
オプションを使用すると、結果は速くなりますが、精度は低くなります。GPU アクセラレーションが機能しない:
pip install pycuda
)。--use-gpu
フラグを削除して CPU 処理に戻ります。ウォーターマーク検出により誤検知が発生する:
--watermark-threshold 0.9
)。--detect-watermarks
フラグを削除してウォーターマーク検出を無効にします。大きなビデオの場合、プロセスが予期せず終了します。
--resume
オプションを使用します。低品質または不鮮明な出力:
後処理フィルターが機能しない:
このプロジェクトは MIT ライセンスに基づいてライセンスされています。詳細については、LICENSE ファイルを参照してください。
貢献は大歓迎です!お気軽にプルリクエストを送信してください。