Before you begin: Ensure you have a TCP server ready to receive audio. For this guide, we’ll use Snapcast as an example, but any TCP server that accepts raw PCM audio will work.
Prerequisites
- TCP Streamer installed (see Installation guide)
- A TCP server listening for audio (e.g., Snapcast server on port 4953)
- For system audio capture:
- Windows: Built-in WASAPI loopback (speakers/headphones required)
- macOS: BlackHole or similar
- Linux: PulseAudio monitor
Step 1: Launch TCP Streamer
Open TCP Streamer from your applications menu or system tray. The application window displays a tabbed interface with four main sections:- 🎤 Input - Audio device and capture settings
- 🌐 Network - Destination IP, port, and connection settings
- ⚙️ Advanced - Buffer tuning, network optimization, silence detection
- 📊 Stats - Real-time streaming statistics and logs
Step 2: Select Audio Input Device
Navigate to the 🎤 Input tab and configure your audio source.Choose Input Device
Click the Input Device dropdown to see all available audio devices. TCP Streamer scans all host APIs (WASAPI, MME, CoreAudio, ALSA) to find every available input.Device Options:
- Microphones (for voice/instrument capture)
- Line-in devices
- Virtual audio cables (VB-Audio Cable, etc.)
- System loopback devices (BlackHole, PulseAudio Monitor)
Configure Sample Rate
Select your preferred sample rate:
- 48 kHz (recommended) - Modern standard, lower CPU usage
- 44.1 kHz - CD quality, traditional standard
Your TCP server must be configured to receive audio at the same sample rate. Snapcast automatically handles this.
Set Buffer Size
Choose a buffer size that balances latency and stability:
Start with 1024 if unsure.
| Buffer Size | Latency | Stability | Use Case |
|---|---|---|---|
| 256 | Lowest | Lower | Local/wired networks, real-time apps |
| 512 | Low | Good | Balanced for most wired setups |
| 1024 | Moderate | Better | Recommended for WiFi |
| 2048 | Higher | Best | Poor connections, maximum stability |
Capturing System Audio
- Windows
- macOS
- Linux
Using WASAPI Loopback (Built-in)
- Check “Enable Loopback (Windows)” checkbox
- Ensure speakers or headphones are plugged in
- Select your audio output device from the dropdown
- The device name will appear with system audio capability
- Install VB-AUDIO Cable
- Set system output to “CABLE Input”
- In TCP Streamer, select “CABLE Output” as input device
Step 3: Configure Network Destination
Navigate to the 🌐 Network tab.Enter Server IP Address
Input the IP address of your TCP server:
- Local server:
127.0.0.1orlocalhost - Network server:
192.168.1.100(example) - Remote server: Any routable IP address
Set Port Number
Enter the port your server is listening on:
- Snapcast default:
4953 - Custom servers: Check your server configuration
Example Server Configurations
Step 4: Optimize Settings (Optional)
Navigate to the ⚙️ Advanced tab for fine-tuning.Network Presets
Choose a preset based on your connection:- Ethernet (Wired)
- WiFi (Standard)
- WiFi (Poor Signal)
Recommended for stable wired connections
- Ring Buffer: 2000ms
- Chunk Size: 512 samples
- Adaptive Buffer: 2000ms - 6000ms
Higher ring buffer values increase latency but provide better stability. For music playback, 4-8 seconds of latency is usually imperceptible in multi-room setups.
Adaptive Buffer (Recommended)
Enable Adaptive Buffer to automatically adjust buffer size based on network jitter:- Toggle “Enable Adaptive Buffer”
- Set Min Buffer: Minimum size (e.g., 2000ms for Ethernet, 4000ms for WiFi)
- Set Max Buffer: Maximum size (e.g., 6000ms for Ethernet, 12000ms for WiFi)
Silence Detection
Optimize bandwidth by stopping transmission during silence:- Watch the volume meter while playing audio
- Adjust Silence Threshold slider just above the noise floor (white line on meter)
- Set Silence Timeout (e.g., 5 seconds) - stops streaming after this duration of silence
Silence detection saves bandwidth but won’t affect audio quality. Audio resumes instantly when sound is detected.
Step 5: Start Streaming
Time to go live!Click Start Streaming
Click the “Start Streaming” button in any tab.You should see:
- Connection status change to “Connected”
- Real-time statistics begin updating
- Log messages confirming connection
Monitor Connection
Navigate to 📊 Stats tab to view:
- Uptime: Time since streaming started
- Bytes Sent: Total data transmitted
- Bitrate: Current streaming rate (kbps)
- Network Quality: Real-time health score (Excellent/Good/Fair/Poor)
- Buffer Health: Ring buffer utilization
- Jitter: Network stability measurement
Monitoring Real-Time Statistics
The Stats tab provides comprehensive monitoring:| Metric | Description | Normal Range |
|---|---|---|
| Network Quality | Overall connection health | Excellent/Good |
| Jitter | Network timing variance | < 10ms |
| Buffer Health | Ring buffer utilization | 20-80% |
| Bitrate | Data transmission rate | ~1.5 Mbps @ 48kHz stereo |
| Error Count | Connection errors | 0 |
Step 6: Enable Automation (Optional)
For set-and-forget operation:Enable Auto-start on Launch
Check “Auto-start on launch” to run TCP Streamer when your system boots.
- Windows: Creates a startup shortcut
- macOS: Installs LaunchAgent
- Linux: Creates systemd user service or autostart entry
Enable Auto-stream
Check “Auto-stream” to begin streaming immediately after application starts.Perfect for dedicated streaming computers that should always be online.
Saving Configuration Profiles
Save different configurations for various scenarios:Create New Profile
- Click ➕ New in the profile section
- Enter a descriptive name (e.g., “Home-Snapcast”, “Studio-WiFi”)
- Click ✓ Create
The “Default” profile cannot be deleted and serves as your fallback configuration.
Testing Your Setup
Quick Test with Netcat
Before setting up a full server, test with netcat:Verifying Audio Format
TCP Streamer sends raw PCM with these specifications:- Format: Signed 16-bit little-endian (s16le)
- Sample Rate: 44100 or 48000 Hz (as configured)
- Channels: 2 (stereo)
- Bitrate: ~1.4 Mbps (44.1kHz) or ~1.5 Mbps (48kHz)
Troubleshooting
Cannot Connect to Server
Connection Refused
Connection Refused
Cause: Server is not running or not listening on specified portSolution:
- Verify server is running:
netstat -an | grep 4953(Linux/macOS) - Check firewall allows connections on the port
- Try
telnet 192.168.1.100 4953to test connectivity
Connection Timeout
Connection Timeout
Cause: Network routing issue or wrong IP addressSolution:
- Verify IP address:
ping 192.168.1.100 - Check if server is on same network/VLAN
- Try using server hostname instead of IP
Firewall Blocking
Firewall Blocking
Cause: Firewall on client or server blocking TCP connectionSolution:
- Windows: Allow TCP Streamer in Windows Firewall
- macOS: System Settings → Network → Firewall → Allow TCP Streamer
- Linux:
sudo ufw allow out 4953/tcp(if using ufw)
No Audio Being Sent
Silence Detection Active
Silence Detection Active
Cause: No audio playing or threshold set too highSolution:
- Play audio on your computer
- Check volume meter shows activity
- Lower silence threshold slider
- Temporarily disable silence detection to test
Wrong Input Device
Wrong Input Device
Cause: Selected device is not capturing audioSolution:
- Try different input device from dropdown
- For system audio, verify loopback/monitor device is set up
- Check device is not muted in system settings
Permission Denied
Permission Denied
Cause: Application lacks microphone permissionsSolution:
- Grant microphone access in system settings
- macOS: System Settings → Privacy & Security → Microphone
- Windows: Settings → Privacy → Microphone
- Restart TCP Streamer after granting permissions
Audio Stuttering or Dropouts
Buffer Underrun
Buffer Underrun
Cause: Ring buffer too small for network conditionsSolution:
- Increase ring buffer size (try 6000ms or 8000ms)
- Enable Adaptive Buffer with higher max (e.g., 12000ms)
- Use WiFi (Poor) preset if on wireless
- Check Stats tab for “Buffer Health” - should be 20-80%
High Network Jitter
High Network Jitter
Cause: Unstable network connectionSolution:
- Switch to wired connection if possible
- Increase chunk size (try 2048)
- Enable High Priority Thread option
- Check Stats tab - jitter should be <10ms
WASAPI Loopback Specific (Windows)
WASAPI Loopback Specific (Windows)
Cause: WASAPI loopback is more sensitive than VB-Audio CableSolution:
- Application automatically uses 8000ms buffer for WASAPI
- Enable Adaptive Buffer (4000-12000ms range)
- Ensure speakers/headphones remain connected
- Consider using VB-Audio Cable for more stability
Next Steps
Now that you’re streaming successfully:Configuration Guide
Deep dive into advanced settings, profiles, and optimization
Snapcast Integration
Learn how to set up multi-room audio with Snapcast
Troubleshooting
Comprehensive solutions for common issues
API Reference
Technical details and Tauri command reference
Pro Tip: Create multiple profiles for different scenarios (home, work, testing) and use auto-reconnect for unattended operation. TCP Streamer is designed to run 24/7 with minimal intervention.