这个 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 请求。