206 lines
7.2 KiB
Bash
Executable File
206 lines
7.2 KiB
Bash
Executable File
#!/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 "═══════════════════════════════════════════════════════════"
|