63 lines
2.3 KiB
Markdown
63 lines
2.3 KiB
Markdown
|
|
# Twitch Stream Vision Analyzer
|
|||
|
|
|
|||
|
|
Программа в реальном времени анализирует Twitch-стрим: периодически захватывает кадры и отправляет их в Gemini Vision API, получая текстовое описание происходящего.
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
Twitch HLS → streamlink → ffmpeg (кадр каждые N сек) → Gemini Vision API → консоль + лог
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Требования
|
|||
|
|
|
|||
|
|
- Python 3.10+
|
|||
|
|
- ffmpeg (установлен в системе)
|
|||
|
|
- API ключ [Google AI Studio](https://aistudio.google.com/apikey)
|
|||
|
|
|
|||
|
|
## Установка
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
git clone https://git.animeenigma.ru/NANDI/twitchStreamVision.git
|
|||
|
|
cd twitchStreamVision
|
|||
|
|
pip install -r requirements.txt
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Настройка
|
|||
|
|
|
|||
|
|
Скопируй `.env.example` в `.env` и укажи API ключ:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cp .env.example .env
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
```env
|
|||
|
|
GEMINI_API_KEY=your-api-key-here
|
|||
|
|
# Опционально: Cloudflare AI Gateway
|
|||
|
|
# GEMINI_BASE_URL=https://gateway.ai.cloudflare.com/v1/account/gateway/google-ai-studio
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Запуск
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
python3 main.py --channel xqc --interval 15 --quality 480p
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Аргументы
|
|||
|
|
|
|||
|
|
| Аргумент | По умолчанию | Описание |
|
|||
|
|
|---|---|---|
|
|||
|
|
| `--channel` | (обязательный) | Имя Twitch-канала |
|
|||
|
|
| `--interval` | `15` | Интервал захвата кадров (секунды) |
|
|||
|
|
| `--quality` | `480p` | Качество стрима (`480p`, `720p`, `1080p`, `best`) |
|
|||
|
|
| `--lang` | `ru` | Язык описаний (`ru` / `en`) |
|
|||
|
|
| `--log-file` | `stream_log.txt` | Путь к лог-файлу |
|
|||
|
|
|
|||
|
|
## Как это работает
|
|||
|
|
|
|||
|
|
1. **streamlink** подключается к Twitch-каналу и получает HLS-поток
|
|||
|
|
2. **ffmpeg** извлекает JPEG-кадры с заданным интервалом (без записи на диск)
|
|||
|
|
3. **Gemini Vision API** анализирует каждый кадр и возвращает краткое описание
|
|||
|
|
4. Результат выводится в консоль (через rich) и записывается в лог-файл
|
|||
|
|
|
|||
|
|
Для связности описаний контекст предыдущего ответа передаётся в следующий запрос.
|
|||
|
|
|
|||
|
|
Остановка — `Ctrl+C`.
|