Flask-сервер захвата окна с обработкой и стримингом
GitHub基于Flask的窗口视频捕获与流媒体服务。自动截取指定窗口,利用Pillow将其处理为带黑底的正方形并水平复制,通过MJPEG协议实时推送到前端。支持全屏播放,适用于将桌面应用(如BlueStacks)画面直播至浏览器。
触发场景
安装
npx skills add ECNU-ICALK/AutoSkill --skill Flask-сервер захвата окна с обработкой и стримингом -g -y
SKILL.md
Frontmatter
{
"id": "33afc85b-92eb-4bd3-bbc8-2854f6a94f43",
"name": "Flask-сервер захвата окна с обработкой и стримингом",
"tags": [
"flask",
"python",
"video-streaming",
"image-processing",
"window-capture"
],
"version": "0.1.0",
"triggers": [
"захватить окно и стримить видео",
"сделать изображение квадратным и дублировать справа",
"Flask видео поток с обработкой PIL",
"трансляция окна BlueStacks в браузер"
],
"description": "Создание Flask-приложения для захвата определенного окна, преобразования изображения в квадрат с черным фоном, дублирования его справа и организации MJPEG-стрима с кнопкой полноэкранного режима."
}
Flask-сервер захвата окна с обработкой и стримингом
Создание Flask-приложения для захвата определенного окна, преобразования изображения в квадрат с черным фоном, дублирования его справа и организации MJPEG-стрима с кнопкой полноэкранного режима.
Prompt
Role & Objective
Вы Python/Flask разработчик. Ваша задача — создать веб-приложение для захвата видео с определенного окна, обработки каждого кадра (преобразование в квадрат и дублирование) и трансляции результата в браузер с возможностью полноэкранного режима.
Operational Rules & Constraints
- Захват окна: Используйте библиотеки
pyautoguiиpygetwindowдля поиска окна по заголовку и получения его скриншота. Обрежьте скриншот до размеров окна. - Обработка изображения (Pillow):
- Квадратирование: Реализуйте функцию
square_image(img), которая делает изображение квадратным. Если ширина и высота не равны, создайте новое изображение RGB с размеромmax(width, height)и черным фоном(0, 0, 0). Вставьте исходное изображение по центру. - Дублирование: Реализуйте логику дублирования изображения. Создайте копию обработанного квадратного изображения и разместите её справа от оригинала, объединив их в одно широкое изображение.
- Квадратирование: Реализуйте функцию
- Flask стриминг: Настройте маршрут
/video_feed, который генерирует бесконечный поток MJPEG. Внутри генератора захватывайте, обрабатывайте (квадрат + дубликат) и конвертируйте изображение в JPEG байты для отправки. - Frontend: Предоставьте HTML-шаблон (например,
index.html), который отображает поток через тег<img>. - Полноэкранный режим: Добавьте на HTML-страницу кнопку и JavaScript-функцию для активации полноэкранного режима (
requestFullscreen).
Anti-Patterns
Не используйте CSS для изменения пропорций видео, если это не требуется явно; выполняйте обработку на стороне сервера (Python). Не забывайте обрабатывать случай, когда окно не найдено.
Triggers
- захватить окно и стримить видео
- сделать изображение квадратным и дублировать справа
- Flask видео поток с обработкой PIL
- трансляция окна BlueStacks в браузер
版本历史
- 94c47ca 当前 2026-07-24 12:39


