333 lines
6.8 KiB
Markdown
333 lines
6.8 KiB
Markdown
# Moonlight Drive-In Setup Guide
|
|
|
|
Complete setup instructions for the Moonlight Drive-In theater system.
|
|
|
|
## 📋 Prerequisites
|
|
|
|
### System Requirements
|
|
- **Operating System**: Windows 10/11 (primary), Linux (experimental)
|
|
- **Python**: Version 3.8 or higher
|
|
- **MPV**: Media player library
|
|
- **NFC Reader**: ACS ACR122 or compatible USB reader
|
|
|
|
### Hardware Setup
|
|
1. Connect NFC reader to USB port
|
|
2. Connect display/projector
|
|
3. Ensure stable network connection (for web interface)
|
|
|
|
## 🔧 Installation
|
|
|
|
### Step 1: Install Python Dependencies
|
|
|
|
```bash
|
|
# Install all required packages
|
|
pip install -r web_requirements.txt
|
|
|
|
# Or install individually
|
|
pip install python-mpv flask flask-socketio pynput psutil
|
|
```
|
|
|
|
### Step 2: Install MPV Player
|
|
|
|
**Windows:**
|
|
1. Download MPV from https://mpv.io/installation/
|
|
2. Extract to `C:\DriveIn\mpv\` or update PATH in batch files
|
|
3. Ensure `mpv.exe` is in system PATH
|
|
|
|
**Linux:**
|
|
```bash
|
|
sudo apt install mpv python3-mpv
|
|
```
|
|
|
|
### Step 3: Configure Directories
|
|
|
|
The system will auto-create required directories on first run:
|
|
```
|
|
videos/
|
|
├── trailers/ # Trailer video files
|
|
├── specific/ # Single movie files
|
|
└── groupvideos/ # Folder sequences
|
|
```
|
|
|
|
## 🎬 Video Setup
|
|
|
|
### Adding Trailers
|
|
|
|
1. Place trailer videos in `videos/trailers/`
|
|
2. Supported formats: .mp4, .avi, .mov, .mkv, .wmv, .flv, .webm, .m4v
|
|
3. Trailers play randomly between movies
|
|
|
|
### Adding Single Movies
|
|
|
|
1. Place movie files in `videos/specific/`
|
|
2. Note the filename (without extension)
|
|
3. Map to NFC tags in `videos/key_mapping.txt`
|
|
|
|
Example:
|
|
```
|
|
videos/specific/avengers-endgame.mp4
|
|
```
|
|
|
|
Mapping in `videos/key_mapping.txt`:
|
|
```
|
|
12345678,avengers-endgame
|
|
```
|
|
|
|
### Creating Folder Sequences
|
|
|
|
For multi-part movies or series:
|
|
|
|
1. Create a folder in `videos/groupvideos/`
|
|
```
|
|
videos/groupvideos/LOTR/
|
|
```
|
|
|
|
2. Add numbered videos:
|
|
```
|
|
videos/groupvideos/LOTR/01_fellowship.mp4
|
|
videos/groupvideos/LOTR/02_towers.mp4
|
|
videos/groupvideos/LOTR/03_return.mp4
|
|
```
|
|
|
|
3. Map to NFC in `videos/folder_mapping.txt`:
|
|
```
|
|
11111111,LOTR
|
|
```
|
|
|
|
4. Each NFC scan plays the next video in sequence!
|
|
|
|
## 🏷️ NFC Configuration
|
|
|
|
### Reading NFC IDs
|
|
|
|
Use the debug console's "NFC Test" field to read your tags:
|
|
1. Start the player
|
|
2. Click in the "NFC Test" field
|
|
3. Scan your NFC tag
|
|
4. The ID will appear in the field
|
|
5. Copy this ID for your mapping files
|
|
|
|
### Mapping Files
|
|
|
|
**videos/key_mapping.txt** - Single videos:
|
|
```
|
|
# Format: NFC_ID, Movie_Name
|
|
12345678,avengers
|
|
87654321,spider-man
|
|
```
|
|
|
|
**videos/folder_mapping.txt** - Folder sequences:
|
|
```
|
|
# Format: NFC_ID, Folder_Name
|
|
11111111,LOTR
|
|
22222222,Avengers
|
|
```
|
|
|
|
### Validation
|
|
|
|
Run the validation script to check your setup:
|
|
```bash
|
|
python validate.bat
|
|
```
|
|
|
|
This checks:
|
|
- All video files exist
|
|
- Mapping files are valid
|
|
- NFC IDs are properly configured
|
|
- Reports missing files
|
|
|
|
## 🚀 Running the System
|
|
|
|
### Basic Mode (MPV Only)
|
|
|
|
```bash
|
|
# Windows
|
|
movie.bat
|
|
|
|
# Or directly
|
|
python mpv_main_fixed.py
|
|
```
|
|
|
|
### Web Interface Mode
|
|
|
|
```bash
|
|
# Windows
|
|
start_web_player.bat
|
|
|
|
# Or directly
|
|
python web_mpv_main.py
|
|
```
|
|
|
|
Access web interface at:
|
|
- Local: http://localhost:8547
|
|
- Network: http://[your-ip]:8547
|
|
|
|
### Features Available
|
|
|
|
**Debug Console:**
|
|
- Real-time log viewing
|
|
- Manual NFC testing
|
|
- Quick controls
|
|
- Statistics display
|
|
- Folder sequence reset
|
|
|
|
**Web Interface:**
|
|
- Multi-page dashboard
|
|
- Statistics page
|
|
- Control page
|
|
- Video selection
|
|
- System management
|
|
|
|
## 🎮 Usage
|
|
|
|
### Playing Videos
|
|
|
|
1. **NFC Scan**: Simply scan an NFC tag to play mapped video
|
|
2. **Manual Selection**: Use web interface to select videos
|
|
3. **Trailers**: Play automatically between movies
|
|
|
|
### Folder Sequences
|
|
|
|
1. Scan NFC tag to play first video in sequence
|
|
2. Video plays to completion
|
|
3. Returns to trailer mode
|
|
4. Next scan plays second video
|
|
5. Continues through sequence, then loops
|
|
|
|
### Controls
|
|
|
|
**Keyboard (when focused):**
|
|
- Numbers + Enter: Manual NFC input
|
|
|
|
**Web Interface:**
|
|
- Skip Video
|
|
- Toggle Fullscreen
|
|
- Mute/Unmute
|
|
- Manual video selection
|
|
|
|
**Debug Console:**
|
|
- Skip Video button
|
|
- Toggle Fullscreen
|
|
- Mute/Unmute
|
|
- Reset Folder Sequences
|
|
|
|
## 🔧 Troubleshooting
|
|
|
|
### NFC Reader Not Working
|
|
|
|
1. Check USB connection
|
|
2. Verify driver installation
|
|
3. Test with NFC Test field in debug console
|
|
4. Check global input capture status
|
|
|
|
### Videos Won't Play
|
|
|
|
1. Run validation script
|
|
2. Check video format is supported
|
|
3. Verify file paths in mapping files
|
|
4. Check MPV is installed and in PATH
|
|
|
|
### Web Interface Not Accessible
|
|
|
|
1. Check firewall allows port 8547
|
|
2. Verify Flask and Flask-SocketIO installed
|
|
3. Check IP address is correct for network access
|
|
4. Try http://localhost:8547 first
|
|
|
|
### Folder Sequences Not Advancing
|
|
|
|
1. Check folder_state.json in videos folder
|
|
2. Use "Reset Folder Sequences" in debug console
|
|
3. Verify folder structure is correct
|
|
4. Check videos are named in correct order
|
|
|
|
## 📊 Advanced Configuration
|
|
|
|
### Changing Web Port
|
|
|
|
Edit `web_mpv_main.py`:
|
|
```python
|
|
web_port = 8547 # Change to your preferred port
|
|
```
|
|
|
|
Or pass as command line argument:
|
|
```bash
|
|
python web_mpv_main.py 9000
|
|
```
|
|
|
|
### Custom Video Directories
|
|
|
|
Edit paths in `config.py`:
|
|
```python
|
|
VIDEOS_DIR = BASE_DIR / "videos"
|
|
TRAILERS_DIR = VIDEOS_DIR / "trailers"
|
|
```
|
|
|
|
### Anti-Repeat Settings
|
|
|
|
Edit `mpv_seamless_player.py`:
|
|
```python
|
|
self.max_recent_trailers = 36 # Don't repeat within last N plays
|
|
```
|
|
|
|
### Logging Level
|
|
|
|
Edit `config.py`:
|
|
```python
|
|
LOG_LEVEL = logging.DEBUG # Change to INFO, WARNING, or ERROR
|
|
```
|
|
|
|
## 🔄 Maintenance
|
|
|
|
### Reloading Mappings
|
|
|
|
Without restart:
|
|
1. Edit mapping files
|
|
2. Use web interface → System → Reload Mappings
|
|
3. Or press "Reload Mappings" in debug console
|
|
|
|
### Clearing Folder State
|
|
|
|
To restart all sequences from beginning:
|
|
1. Debug Console → "Reset Folder Sequences" button
|
|
2. Or delete `videos/folder_state.json`
|
|
|
|
### Log Files
|
|
|
|
Logs stored in `logs/` directory:
|
|
- Named by timestamp
|
|
- Rotated automatically
|
|
- Contains detailed debugging info
|
|
|
|
## 📝 Best Practices
|
|
|
|
1. **File Naming**: Use numbers for ordering (01_, 02_, etc.)
|
|
2. **Video Formats**: Prefer .mp4 for compatibility
|
|
3. **Backup Mappings**: Keep copies of mapping files
|
|
4. **Test First**: Use validation script before deployment
|
|
5. **Network**: Use static IP for consistent web access
|
|
|
|
## 🆘 Support
|
|
|
|
Check the logs in `logs/` directory for detailed error messages.
|
|
|
|
Run diagnostics:
|
|
```bash
|
|
python folder_diagnostic.py # Check folder structure
|
|
python validate_videos.py # Validate complete setup
|
|
```
|
|
|
|
## 🎯 Quick Start Checklist
|
|
|
|
- [ ] Python 3.8+ installed
|
|
- [ ] MPV player installed
|
|
- [ ] Required packages installed (`pip install -r web_requirements.txt`)
|
|
- [ ] Videos placed in appropriate directories
|
|
- [ ] NFC tags mapped in configuration files
|
|
- [ ] Validation script run successfully
|
|
- [ ] Test with manual NFC input
|
|
- [ ] Web interface accessible
|
|
- [ ] NFC reader connected and working
|
|
|
|
You're ready to go! 🎬
|