Skip to content

streamlr/stream-server-container

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kick Stream Server with Fallback 🚀

Este proyecto proporciona un servidor de streaming en Docker que garantiza que tu stream en Kick nunca se caiga. Utiliza Nginx-RTMP para recibir tu señal (desde OBS, vMix, etc.) y FFmpeg para reenviarla a Kick.

Si tu señal de origen se interrumpe, el servidor cambia automáticamente a un video de fallback (fondo) sin cerrar la conexión con Kick.

Requisitos

Recursos VPS

Nivel CPU RAM FPS Bitrate recomendado Preset recomendado
Mínimo 1–2 vCPU 1 GB 30 4500k–6000k superfast o ultrafast
Recomendado 2–4 vCPU 2–4 GB 60 6000k–8000k veryfast
Óptimo 4+ vCPU 4+ GB 60 8000k–12000k veryfast o fast

Configura FFMPEG_BITRATE, FFMPEG_PRESET y STREAM_FPS en tu .env según el nivel de tu VPS. Si el stream va a tirones o la CPU va al 100%, baja el bitrate, reduce los FPS (ej. 30) o usa un preset más rápido (ultrafast < superfast < veryfast < fast).

Configuración Rápida

  1. Clonar/Descargar los archivos en una carpeta.
  2. Configurar credenciales: Copia el archivo de ejemplo:
    cp .env.example .env
    Edita .env y añade tus datos de Kick:
    KICK_STREAM_URL=rtmps://tu-servidor-de-kick
    KICK_STREAM_KEY=sk_tu-clave-de-retransmision
  3. Video de Fallback: Coloca un video llamado fallback.mp4 en la carpeta assets/ (o configura FALLBACK_VIDEO en .env). Si el archivo no existe, el servidor generará automáticamente video negro con silencio para que la conexión con Kick no se corte.
  4. Calidad de video (opcional): Si la imagen se ve pixelada, ajusta en .env:
    FFMPEG_BITRATE=10000k     # Bitrate (10000k recomendado para 1080p60 gaming)
    FFMPEG_BUFSIZE=20000k     # Buffer (2× bitrate)
    FFMPEG_PRESET=veryfast   # veryfast, superfast, ultrafast (más rápido = menos calidad)
    GOP_SIZE=15              # Más bajo = más keyframes = menos pixelación en movimientos bruscos
  5. Movimientos bruscos / caídas (gaming): Si el stream se cae o se pixela al mover la cámara rápido:
    FFMPEG_BITRATE=10000k     # O 12000k si tu VPS y Kick lo permiten
    GOP_SIZE=15               # Keyframes más frecuentes = recuperación más rápida
    UDP_FIFO_SIZE=5000000     # Buffer UDP mayor (o 10000000 si sigue glitcheando)
    En OBS, usa la misma tasa de bits (10000) y 60 FPS.
  6. Bandas horizontales / tearing (opcional): Si el stream se ve "glitcheado" o con bandas, aumenta el buffer UDP:
    UDP_FIFO_SIZE=5000000     # Default para gaming. Prueba 10000000 si persiste
    STREAM_FPS=60             # Debe coincidir con OBS (60 para gaming, 30 para ahorrar)
  7. Cortes entre OBS y fallback (opcional): Si el stream parpadea entre tu señal y el fallback, aumenta el debounce. Si el fallback tarda en aparecer, bájalo o ponlo a 0:
    FALLBACK_DELAY=0.5        # Segundos antes de activar fallback (default 0.5). 0 = inmediato. Más alto = menos parpadeo

Uso

  1. Levantar el servidor:
    docker compose up -d --build
  2. Configurar OBS:
    • Codificador: x264 o NVIDIA NVENC H.264
    • Tasa de bits: La misma que FFMPEG_BITRATE en tu .env (ej. 10000 para 10000k, 8000 para 8000k)
    • Servicio: Personalizado
    • Servidor: rtmp://localhost:1935/live (o rtmp://localhost:1935 si OBS pide servidor y app por separado)
    • Clave de retransmisión: stream

Cómo funciona

  • El servidor Docker está "siempre encendido", transmitiendo el video de fallback a Kick.
  • Cuando empiezas a emitir desde OBS a rtmp://localhost:1935/live/stream, el servidor detecta la señal.
  • Tu señal en vivo sustituye al video de fallback en el pipe hacia Kick.
  • Si dejas de transmitir, el servidor vuelve a enviar el video de fallback (o video negro si no hay archivo); el proceso que envía datos a Kick no se detiene.

Comandos Útiles

  • Ver logs en tiempo real: docker logs -f kick-stream-server
  • Detener el servidor: docker compose down
  • Reiniciar el servidor: docker compose restart

Hecho con con fines de streaming ininterrumpido.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors