steep-balloon-41261
02/21/2026, 2:02 PMtall-airline-16756
02/21/2026, 2:02 PMtall-airline-16756
02/21/2026, 2:03 PM-loglevel debug or -report to capture stack traces.
◦ Example basic looped stream command:
ffmpeg -stream_loop -1 -i hold_music.mp3 -c:a libopus -b:a 128k -f flv rtmp://<ingress-url>
• If FFmpeg crashes with SIGSEGV, inspect the exact command you ran, the binary version, and any filters/plugins. Native crashes often point to a codec or container mismatch or a problem with a binary built against different libs.
• Benefits: efficient, scalable for static or pre-generated TTS, avoids keeping a full participant connection open.
Option 2 — Lightweight "audio-only" agent participant (alternative)
• Run a minimal participant (could be a tiny Node or Python process) that connects to the room as a user and publishes a single audio track for hold music or TTS.
• This is effectively a small client connection instead of the heavier Agent job: easier to publish dynamic/real-time TTS from your backend (generate audio and push to the participant’s audio track).
• Tradeoff: you must manage the connection lifecycle and token refreshes, but works well if Ingress is unstable for your environment.
Option 3 — Use an Agent with only playout responsibilities
• Spawn a minimal agent job whose sole job is to publish audio (no STT/LLM). This allows you to integrate with existing agent lifecycle but keeps CPU/LLM cost low.
• Useful if you want lifecycle hooks and the ability to later expand behavior.
Implementation help I can provide
• If you want an Ingress-based solution, I can provide:
◦ A sample NestJS flow that requests/creates ingress and returns the ingress URL/credentials.
◦ A sample FFmpeg command tuned for Opus audio streaming into ingress.
• If you want a Node or Python “audio participant” example, I can provide a small reproducible script that:
◦ Connects to LiveKit using a server token
◦ Publishes an audio track from a local file or a TTS stream
◦ Handles lifecycle (start/stop)
• If you prefer an agent-lite approach, I can provide sample agent code that only handles audio playout.
Targeted questions so I can produce exact sample code / diagnosis
1. Which approach would you like sample code for: Ingress (FFmpeg), Node/Python audio participant, or minimal agent job?
2. Please paste the exact FFmpeg command you tried and the container/FFmpeg version; also paste the ingress configuration you used. That will help diagnose the SIGSEGV.
3. What environment are the workers running in (Kubernetes, Docker on VM, other)? What CPU & memory limits are set on the failing container?
4. Rough scale: how many concurrent calls per worker do you expect in production? This helps me recommend sensible default load thresholds.
5. For TTS, which provider or format do you produce (MP3, WAV, raw PCM)? That will determine the most reliable FFmpeg pipeline.
If you tell me which option you prefer (and provide FFmpeg command + environment info if you want help debugging SIGSEGV), I’ll send a concise, copy-pasteable sample: either NestJS + ingress creation + FFmpeg command, or a Node/Python participant script to publish audio into a room.
Sources: An open source stack for real-time multimodal AI | Job lifecycle | LiveKit Documentation | Self-hosted deployments | LiveKit Documentation | Server options | LiveKit Documentation | Playing Audio | LiveKit Documentation