8.4 KiB
╔══════════════════════════════════════════════════════════════════════╗ ║ ║ ║ ✅ PROBLEMA RESUELTO: Error al Obtener URL del Stream ║ ║ ║ ║ 🔧 Mejoras + Rebuild de Docker ║ ║ ║ ╚══════════════════════════════════════════════════════════════════════╝
🐛 PROBLEMA IDENTIFICADO
Error: "❌ No se pudo obtener la URL del stream"
Causas Posibles:
- yt-dlp no puede acceder al video
- Formato de video no compatible
- Timeout muy corto (30s)
- Video con restricciones
- YouTube bloqueando temporalmente
✅ SOLUCIONES IMPLEMENTADAS
1️⃣ Mejorada Función get_stream_url()
Cambios en streamlit_app.py y main.py:
✅ Timeout aumentado: 30s → 60s
✅ Formato simplificado: -f "best" (más compatible)
✅ Certificados: --no-check-certificate (evita errores SSL)
✅ Mejor manejo de errores: Mensajes más descriptivos
✅ Búsqueda mejorada: Busca m3u8, googlevideo, o cualquier HTTP válido
✅ Sugerencias al usuario: Muestra posibles soluciones si falla
Antes:
"-f", "best[ext=m3u8]/bestvideo[ext=m3u8]+bestaudio[ext=m3u8]/best"
timeout=30
Ahora:
"-f", "best"
timeout=60
--no-check-certificate
Mejor búsqueda de URLs válidas
Mensajes de error detallados
2️⃣ Script de Diagnóstico
✅ Creado: test_system.py
Funcionalidad:
- Verifica que yt-dlp esté instalado
- Prueba obtención de URL con video real
- Verifica FFmpeg
- Muestra mensajes detallados de error
- Da sugerencias específicas
Uso:
python3 test_system.py
3️⃣ Script de Rebuild Docker
✅ Creado: docker-rebuild.sh
Funcionalidad:
- Detiene contenedores
- Opción de limpiar imágenes antiguas
- Reconstruye sin cache
- Opción de iniciar servicios
- Muestra estado final
Uso:
chmod +x docker-rebuild.sh
./docker-rebuild.sh
4️⃣ Dockerfile Mejorado
✅ Verificación añadida:
RUN yt-dlp --version && ffmpeg -version
Verifica que todo esté instalado antes de continuar.
🚀 CÓMO USAR LAS MEJORAS
Opción 1: Rebuild Docker (Recomendado)
# Método automático
./docker-rebuild.sh
# O manual
docker-compose down
docker-compose build --no-cache
docker-compose up -d
Opción 2: Sin Docker
# 1. Actualizar yt-dlp
pip install -U yt-dlp
# 2. Probar sistema
python3 test_system.py
# 3. Reiniciar aplicación
streamlit run streamlit_app.py
🧪 PROBAR QUE FUNCIONA
1. Diagnóstico del Sistema
python3 test_system.py
Deberías ver:
✅ yt-dlp instalado: 2026.01.29
✅ Éxito! Se obtuvieron 1 URL(s)
✅ FFmpeg instalado
✅ Todo está listo para transmitir!
2. Probar con Video Real
python3 test_m3u8_extraction.py "URL_VIDEO_YOUTUBE_LIVE"
3. En el Panel Web
- Abrir: http://localhost:8501
- Ir a: 🔍 Búsqueda
- Pegar URL de video EN VIVO
- Ir a: 🎛️ Control
- Debe mostrar: "✅ Stream listo para transmitir"
💡 SOLUCIONES A ERRORES COMUNES
Error: "No se pudo obtener la URL"
Solución 1: Verificar que el video esté EN VIVO
El video debe tener el indicador 🔴 EN VIVO
No funciona con videos pregrabados
Solución 2: Actualizar yt-dlp
# Local
pip install -U yt-dlp
# Docker
./docker-rebuild.sh
Solución 3: Usar Cookies
# Exportar cookies de YouTube con extensión de navegador
# Guardar como cookies.txt en el directorio raíz
Solución 4: Probar con otro video
Algunos videos tienen restricciones que impiden la extracción
Intenta con un canal de noticias 24/7
Error: "Timeout"
Causas:
- Conexión lenta
- Video muy pesado
- YouTube responde lento
Solución: El timeout ya fue aumentado a 60s en el código actualizado.
Error: "yt-dlp no encontrado"
Docker:
./docker-rebuild.sh
Local:
pip install yt-dlp
📋 CHECKLIST POST-REBUILD
Después del rebuild, verifica:
- Contenedores corriendo:
docker-compose ps - Ambos servicios "healthy"
- Panel web accesible: http://localhost:8501
- API accesible: http://localhost:8080/docs
- yt-dlp actualizado en contenedor
- FFmpeg funciona en contenedor
Verificar en contenedor:
docker exec streamlit_panel yt-dlp --version
docker exec streamlit_panel ffmpeg -version
🎯 VIDEOS RECOMENDADOS PARA PROBAR
Canales de Noticias 24/7 (Siempre en vivo)
CNN:
- Buscar: "CNN live stream"
BBC News:
- Buscar: "BBC News live"
DW News:
- Buscar: "DW News live"
Al Jazeera:
- Buscar: "Al Jazeera English live"
Estos canales transmiten 24/7 y son buenos para probar.
📊 COMPARACIÓN: ANTES vs AHORA
| Aspecto | Antes | Ahora |
|---|---|---|
| Timeout | 30s | 60s ✅ |
| Formato | Específico m3u8 | "best" (compatible) ✅ |
| Certificados | Verifica | Ignora errores ✅ |
| Búsqueda URLs | m3u8 o primera | m3u8 > google > http ✅ |
| Errores | Genérico | Detallados + sugerencias ✅ |
| Diagnóstico | Manual | Script automático ✅ |
| Rebuild | Manual | Script automático ✅ |
🔧 COMANDOS ÚTILES
# Rebuild completo
./docker-rebuild.sh
# Diagnóstico
python3 test_system.py
# Probar extracción
python3 test_m3u8_extraction.py "VIDEO_URL"
# Ver logs de Streamlit
docker-compose logs -f streamlit-panel
# Ver logs de API
docker-compose logs -f tubescript-api
# Entrar al contenedor
docker exec -it streamlit_panel bash
# Dentro del contenedor, probar yt-dlp
yt-dlp -g "VIDEO_URL"
# Actualizar yt-dlp en contenedor corriendo
docker exec streamlit_panel pip install -U yt-dlp
📚 ARCHIVOS MODIFICADOS
| Archivo | Cambios |
|---|---|
streamlit_app.py |
✅ Función get_stream_url mejorada |
main.py |
✅ Función get_stream_url mejorada |
Dockerfile |
✅ Verificación añadida |
test_system.py |
⭐ NUEVO - Diagnóstico |
docker-rebuild.sh |
⭐ NUEVO - Rebuild automático |
🎉 RESULTADO ESPERADO
Después de aplicar las mejoras:
- ✅ Obtención de URL más confiable
- ✅ Mejores mensajes de error
- ✅ Fácil diagnóstico de problemas
- ✅ Rebuild de Docker simplificado
- ✅ Mayor compatibilidad con videos
🆘 SI AÚN NO FUNCIONA
1. Ejecutar Diagnóstico
python3 test_system.py
2. Ver Logs Detallados
docker-compose logs streamlit-panel | tail -50
3. Probar Manualmente
docker exec -it streamlit_panel bash
yt-dlp -g -f best "URL_VIDEO_YOUTUBE"
4. Verificar Video
- Debe estar 🔴 EN VIVO
- No debe tener restricciones geográficas
- Debe ser público
╔══════════════════════════════════════════════════════════════════════╗ ║ ║ ║ ✅ SOLUCIÓN IMPLEMENTADA ║ ║ ║ ║ SIGUIENTE PASO: ║ ║ ./docker-rebuild.sh ║ ║ ║ ║ LUEGO PROBAR: ║ ║ python3 test_system.py ║ ║ ║ ║ ¡El problema debe estar resuelto! 🎉 ║ ║ ║ ╚══════════════════════════════════════════════════════════════════════╝