121 lines
3.0 KiB
Markdown
121 lines
3.0 KiB
Markdown
# mpv.net
|
|
|
|
mpv.net is a libmpv based media player for Windows, it looks and works like mpv, even shares the settings and therefore the mpv documentation applies.
|
|
|
|
mpv and mpv.net have a learning curve and are only suitable for experienced users.
|
|
|
|
mpv manual: https://mpv.io/manual/master/
|
|
|
|
### Features
|
|
|
|
- Customizable context menu defined in the same file as the keybindings
|
|
- Addon API for .NET languages
|
|
- Python scripting implemented with IronPython
|
|
- C# scripting implemented with CS-Script
|
|
- mpv's OSC, IPC, Lua/JS, conf files and more
|
|
|
|

|
|
|
|
### Context Menu
|
|
|
|
The context menu can be customized via input.conf file located at:
|
|
|
|
C:\Users\Frank\AppData\Roaming\mpv\input.conf
|
|
|
|
if it misses mpv.net generates it with the following defaults:
|
|
|
|
https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/input_conf.txt
|
|
|
|
### C# Scripting
|
|
|
|
A simple C# script located at: C:\Users\Frank\AppData\Roaming\mpv\scripts\test.cs
|
|
|
|
```
|
|
using mpvnet;
|
|
|
|
class Script
|
|
{
|
|
public Script()
|
|
{
|
|
var fs = mpv.GetStringProp("fullscreen");
|
|
mpv.Command("show-text", "fullscreen: " + fs);
|
|
mpv.ObserveBoolProp("fullscreen", FullscreenChange);
|
|
}
|
|
|
|
void FullscreenChange(bool val)
|
|
{
|
|
mpv.Command("show-text", "fullscreen: " + val.ToString());
|
|
}
|
|
}
|
|
```
|
|
|
|
### Python Scripting
|
|
|
|
A simple Python script located at: C:\Users\user\AppData\Roaming\mpv\scripts
|
|
|
|
```
|
|
# when seeking displays position and
|
|
# duration like so: 70:00 / 80:00
|
|
# which is different from mpv which
|
|
# uses 01:10:00 / 01:20:00
|
|
|
|
import math
|
|
|
|
def seek():
|
|
mp.commandv('show-text',
|
|
format(mp.get_property_number("time-pos")) + " / " + format(mp.get_property_number("duration")))
|
|
|
|
def format(f):
|
|
sec = round(f)
|
|
|
|
if sec < 0:
|
|
sec = 0
|
|
|
|
pos_min_floor = math.floor(sec / 60)
|
|
sec_rest = sec - pos_min_floor * 60
|
|
return add_zero(pos_min_floor) + ":" + add_zero(sec_rest)
|
|
|
|
def add_zero(val):
|
|
val = round(val)
|
|
return "" + str(int(val)) if (val > 9) else "0" + str(int(val))
|
|
|
|
mp.register_event("seek", seek) # or use: mp.Seek += seek
|
|
```
|
|
|
|
### Changes
|
|
|
|
### 1.1
|
|
|
|
- added support for Python scripting via IronPython
|
|
- show tracks and show playlist didn't work because the duration wasn't defined in the key bindings
|
|
|
|
### 1.0
|
|
|
|
- much more feature packed context menu
|
|
|
|
### 0.2.5
|
|
|
|
- mpv lib updated to 2019-02-24
|
|
- UI glitch fixed the appeared when started in fullscreen mode
|
|
- fixed default video output mode which caused video playback to fail
|
|
|
|
### 0.2.4
|
|
|
|
- changed minimum runtime to .NET 4.7.2
|
|
- fixed mpv.net not working with new mpv lib
|
|
- the track name in the title bar was sometimes wrong
|
|
- mpv lib updated to 2018-12-16
|
|
- quit-watch-later added to context menu (Shift+Q) to exit and resume at the last position
|
|
- ab loop added to menu
|
|
- added the possibility to modify mpv.conf settings using the context menu
|
|
- added link to the manual and default keys to the menu
|
|
|
|
### 0.2.2
|
|
|
|
- history feature added
|
|
- mpv lib updated
|
|
|
|
### 0.2.1
|
|
|
|
- right-click in fullscreen in the right-left corner closes the app
|