Этот скрипт Python представляет собой универсальный инструмент для извлечения высококачественных снимков экрана из видео YouTube, локальных видеофайлов или любого другого видеоисточника, о котором вы только можете подумать! Это особенно полезно для подготовки наборов данных для проектов машинного обучения, таких как обучение лорасов или контрольных точек, или просто для получения идеального кадра из вашего любимого фильма.
requirements.txt
Клонируйте этот репозиторий:
git clone https://github.com/EnragedAntelope/youtube-screenshot-extractor.git
cd youtube-screenshot-extractor
Установите необходимые зависимости:
pip install -r requirements.txt
Установите FFmpeg (требуется для извлечения ключевых кадров и некоторых фильтров):
(Необязательно) Установите PyCUDA для ускорения графического процессора:
pip install pycuda>=2022.1
Примечание. PyCUDA требует, чтобы в вашей системе был установлен CUDA. Инструкции по установке см. в документации PyCUDA.
Основной синтаксис:
python youtube-screenshot-script.py [SOURCE] [OPTIONS]
Где [SOURCE]
может быть либо URL-адресом YouTube, либо путем к локальному видеофайлу.
Примечание. Если вы планируете использовать ускорение графического процессора (опция --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
: интервал между кадрами в секундах (по умолчанию: 5,0, используется только с методом «интервал»)--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
: использовать ускорение графического процессора, если оно доступно.--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
Используйте ускорение графического процессора и создайте монтаж миниатюр:
python youtube-screenshot-script.py path/to/your/video.mp4 --use-gpu --thumbnail
Загрузите видео с YouTube в максимальном разрешении 720p и извлеките кадры:
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
для более быстрых, но менее точных результатов.Ускорение графического процессора не работает :
pip install pycuda
).--use-gpu
.Обнаружение водяных знаков, дающее ложные срабатывания :
--watermark-threshold 0.9
для более строгого обнаружения).--detect-watermarks
.Процесс неожиданно завершается для больших видео :
--resume
, чтобы продолжить с того места, где остановились.Низкое качество или размытость изображения :
Фильтры постобработки не работают :
Этот проект лицензируется по лицензии MIT — подробности см. в файле LICENSE.
Вклады приветствуются! Пожалуйста, не стесняйтесь отправить запрос на включение.