這個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(關鍵幀提取和一些過濾器所需):
(選購)安裝 PyCUDA 以進行 GPU 加速:
pip install pycuda>=2022.1
注意:PyCUDA 需要在您的系統上安裝 CUDA。有關安裝說明,請參閱 PyCUDA 文件。
基本語法:
python youtube-screenshot-script.py [SOURCE] [OPTIONS]
其中[SOURCE]
可以是 YouTube URL 或本地視訊檔案的路徑。
注意:如果您打算使用 GPU 加速(--use-gpu 選項),請確保已安裝了 PyCUDA。
每 5 秒從 YouTube 影片中提取幀並將其保存到自訂資料夾中:
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
:將訊框儲存為 PNG 而非 JPG--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
每 10 秒提取具有較低質量閾值和 PNG 輸出的幀:
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 許可證獲得許可 - 有關詳細信息,請參閱許可證文件。
歡迎貢獻!請隨時提交 Pull 請求。