requirements
This commit is contained in:
211
Requirements.md
Normal file
211
Requirements.md
Normal file
@@ -0,0 +1,211 @@
|
||||
# Raspberry Pi Video Player Auto-Start Script Requirements
|
||||
|
||||
## Project Overview
|
||||
A Raspberry Pi script that automatically starts on boot and handles video playing using VLC media player on Raspbian desktop.
|
||||
|
||||
## System Requirements
|
||||
|
||||
### Hardware
|
||||
- Raspberry Pi (any model with sufficient processing power for video playback)
|
||||
- MicroSD card (minimum 16GB, Class 10 recommended)
|
||||
- Power supply (official Raspberry Pi power adapter recommended)
|
||||
- HDMI cable for display output
|
||||
- **IR Receiver Module**: Compatible with Raspberry Pi GPIO (e.g., TSOP4838, TSOP38238)
|
||||
- **IR Remote Control**: Any standard IR remote (TV, DVD player, etc.)
|
||||
- Optional: External storage for video files
|
||||
|
||||
### Software
|
||||
- **Operating System**: Raspbian Desktop (latest version)
|
||||
- **Python**: Python 3.x (usually pre-installed on Raspbian)
|
||||
- **VLC Media Player**: Latest version compatible with Raspbian
|
||||
- **System Dependencies**: Standard Linux utilities for service management
|
||||
|
||||
## Functional Requirements
|
||||
|
||||
### Core Features
|
||||
1. **Auto-Start on Boot**
|
||||
- Script must start automatically when Raspberry Pi boots
|
||||
- Should work with both GUI and headless boot scenarios
|
||||
- Must handle system startup delays gracefully
|
||||
|
||||
2. **Video Playback Management**
|
||||
- Launch VLC media player programmatically
|
||||
- Support for common video formats (MP4, AVI, MKV, MOV, etc.)
|
||||
- Handle video file discovery and selection
|
||||
- Manage playback controls (play, pause, stop, next, previous)
|
||||
|
||||
3. **IR Remote Control**
|
||||
- Receive and decode IR signals from remote control
|
||||
- Map IR codes to video playback commands
|
||||
- Support configurable IR code mapping through configuration file
|
||||
- Handle multiple remote control types and protocols
|
||||
- Real-time IR signal processing with GPIO
|
||||
- **TV Channel Simulation**: Map number keys (0-9) to specific videos
|
||||
- **Channel Management**: Direct video access via remote number keys
|
||||
|
||||
4. **File Management**
|
||||
- Monitor a specific folder for video files
|
||||
- Handle file path resolution and validation for the designated video folder
|
||||
- Support for common video file extensions in the target folder
|
||||
- Optional: Support for network storage (SMB, NFS) if the folder is on network storage
|
||||
|
||||
5. **TV Channel System**
|
||||
- **Channel Assignment**: Automatically assign videos to channel numbers
|
||||
- **Channel Discovery**: Scan video folder and create channel list
|
||||
- **Channel Navigation**: Direct channel access via number keys
|
||||
- **Channel Display**: Show current channel number and video name
|
||||
- **Channel Management**: Add, remove, or reorder channels
|
||||
- **Default Channel**: Set a default channel to start on boot
|
||||
|
||||
### Configuration Requirements
|
||||
1. **Configurable Settings**
|
||||
- **Video source directory path**: Single designated folder containing all video files
|
||||
- Playback mode (single file, playlist, loop, random)
|
||||
- VLC player options and preferences
|
||||
- Display settings (fullscreen, windowed)
|
||||
- Audio output configuration
|
||||
- **Channel System Settings**:
|
||||
- Default channel number on startup
|
||||
- Channel assignment method (alphabetical, manual, custom order)
|
||||
- Channel display timeout duration
|
||||
- Multi-digit channel input timeout
|
||||
|
||||
2. **IR Remote Configuration**
|
||||
- **IR Code Mapping File**: JSON/YAML configuration file mapping IR codes to commands
|
||||
- GPIO pin configuration for IR receiver
|
||||
- IR protocol settings (NEC, RC5, RC6, etc.)
|
||||
- Command mapping for standard controls:
|
||||
- Play/Pause
|
||||
- Stop
|
||||
- Next/Previous video
|
||||
- Volume up/down
|
||||
- Seek forward/backward
|
||||
- Fullscreen toggle
|
||||
- **Channel Mapping Configuration**:
|
||||
- Number keys (0-9) mapped to specific video files
|
||||
- Channel list configuration file (channels.json/yaml)
|
||||
- Support for multi-digit channel numbers (e.g., 10, 11, 12...)
|
||||
- Channel naming and organization
|
||||
- Channel metadata (name, description, category)
|
||||
- Channel priority and ordering
|
||||
|
||||
3. **Logging and Monitoring**
|
||||
- Log script execution and errors
|
||||
- Monitor VLC process status
|
||||
- Handle VLC crashes and restart scenarios
|
||||
- System resource monitoring (optional)
|
||||
- Channel switching logs and statistics
|
||||
- IR remote usage tracking
|
||||
|
||||
## Technical Requirements
|
||||
|
||||
### Dependencies
|
||||
- **python-vlc**: Python bindings for VLC media player
|
||||
- **python-dotenv**: Environment variable management
|
||||
- **psutil**: System and process utilities
|
||||
- **pathlib**: Modern path handling
|
||||
- **logging**: Built-in Python logging module
|
||||
- **subprocess**: Process management
|
||||
- **time**: Timing and delays
|
||||
- **os**: Operating system interface
|
||||
- **RPi.GPIO**: Raspberry Pi GPIO control library
|
||||
- **lirc**: Linux Infrared Remote Control (optional, for advanced IR handling)
|
||||
- **pigpio**: Alternative GPIO library with IR support
|
||||
- **json/yaml**: Configuration file parsing
|
||||
- **threading**: Multi-threaded IR signal processing and channel management
|
||||
- **queue**: Thread-safe communication between IR handler and video player
|
||||
|
||||
### System Integration
|
||||
- **systemd service**: For reliable auto-start functionality
|
||||
- **Desktop autostart**: Alternative method using .desktop files
|
||||
- **User permissions**: Proper file access permissions
|
||||
- **Environment variables**: Configuration management
|
||||
- **GPIO permissions**: Access to GPIO pins for IR receiver
|
||||
- **IR signal processing**: Real-time IR code detection and decoding
|
||||
- **Channel management system**: Video-to-channel mapping and navigation
|
||||
- **Multi-digit input handling**: Channel number input with timeout
|
||||
|
||||
## Non-Functional Requirements
|
||||
|
||||
### Performance
|
||||
- Script should start within 30 seconds of system boot
|
||||
- Minimal system resource usage when idle
|
||||
- Efficient video file scanning of the designated folder
|
||||
- Responsive playback control
|
||||
- IR signal response time under 100ms
|
||||
- Low-latency GPIO interrupt handling
|
||||
- Channel switching response time under 200ms
|
||||
- Multi-digit channel input processing under 50ms per digit
|
||||
|
||||
### Reliability
|
||||
- Handle VLC crashes gracefully
|
||||
- Recover from temporary file system issues
|
||||
- Robust error handling and logging
|
||||
- Prevent multiple script instances
|
||||
- Handle IR signal interference and noise
|
||||
- Graceful degradation when IR receiver fails
|
||||
- Handle invalid channel numbers gracefully
|
||||
- Recover from channel mapping file corruption
|
||||
|
||||
### Usability
|
||||
- Simple configuration through text files
|
||||
- Clear logging for troubleshooting
|
||||
- Easy installation and setup process
|
||||
- Support for remote management (optional)
|
||||
- Easy IR code learning and mapping process
|
||||
- Intuitive remote control operation
|
||||
- TV-like channel navigation experience
|
||||
- Clear channel number display and feedback
|
||||
|
||||
## Security Considerations
|
||||
- Secure file access permissions
|
||||
- Input validation for file paths
|
||||
- Protection against malicious video files
|
||||
- Safe handling of user-provided configuration
|
||||
|
||||
## Future Enhancements (Optional)
|
||||
- Web interface for remote control
|
||||
- Support for streaming protocols
|
||||
- Integration with media servers
|
||||
- Scheduled playback
|
||||
- Multi-monitor support
|
||||
- Audio-only mode support
|
||||
- Multiple IR remote support with device switching
|
||||
- IR code learning mode for unknown remotes
|
||||
- Custom IR command sequences (macros)
|
||||
- IR remote power management (wake/sleep)
|
||||
- **Advanced Channel Features**:
|
||||
- Channel favorites and bookmarks
|
||||
- Channel categories and filtering
|
||||
- Channel guide/EPG-like interface
|
||||
- Parental controls for specific channels
|
||||
- Channel recording and scheduling
|
||||
|
||||
## Installation Requirements
|
||||
- Automated installation script
|
||||
- Dependency management
|
||||
- Configuration file templates
|
||||
- Documentation for setup and usage
|
||||
- Uninstallation procedure
|
||||
- GPIO pin configuration guide
|
||||
- IR receiver hardware setup instructions
|
||||
- IR code mapping configuration examples
|
||||
- Channel mapping setup and configuration guide
|
||||
- Sample channel configuration files
|
||||
|
||||
## Testing Requirements
|
||||
- Test on different Raspberry Pi models
|
||||
- Verify compatibility with various video formats
|
||||
- Test auto-start functionality
|
||||
- Validate error handling scenarios
|
||||
- Performance testing with large video files
|
||||
- IR remote control testing with various remote types
|
||||
- GPIO interrupt handling validation
|
||||
- IR signal decoding accuracy testing
|
||||
- Configuration file parsing validation
|
||||
- **Channel System Testing**:
|
||||
- Channel number input and validation
|
||||
- Multi-digit channel number handling
|
||||
- Channel switching performance
|
||||
- Channel mapping file integrity
|
||||
- Channel display and feedback testing
|
||||
Reference in New Issue
Block a user