A comprehensive web-based controller for OBS Studio with scene switching, stream/record controls, audio management, and real-time monitoring via WebSocket connection.
Current Version: 1.1.32
Latest Update: Performance optimizations
- 🎭 Scene Management - Switch between OBS scenes with beautiful buttons
- 📺 Stream & Record Controls - Start/stop streaming and recording with one click
- 🎵 Audio Management - Control audio sources (mute/unmute, volume adjustment)
- 📊 Real-time Monitoring - Live status of connection, stream, recording, and FPS
- 🎨 Theme Customization - 6 beautiful color themes including dark mode
- ⚡ Professional UI - Modern Bootstrap-based interface with smooth animations
- 🔒 Secure - Built with security best practices and HTTPS support
- Node.js (version 14 or higher)
- OBS Studio with WebSocket plugin installed
- OBS WebSocket (version 5.0 or higher)
-
Clone the repository:
git clone https://github.com/staticextasy/XTouchController.git cd XTouchController -
Install dependencies:
npm install
-
Configure OBS WebSocket:
- Open OBS Studio
- Go to
Tools→WebSocket Server Settings - Enable WebSocket server
- Set a password (remember this for configuration)
- Note your OBS PC's IP address
-
Configure the application:
- The application now uses a web interface for configuration
- No need to edit script.js files
- Connection settings are entered directly in the web interface
-
Start the server:
# Development mode (with auto-restart) npm run dev # Production mode npm start
-
Access the application:
- Open your browser and go to
http://localhost:3000 - Enter your OBS WebSocket IP address and password in the connection fields
- Click "Connect" to establish connection to OBS
- Open your browser and go to
- Click any scene button to switch to that scene in OBS
- Active scenes are highlighted with a green glow
- 📡 Stream Button - Start/stop streaming
- 🔴 Record Button - Start/stop recording
- ⏪ Replay Buffer - Save replay buffer
- Mute/Unmute - Toggle audio sources on/off
- Volume Slider - Adjust volume levels in real-time
- Audio Level Indicator - Visual feedback of current volume
- Connection Status - Shows connection to OBS
- Stream Status - Current streaming state
- Recording Status - Current recording state
- FPS Counter - Real-time FPS monitoring
- Click the theme buttons in the top-right corner
- Choose from 6 beautiful themes:
- 🌊 Ocean (default)
- 🌅 Sunset
- 🌲 Forest
- 🌙 Midnight
- 🌌 Aurora
- 🌑 Dark Mode
PORT- Server port (default: 3000)NODE_ENV- Environment mode (development/production)
- Port: 4455 (default)
- Password: Set in OBS WebSocket settings
- IP Address: Your OBS PC's local IP address
XTouchController/
├── index.html # Main HTML file
├── changelog.html # Changelog page
├── styles.css # Custom CSS styles
├── script.js # Main JavaScript logic
├── changelog.js # Changelog functionality
├── utils.js # Shared utilities and theme management
├── server.js # Express server with caching
├── package.json # Dependencies and scripts
└── README.md # Documentation
npm start- Start production servernpm run dev- Start development server with auto-restartnpm test- Run tests (placeholder)
GET /- Main applicationGET /changelog- Changelog pageGET /health- Health checkGET /api/status- Server statusGET /api/github/*- GitHub API proxy with caching
- Helmet.js - Security headers
- CORS - Cross-origin resource sharing
- Content Security Policy - XSS protection
- Compression - Gzip compression for performance
- Rate Limiting - Built-in request throttling
- Input Validation - Sanitized user inputs
-
Check OBS WebSocket settings
- Ensure WebSocket server is enabled
- Verify password is correct
- Check IP address is accessible
-
Network Issues
- Ensure both devices are on the same network
- Check firewall settings
- Try using localhost if running on same machine
-
Browser Issues
- Clear browser cache
- Try different browser
- Check browser console for errors
- "WebSocket connection failed" - Check OBS WebSocket settings
- "Authentication failed" - Verify password in configuration
- "Scenes not loading" - Check OBS is running and scenes exist
- ✅ Optimized polling intervals with debouncing
- ✅ Implemented server-side caching for API responses
- ✅ Added static asset caching with proper headers
- ✅ Eliminated code duplication between scripts
- ✅ Centralized theme management system
- ✅ Enhanced mobile touch event handling
- ✅ Shared utilities module (
utils.js) - ✅ Performance utilities (debounce/throttle)
- ✅ Centralized error handling
- ✅ Enhanced mobile experience
- ✅ Improved theme switching performance
This project is licensed under the MIT License - see the LICENSE file for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
If you encounter any issues or have questions:
- Check the troubleshooting section
- Search existing issues
- Create a new issue with detailed information
Made with ❤️ for the streaming community