Overview
The MPV integration allows StreamVault to launch the external MPV player and track playback progress in real-time using a Lua script-based IPC mechanism.Architecture
Backend: Rust module at/home/daytona/workspace/source/src-tauri/src/mpv_ipc.rs
Key Components
- Lua Script Generation: Creates a tracking script that MPV loads
- Progress File: JSON file updated by MPV every 2 seconds
- Process Monitoring: Background thread monitors MPV process
- Database Sync: Progress saved to database periodically
Launch Flow
1. Create Tracking Script
/home/daytona/workspace/source/src-tauri/src/mpv_ipc.rs:132-148
2. Launch MPV Process
/home/daytona/workspace/source/src-tauri/src/mpv_ipc.rs:219-226
3. Monitor Playback
/home/daytona/workspace/source/src-tauri/src/mpv_ipc.rs:393-460
Progress Tracking
Progress Data Structure
/home/daytona/workspace/source/src-tauri/src/mpv_ipc.rs:12-18
Lua Script Tracking
The Lua script injected into MPV tracks progress:/home/daytona/workspace/source/src-tauri/src/mpv_ipc.rs:36-130
Cloud Streaming
Authentication Headers
For cloud files, pass authorization headers:/home/daytona/workspace/source/src-tauri/src/mpv_ipc.rs:280-282
Disk Caching
--stream-record:
/home/daytona/workspace/source/src-tauri/src/mpv_ipc.rs:181-336
Frontend Integration
PlayerModal Component
PlayerModal Interface
/home/daytona/workspace/source/src/components/PlayerModal.tsx:5-11
Tauri Commands
Play with MPV
Play Cloud Media
Progress Polling
Read Progress
/home/daytona/workspace/source/src-tauri/src/mpv_ipc.rs:150-160
Clear Progress
/home/daytona/workspace/source/src-tauri/src/mpv_ipc.rs:163-169
Process Management
Check if Running
/home/daytona/workspace/source/src-tauri/src/mpv_ipc.rs:363-388
Launch Result
/home/daytona/workspace/source/src-tauri/src/mpv_ipc.rs:172-179
Configuration
MPV path is configured in Settings:Related Components
- VideoPlayer - Built-in HTML5 player
- ResumeDialog - Resume playback dialog
- Settings Modal - Configure MPV path