# 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 ![](https://raw.githubusercontent.com/stax76/mpv.net/master/screenshot.png) ### 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