TubeScript-API/GUIA_RAPIDA_DOCKER_FFMPEG.md

7.5 KiB
Raw Permalink Blame History

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

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

# 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

# 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)

# 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

# Iniciar
docker-compose up -d

# Ver logs
docker-compose logs -f

# Detener
docker-compose down

🎬 COMANDOS FFMPEG

Template Base

ffmpeg -re \
  -i "URL_M3U8_DEL_ENDPOINT" \
  -c copy \
  -f flv \
  RTMP_URL/STREAM_KEY

YouTube

ffmpeg -re -i "$STREAM_URL" -c copy -f flv \
  rtmp://a.rtmp.youtube.com/live2/TU_STREAM_KEY

Facebook

ffmpeg -re -i "$STREAM_URL" -c copy -f flv \
  rtmps://live-api-s.facebook.com:443/rtmp/TU_STREAM_KEY

Twitch

ffmpeg -re -i "$STREAM_URL" -c copy -f flv \
  rtmp://live.twitch.tv/app/TU_STREAM_KEY

X (Twitter)

ffmpeg -re -i "$STREAM_URL" -c copy -f flv \
  rtmps://fa.contribute.live-video.net/app/TU_STREAM_KEY

Múltiples Plataformas

# 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

# 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

# Ejecutar script de prueba
./test-endpoint-stream.sh

# Ingresa un VIDEO_ID cuando te lo pida

Test 3: FFmpeg Manual

# 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:

-e API_URL=http://host.docker.internal:8080  # API en host
-e API_URL=http://tubescript-api:8000        # API en Docker

📝 FLUJO COMPLETO

# 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

docker run -d --name dev_api -p 8080:8000 \
  -v $(pwd):/app \
  tubescript-api

Caso 2: Testing con Video Real

# 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

# 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:

curl -s http://localhost:8080/stream/VIDEO_ID | jq -r '.stream_url'

Script de prueba incluido para generar comandos:

./test-endpoint-stream.sh

Múltiples plataformas con & al final para ejecutar en background

Ver logs en tiempo real:

docker-compose logs -f tubescript-api

🆘 SOLUCIÓN DE PROBLEMAS

API no responde

# 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

# 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

# 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 ║ ║ ║ ╚══════════════════════════════════════════════════════════════════════╝