#!/bin/bash # Script para probar el endpoint /stream/ y generar comandos FFmpeg echo "═══════════════════════════════════════════════════════════" echo " 🧪 Test del Endpoint /stream/ y Generación de FFmpeg" echo "═══════════════════════════════════════════════════════════" echo "" # Colores GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' BLUE='\033[0;34m' NC='\033[0m' print_success() { echo -e "${GREEN}✅ $1${NC}" } print_warning() { echo -e "${YELLOW}⚠️ $1${NC}" } print_error() { echo -e "${RED}❌ $1${NC}" } print_info() { echo -e "${BLUE}ℹ️ $1${NC}" } # Verificar que la API esté corriendo API_URL="http://localhost:8080" echo "🔍 Verificando API en $API_URL..." if curl -s -f "$API_URL/" > /dev/null 2>&1; then print_success "API está corriendo" else print_error "API no está corriendo en $API_URL" echo "" print_info "Inicia la API con uno de estos comandos:" echo " docker-compose up -d tubescript-api" echo " docker run -d --name tubescript_api -p 8080:8000 tubescript-api" exit 1 fi echo "" # Pedir video ID echo "📺 Ingresa el ID del video de YouTube en vivo:" echo " (Ejemplo: dQw4w9WgXcQ para https://www.youtube.com/watch?v=dQw4w9WgXcQ)" read -p "> " VIDEO_ID if [ -z "$VIDEO_ID" ]; then print_error "No ingresaste un video ID" exit 1 fi echo "" echo "🔄 Obteniendo URL m3u8 del video $VIDEO_ID..." echo "" # Llamar al endpoint RESPONSE=$(curl -s -w "\n%{http_code}" "$API_URL/stream/$VIDEO_ID") HTTP_CODE=$(echo "$RESPONSE" | tail -n 1) BODY=$(echo "$RESPONSE" | sed '$d') if [ "$HTTP_CODE" -eq 200 ]; then print_success "URL m3u8 obtenida correctamente" echo "" # Extraer datos con jq (si está disponible) if command -v jq &> /dev/null; then STREAM_URL=$(echo "$BODY" | jq -r '.stream_url') URL_TYPE=$(echo "$BODY" | jq -r '.url_type') echo "────────────────────────────────────────────────────────" echo "📊 INFORMACIÓN DEL STREAM" echo "────────────────────────────────────────────────────────" echo "" echo "Video ID: $VIDEO_ID" echo "URL Type: $URL_TYPE" echo "YouTube URL: https://www.youtube.com/watch?v=$VIDEO_ID" echo "" echo "Stream URL:" echo "$STREAM_URL" echo "" # Generar comandos FFmpeg echo "────────────────────────────────────────────────────────" echo "🎬 COMANDOS FFMPEG PARA TRANSMITIR" echo "────────────────────────────────────────────────────────" echo "" echo "1️⃣ YouTube:" echo "────────────────────────────────────────────────────────" cat << EOF ffmpeg -re \\ -i "$STREAM_URL" \\ -c copy \\ -f flv \\ rtmp://a.rtmp.youtube.com/live2/TU_STREAM_KEY_YOUTUBE EOF echo "" echo "2️⃣ Facebook:" echo "────────────────────────────────────────────────────────" cat << EOF ffmpeg -re \\ -i "$STREAM_URL" \\ -c copy \\ -f flv \\ rtmps://live-api-s.facebook.com:443/rtmp/TU_STREAM_KEY_FACEBOOK EOF echo "" echo "3️⃣ Twitch:" echo "────────────────────────────────────────────────────────" cat << EOF ffmpeg -re \\ -i "$STREAM_URL" \\ -c copy \\ -f flv \\ rtmp://live.twitch.tv/app/TU_STREAM_KEY_TWITCH EOF echo "" echo "4️⃣ X (Twitter):" echo "────────────────────────────────────────────────────────" cat << EOF ffmpeg -re \\ -i "$STREAM_URL" \\ -c copy \\ -f flv \\ rtmps://fa.contribute.live-video.net/app/TU_STREAM_KEY_TWITTER EOF echo "" echo "────────────────────────────────────────────────────────" echo "💡 SCRIPT PARA MÚLTIPLES PLATAFORMAS" echo "────────────────────────────────────────────────────────" echo "" cat << 'EOF' #!/bin/bash # Reemplaza estas variables con tus stream keys YOUTUBE_KEY="tu_stream_key_youtube" FACEBOOK_KEY="tu_stream_key_facebook" TWITCH_KEY="tu_stream_key_twitch" TWITTER_KEY="tu_stream_key_twitter" EOF echo "STREAM_URL=\"$STREAM_URL\"" echo "" cat << EOF # Transmitir a YouTube ffmpeg -re -i "\$STREAM_URL" -c copy -f flv \\ rtmp://a.rtmp.youtube.com/live2/\$YOUTUBE_KEY & # Transmitir a Facebook ffmpeg -re -i "\$STREAM_URL" -c copy -f flv \\ rtmps://live-api-s.facebook.com:443/rtmp/\$FACEBOOK_KEY & # Transmitir a Twitch ffmpeg -re -i "\$STREAM_URL" -c copy -f flv \\ rtmp://live.twitch.tv/app/\$TWITCH_KEY & # Transmitir a Twitter ffmpeg -re -i "\$STREAM_URL" -c copy -f flv \\ rtmps://fa.contribute.live-video.net/app/\$TWITTER_KEY & echo "Transmisiones iniciadas. Presiona Ctrl+C para detener." wait EOF echo "" echo "────────────────────────────────────────────────────────" print_info "Copia el comando que necesites y reemplaza TU_STREAM_KEY" echo "────────────────────────────────────────────────────────" else # Si no hay jq, mostrar JSON raw print_warning "jq no está instalado, mostrando respuesta raw:" echo "" echo "$BODY" | python3 -m json.tool 2>/dev/null || echo "$BODY" fi else print_error "Error al obtener URL (HTTP $HTTP_CODE)" echo "" print_info "Respuesta del servidor:" echo "$BODY" | python3 -m json.tool 2>/dev/null || echo "$BODY" echo "" print_info "Posibles causas:" echo " 1. El video no está EN VIVO" echo " 2. El video ID es incorrecto" echo " 3. YouTube está bloqueando la petición" echo " 4. yt-dlp necesita actualizarse" fi echo "" echo "═══════════════════════════════════════════════════════════"