TubeScript-API/GUIA_RAPIDA_DOCKER_FFMPEG.md

371 lines
7.5 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Nota: Streamlit eliminado
> El panel Streamlit fue eliminado. Las instrucciones que mencionan Streamlit se mantienen como referencia, pero el flujo actual usa únicamente la API.
# Guía Rápida Docker + FFmpeg
╔══════════════════════════════════════════════════════════════════════╗
║ ║
║ 🚀 GUÍA RÁPIDA: Docker + Endpoint + FFmpeg ║
║ ║
╚══════════════════════════════════════════════════════════════════════╝
## ⚡ INICIO RÁPIDO
### 1⃣ Ejecutar Solo la API
```bash
docker run -d --name tubescript_api -p 8080:8000 \
-v $(pwd)/cookies.txt:/app/cookies.txt:ro \
tubescript-api
```
**Acceso:** http://localhost:8080/docs
---
### 2⃣ Obtener URL m3u8 de un Video
```bash
# Método 1: cURL
curl http://localhost:8080/stream/VIDEO_ID
# Método 2: Script de prueba
./test-endpoint-stream.sh
# Método 3: Navegador
http://localhost:8080/stream/VIDEO_ID
```
---
### 3⃣ Usar URL con FFmpeg
```bash
# Obtener URL
STREAM_URL=$(curl -s http://localhost:8080/stream/VIDEO_ID | jq -r '.stream_url')
# Transmitir a YouTube
ffmpeg -re -i "$STREAM_URL" -c copy -f flv \
rtmp://a.rtmp.youtube.com/live2/TU_STREAM_KEY
```
---
## 📋 COMANDOS DOCKER
### Solo API (Backend)
```bash
# Construir
docker build -t tubescript-api .
# Ejecutar
docker run -d --name api -p 8080:8000 tubescript-api
# Ver logs
docker logs -f api
# Detener
docker stop api && docker rm api
```
---
### Ambos con docker-compose
```bash
# Iniciar
docker-compose up -d
# Ver logs
docker-compose logs -f
# Detener
docker-compose down
```
---
## 🎬 COMANDOS FFMPEG
### Template Base
```bash
ffmpeg -re \
-i "URL_M3U8_DEL_ENDPOINT" \
-c copy \
-f flv \
RTMP_URL/STREAM_KEY
```
---
### YouTube
```bash
ffmpeg -re -i "$STREAM_URL" -c copy -f flv \
rtmp://a.rtmp.youtube.com/live2/TU_STREAM_KEY
```
---
### Facebook
```bash
ffmpeg -re -i "$STREAM_URL" -c copy -f flv \
rtmps://live-api-s.facebook.com:443/rtmp/TU_STREAM_KEY
```
---
### Twitch
```bash
ffmpeg -re -i "$STREAM_URL" -c copy -f flv \
rtmp://live.twitch.tv/app/TU_STREAM_KEY
```
---
### X (Twitter)
```bash
ffmpeg -re -i "$STREAM_URL" -c copy -f flv \
rtmps://fa.contribute.live-video.net/app/TU_STREAM_KEY
```
---
### Múltiples Plataformas
```bash
# YouTube
ffmpeg -re -i "$STREAM_URL" -c copy -f flv \
rtmp://a.rtmp.youtube.com/live2/YOUTUBE_KEY &
# Facebook
ffmpeg -re -i "$STREAM_URL" -c copy -f flv \
rtmps://live-api-s.facebook.com:443/rtmp/FACEBOOK_KEY &
# Twitch
ffmpeg -re -i "$STREAM_URL" -c copy -f flv \
rtmp://live.twitch.tv/app/TWITCH_KEY &
wait
```
---
## 🧪 TESTING
### Test 1: API
```bash
# Iniciar API
docker run -d --name test_api -p 8080:8000 tubescript-api
# Probar endpoint
curl http://localhost:8080/
# Probar stream
curl http://localhost:8080/stream/VIDEO_ID
# Limpiar
docker stop test_api && docker rm test_api
```
---
### Test 2: Endpoint con Script
```bash
# Ejecutar script de prueba
./test-endpoint-stream.sh
# Ingresa un VIDEO_ID cuando te lo pida
```
---
### Test 3: FFmpeg Manual
```bash
# 1. Obtener URL
STREAM_URL=$(curl -s http://localhost:8080/stream/VIDEO_ID | jq -r '.stream_url')
# 2. Probar 10 segundos
ffmpeg -re -t 10 -i "$STREAM_URL" -c copy -f flv \
rtmp://a.rtmp.youtube.com/live2/TU_STREAM_KEY
```
---
## 📊 ENDPOINTS DISPONIBLES
| Endpoint | Método | Descripción |
|----------|--------|-------------|
| `/` | GET | Health check |
| `/stream/{video_id}` | GET | Obtener URL m3u8 |
| `/transcript/{video_id}` | GET | Obtener transcripción |
| `/docs` | GET | Documentación Swagger |
---
## 🔧 VARIABLES DE ENTORNO
### Para Streamlit:
```bash
-e API_URL=http://host.docker.internal:8080 # API en host
-e API_URL=http://tubescript-api:8000 # API en Docker
```
---
## 📝 FLUJO COMPLETO
```bash
# 1. Iniciar API
docker run -d --name api -p 8080:8000 tubescript-api
# 2. Obtener URL m3u8
VIDEO_ID="VIDEO_EN_VIVO"
STREAM_URL=$(curl -s http://localhost:8080/stream/$VIDEO_ID | jq -r '.stream_url')
# 3. Verificar URL
echo "URL obtenida: $STREAM_URL"
# 4. Transmitir a YouTube
ffmpeg -re -i "$STREAM_URL" -c copy -f flv \
rtmp://a.rtmp.youtube.com/live2/TU_STREAM_KEY
# 5. Detener API
docker stop api
```
---
## 🎯 CASOS DE USO
### Caso 1: Solo API para Desarrollo
```bash
docker run -d --name dev_api -p 8080:8000 \
-v $(pwd):/app \
tubescript-api
```
---
### Caso 2: Testing con Video Real
```bash
# 1. Iniciar API
docker-compose up -d tubescript-api
# 2. Probar con script
./test-endpoint-stream.sh
# 3. Copiar comando FFmpeg generado
# 4. Ejecutar transmisión
```
---
### Caso 3: Producción Completa
```bash
# Ambos servicios
docker-compose up -d
# Acceso panel
open http://localhost:8501
# Acceso API
open http://localhost:8080/docs
```
---
## 💡 TIPS
**Usa jq** para extraer datos JSON fácilmente:
```bash
curl -s http://localhost:8080/stream/VIDEO_ID | jq -r '.stream_url'
```
**Script de prueba** incluido para generar comandos:
```bash
./test-endpoint-stream.sh
```
**Múltiples plataformas** con `&` al final para ejecutar en background
**Ver logs** en tiempo real:
```bash
docker-compose logs -f tubescript-api
```
---
## 🆘 SOLUCIÓN DE PROBLEMAS
### API no responde
```bash
# Ver logs
docker logs tubescript_api
# Reiniciar
docker restart tubescript_api
# Reconstruir
docker-compose build tubescript-api
docker-compose up -d tubescript-api
```
---
### Error al obtener URL
```bash
# Verificar que el video esté EN VIVO
# Actualizar yt-dlp
docker exec tubescript_api pip install -U yt-dlp
# Probar manualmente
docker exec -it tubescript_api bash
yt-dlp -g -f best "URL_VIDEO"
```
---
### FFmpeg no conecta
```bash
# Verificar RTMP URL
# Verificar Stream Key
# Probar con -t 10 (10 segundos de prueba)
ffmpeg -re -t 10 -i "$STREAM_URL" -c copy -f flv rtmp://...
```
---
╔══════════════════════════════════════════════════════════════════════╗
║ ║
║ ✅ TODO LISTO PARA USAR ║
║ ║
║ COMANDO RÁPIDO: ║
║ docker-compose up -d ║
║ ║
║ PROBAR ENDPOINT: ║
║ ./test-endpoint-stream.sh ║
║ ║
║ DOCS COMPLETAS: ║
║ DOCKER_COMANDOS_SEPARADOS.md ║
║ ║
╚══════════════════════════════════════════════════════════════════════╝