193 lines
5.3 KiB
Markdown
193 lines
5.3 KiB
Markdown
# Moonlight Drive-In Theater System
|
|
|
|
A sophisticated NFC-based video player system designed for an immersive drive-in theater experience. Features seamless dual-player video transitions, web-based remote control, and advanced automation capabilities.
|
|
|
|
## 🎬 Features
|
|
|
|
- **NFC-Based Control**: Physical NFC tags trigger movie playback
|
|
- **Seamless Video Transitions**: Dual MPV player architecture for smooth playback
|
|
- **Web Interface**: Modern, responsive dashboard for remote control
|
|
- **Folder Sequences**: Support for multi-video sequences with automatic progression
|
|
- **Anti-Repeat Logic**: Smart trailer rotation to prevent repetitive playback
|
|
- **Unattend Mode**: Automatic cycling through content (3 trailers + 1 movie pattern)
|
|
- **Global NFC Capture**: Works even when video is fullscreen
|
|
- **Multi-Device Support**: Control from desktop, mobile, or tablet
|
|
|
|
## 🚀 Quick Start
|
|
|
|
### Prerequisites
|
|
|
|
```bash
|
|
pip install -r web_requirements.txt
|
|
```
|
|
|
|
### Basic Setup
|
|
|
|
1. **Place your videos**:
|
|
- Trailers → `videos/trailers/`
|
|
- Single movies → `videos/specific/`
|
|
- Folder sequences → `videos/groupvideos/[folder_name]/`
|
|
|
|
2. **Configure NFC mappings**:
|
|
- Single videos: Edit `videos/key_mapping.txt`
|
|
- Folder sequences: Edit `videos/folder_mapping.txt`
|
|
|
|
3. **Run the player**:
|
|
```bash
|
|
# MPV-only mode
|
|
python movie.bat
|
|
|
|
# With web interface
|
|
python start_web_player.bat
|
|
```
|
|
|
|
4. **Access web interface**:
|
|
- Local: `http://localhost:8547`
|
|
- Network: `http://[your-ip]:8547`
|
|
|
|
## 📁 Project Structure
|
|
|
|
```
|
|
moonlight-drive-in/
|
|
├── main.py # VLC-based main (legacy)
|
|
├── mpv_seamless_player.py # Core MPV video player
|
|
├── config.py # Configuration management
|
|
├── debug_console.py # Desktop debug interface
|
|
├── enhanced_debug_console.py # Enhanced debug with web support
|
|
├── web_interface.py # Flask web dashboard
|
|
├── web_mpv_main.py # Web-enabled entry point
|
|
├── *.bat # Windows launcher scripts
|
|
├── dashboard.html # Web dashboard interface
|
|
├── validate_videos.py # Validation tool
|
|
└── videos/
|
|
├── trailers/ # Trailer video files
|
|
├── specific/ # Single movie files
|
|
├── groupvideos/ # Folder sequence videos
|
|
├── key_mapping.txt # NFC to single video mappings
|
|
├── folder_mapping.txt # NFC to folder mappings
|
|
└── folder_state.json # Playback position tracking
|
|
```
|
|
|
|
## 🎮 Usage
|
|
|
|
### NFC Mapping Format
|
|
|
|
**Single Videos** (`key_mapping.txt`):
|
|
```
|
|
12345678,avengers
|
|
87654321,spider-man
|
|
```
|
|
|
|
**Folder Sequences** (`folder_mapping.txt`):
|
|
```
|
|
11111111,LOTR
|
|
22222222,Avengers
|
|
33333333,Jurassic
|
|
```
|
|
|
|
### Web Interface
|
|
|
|
Access the web dashboard for:
|
|
- 📊 Real-time statistics
|
|
- 🎮 Video controls (skip, mute, fullscreen)
|
|
- 🎬 Manual video selection
|
|
- 📁 Folder management
|
|
- ⚙️ System configuration
|
|
|
|
### Debug Console
|
|
|
|
The desktop debug console provides:
|
|
- Real-time log viewing
|
|
- Manual NFC input testing
|
|
- System statistics
|
|
- Quick controls
|
|
- Folder sequence reset
|
|
|
|
## 🛠️ Advanced Features
|
|
|
|
### Folder Sequences
|
|
|
|
Create multi-video sequences that play in order:
|
|
|
|
1. Create folder: `videos/groupvideos/MySequence/`
|
|
2. Add numbered videos: `01_intro.mp4`, `02_main.mp4`, `03_outro.mp4`
|
|
3. Map NFC tag in `folder_mapping.txt`: `12345678,MySequence`
|
|
4. Each scan plays the next video in sequence
|
|
|
|
### Anti-Repeat Algorithm
|
|
|
|
- Tracks last 36 trailers played
|
|
- Ensures variety in trailer rotation
|
|
- Automatically clears history when pool runs low
|
|
|
|
### Network Client Support
|
|
|
|
Send NFC commands over network (port 1360):
|
|
```python
|
|
import socket
|
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
sock.connect(('localhost', 1360))
|
|
sock.send(b'12345678')
|
|
```
|
|
|
|
## 🔧 Configuration
|
|
|
|
Edit `config.py` to customize:
|
|
- Video directories
|
|
- NFC settings
|
|
- Playback parameters
|
|
- Display preferences
|
|
- Logging levels
|
|
|
|
## 🐛 Troubleshooting
|
|
|
|
### Validate Your Setup
|
|
|
|
```bash
|
|
python validate.bat
|
|
```
|
|
|
|
This checks:
|
|
- Directory structure
|
|
- Video file locations
|
|
- NFC mapping validity
|
|
- Missing files
|
|
|
|
### Common Issues
|
|
|
|
**No trailers playing**: Ensure trailer files are in `videos/trailers/`
|
|
|
|
**NFC not working**: Check global input capture status in debug console
|
|
|
|
**Web interface not accessible**: Verify firewall allows port 8547
|
|
|
|
**Folder sequences not advancing**: Check `folder_state.json` or reset via debug console
|
|
|
|
## 📊 System Requirements
|
|
|
|
- **OS**: Windows (primary), Linux (experimental)
|
|
- **Python**: 3.8+
|
|
- **MPV**: Required for video playback
|
|
- **NFC Reader**: ACS ACR122 or compatible
|
|
- **Network**: For web interface access
|
|
|
|
## 🔮 Planned Features
|
|
|
|
- LEGO Dimensions Portal integration (7-zone NFC reading)
|
|
- Bluetooth LED controller integration
|
|
- Expanded capacity beyond 64 movies
|
|
- Additional automation patterns
|
|
- Enhanced gallery interfaces
|
|
|
|
## 📝 License
|
|
|
|
This is a personal project for the Moonlight Drive-In theater system.
|
|
|
|
## 🙏 Credits
|
|
|
|
Created by Jess for an immersive drive-in theater experience.
|
|
|
|
---
|
|
|
|
**Note**: This system is designed for a specific drive-in theater setup. Adapt paths and configurations for your environment.
|