| Crates.io | tauri-plugin-mpv |
| lib.rs | tauri-plugin-mpv |
| version | 0.5.2 |
| created_at | 2025-09-03 12:35:12.651202+00 |
| updated_at | 2025-11-18 12:39:10.302279+00 |
| description | A Tauri plugin for embedding the mpv player in your app by controlling its process via JSON IPC. |
| homepage | |
| repository | https://github.com/nini22P/tauri-plugin-mpv |
| max_upload_size | |
| id | 1822458 |
| size | 299,110 |
[!NOTE] Looking for the
[Tauri Plugin libmpv]? It has been moved to a new repository. You can find the latest version here: tauri-plugin-libmpv
A Tauri plugin for embedding the mpv player in your app by controlling its process via JSON IPC.
npm run tauri add mpv
For mpv to properly embed into your Tauri window, you need to configure transparency:
tauri.conf.json{
"app": {
"windows": [
{
"title": "Your App",
"width": 1280,
"height": 720,
"transparent": true // Add this line
}
]
}
}
/* In your main CSS file */
html,
body {
background: transparent;
}
import {
MpvConfig,
init,
observeProperties,
command,
setProperty,
getProperty,
destroy,
} from 'tauri-plugin-mpv-api'
// Properties to observe
const OBSERVED_PROPERTIES = ['pause', 'time-pos', 'duration', 'filename'] as const
// mpv configuration
const mpvConfig: MpvConfig = {
args: [
'--vo=gpu-next',
'--hwdec=auto-safe',
'--keep-open=yes',
'--force-window',
],
observedProperties: OBSERVED_PROPERTIES,
ipcTimeoutMs: 2000,
}
try {
await init(mpvConfig)
console.log('mpv initialization completed successfully!')
} catch (error) {
console.error('mpv initialization failed:', error)
}
// Observe properties
const unlisten = await observeProperties(
OBSERVED_PROPERTIES,
({ name, data }) => {
switch (name) {
case 'pause':
console.log('Playback paused state:', data)
break
case 'time-pos':
console.log('Current time position:', data)
break
case 'duration':
console.log('Duration:', data)
break
case 'filename':
console.log('Current playing file:', data)
break
}
})
// Unlisten when no longer needed
unlisten()
// Use the simple shortcut for most commands
await command('loadfile', ['/path/to/video.mp4'])
await command('seek', [10, 'relative']) // Seek 10 seconds forward
// Use the full object format if you need to provide a custom request_id
await command({ command: ['stop'], request_id: 123 })
// setProperty
await setProperty('volume', 75)
// getProperty
const volume = await getProperty('volume')
console.log('Current volume:', volume)
// Destroy mpv when your app closes or the player is no longer needed
await destroy()
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MPL-2.0 License - see the LICENSE file for details.