- New 2-of-3 detection system (chat + audio + color) - GPU support (PyTorch ROCm/CUDA ready) - Draft mode (360p) for fast testing - HD mode (1080p) for final render - Auto download video + chat - CLI pipeline script - Documentation in Spanish
230 lines
4.8 KiB
Markdown
230 lines
4.8 KiB
Markdown
# TODO - Mejoras Pendientes
|
|
|
|
## Estado Actual
|
|
|
|
### Working ✅
|
|
- Descarga de video (streamlink)
|
|
- Descarga de chat (TwitchDownloaderCLI)
|
|
- Detección por chat saturado
|
|
- Generación de video (moviepy)
|
|
- PyTorch con ROCm instalado
|
|
|
|
### Pendiente ❌
|
|
- Análisis de audio
|
|
- Análisis de color
|
|
- Uso de GPU en procesamiento
|
|
|
|
---
|
|
|
|
## PRIORIDAD 1: Sistema 2 de 3
|
|
|
|
### [ ] Audio - Picos de Sonido
|
|
Implementar detección de gritos/picos de volumen.
|
|
|
|
**Método actual (CPU):**
|
|
- Extraer audio con ffmpeg
|
|
- Usar librosa para RMS
|
|
- Detectar picos con scipy
|
|
|
|
**Método GPU (a implementar):**
|
|
```python
|
|
import torch
|
|
import torchaudio
|
|
|
|
# Usar GPU para análisis espectral
|
|
waveform, sr = torchaudio.load(audio_file)
|
|
spectrogram = torchaudio.transforms.Spectrogram()(waveform)
|
|
```
|
|
|
|
**Tareas:**
|
|
- [ ] Extraer audio del video con ffmpeg
|
|
- [ ] Calcular RMS/energía por ventana
|
|
- [ ] Detectar picos (threshold = media + 1.5*std)
|
|
- [ ] Devolver timestamps de picos
|
|
|
|
### [ ] Color - Momentos Brillantes
|
|
Detectar cambios de color/brillo en el video.
|
|
|
|
**Método GPU:**
|
|
```python
|
|
import cv2
|
|
# OpenCV con OpenCL
|
|
cv2.ocl::setUseOpenCL(True)
|
|
```
|
|
|
|
**Tareas:**
|
|
- [ ] Procesar frames con OpenCV GPU
|
|
- [ ] Calcular saturación y brillo HSV
|
|
- [ ] Detectar momentos con cambios significativos
|
|
- [ ] Devolver timestamps
|
|
|
|
### [ ] Combinar 2 de 3
|
|
Sistema de scoring:
|
|
```
|
|
highlight = (chat_score >= 2) + (audio_score >= 1.5) + (color_score >= 0.5)
|
|
if highlight >= 2: es highlight
|
|
```
|
|
|
|
---
|
|
|
|
## PRIORIDAD 2: GPU - Optimizar para 6800XT
|
|
|
|
### [ ] PyTorch con ROCm
|
|
✅ Ya instalado:
|
|
```
|
|
PyTorch: 2.10.0+rocm7.1
|
|
ROCm available: True
|
|
Device: AMD Radeon Graphics
|
|
```
|
|
|
|
### [ ] OpenCV con OpenCL
|
|
```bash
|
|
# Verificar soporte OpenCL
|
|
python -c "import cv2; print(cv2.ocl.haveOpenCL())"
|
|
```
|
|
|
|
**Si no tiene OpenCL:**
|
|
- [ ] Instalar opencv-python (no headless)
|
|
- [ ] Instalar ocl-runtime para AMD
|
|
|
|
### [ ] Reemplazar librerías CPU por GPU
|
|
|
|
| Componente | CPU | GPU |
|
|
|------------|-----|-----|
|
|
| Audio | librosa | torchaudio (ROCm) |
|
|
| Video frames | cv2 | cv2 + OpenCL |
|
|
| Procesamiento | scipy | torch |
|
|
| Concatenación | moviepy | torch + ffmpeg |
|
|
|
|
### [ ] MoviePy con GPU
|
|
MoviePy actualmente usa CPU. Opciones:
|
|
1. Usar ffmpeg directamente con flags GPU
|
|
2. Crear pipeline propio con torch
|
|
|
|
```bash
|
|
# ffmpeg con GPU
|
|
ffmpeg -hwaccel auto -i input.mp4 -c:v h264_amf output.mp4
|
|
```
|
|
|
|
---
|
|
|
|
## PRIORIDAD 3: Mejorar Detección
|
|
|
|
### [ ] Palabras Clave en Chat
|
|
Detectar momentos con keywords como:
|
|
- "LOL", "POG", "KEK", "RIP", "WTF"
|
|
- Emotes populares
|
|
- Mayúsculas (gritos en chat)
|
|
|
|
### [ ] Análisis de Sentimiento
|
|
- [ ] Usar modelo de sentiment (torch)
|
|
- [ ] Detectar momentos positivos/negativos intensos
|
|
|
|
### [ ] Ranking de Highlights
|
|
- [ ] Ordenar por intensidad (combinación de scores)
|
|
- [ ] Limitar a N mejores highlights
|
|
- [ ] Duration-aware scoring
|
|
|
|
---
|
|
|
|
## PRIORIDAD 4: Kick
|
|
|
|
### [ ] Descarga de Video
|
|
✅ Ya funciona con streamlink:
|
|
```bash
|
|
streamlink https://kick.com/streamer best -o video.mp4
|
|
```
|
|
|
|
### [ ] Chat
|
|
❌ Kick NO tiene API pública para chat.
|
|
|
|
**Opciones:**
|
|
1. Web scraping del chat
|
|
2. Usar herramientas de terceros
|
|
3. Omitir chat y usar solo audio/color
|
|
|
|
---
|
|
|
|
## PRIORIDAD 5: Optimizaciones
|
|
|
|
### [ ] Paralelización
|
|
- [ ] Procesar chunks del video en paralelo
|
|
- [ ] ThreadPool para I/O
|
|
|
|
### [ ] Cache
|
|
- [ ] Guardar resultados intermedios
|
|
- [ ] Reutilizar análisis si existe chat.txt
|
|
|
|
### [ ] Chunking
|
|
- [ ] Procesar video en segmentos
|
|
- [ ] Evitar cargar todo en memoria
|
|
|
|
---
|
|
|
|
## PRIORIDAD 6: UX/UI
|
|
|
|
### [ ] CLI Mejorada
|
|
```bash
|
|
python main.py --video-id 2701190361 --platform twitch \
|
|
--min-duration 10 --threshold 2.0 \
|
|
--output highlights.mp4 \
|
|
--use-gpu --gpu-device 0
|
|
```
|
|
|
|
### [ ] Interfaz Web
|
|
- [ ] Streamlit app
|
|
- [ ] Subir video/chat
|
|
- [ ] Ver timeline de highlights
|
|
- [ ] Preview de clips
|
|
|
|
### [ ] Progress Bars
|
|
- [ ] tqdm para descargas
|
|
- [ ] Progress para procesamiento
|
|
|
|
---
|
|
|
|
## RECETAS DE INSTALACIÓN
|
|
|
|
### GPU ROCm
|
|
```bash
|
|
# PyTorch con ROCm
|
|
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm7.1
|
|
|
|
# Verificar
|
|
python -c "import torch; print(torch.cuda.is_available())"
|
|
```
|
|
|
|
### NVIDIA CUDA (alternativa)
|
|
```bash
|
|
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
|
|
```
|
|
|
|
### OpenCV con OpenCL
|
|
```bash
|
|
# Verificar
|
|
python -c "import cv2; print(cv2.ocl.haveOpenCL())"
|
|
|
|
# Si False, instalar con GPU support
|
|
pip uninstall opencv-python-headless
|
|
pip install opencv-python
|
|
```
|
|
|
|
---
|
|
|
|
## RENDIMIENTO ESPERADO
|
|
|
|
| Config | FPS Processing | Tiempo 5h Video |
|
|
|--------|----------------|------------------|
|
|
| CPU (12 cores) | ~5-10 FPS | ~1-2 horas |
|
|
| GPU NVIDIA 3050 | ~30-50 FPS | ~10-20 min |
|
|
| GPU AMD 6800XT | ~30-40 FPS | ~15-25 min |
|
|
|
|
---
|
|
|
|
## NOTAS
|
|
|
|
1. **ROCm 7.1** funcionando con PyTorch
|
|
2. **6800XT** detectada como "AMD Radeon Graphics"
|
|
3. **MoviePy** sigue usando CPU para renderizado
|
|
4. Para mejor rendimiento, considerar renderizado con ffmpeg GPU directamente
|