4 ms·
One of the best features of mpv that I miss sorely on other players, (notably PotPlayer[0] on Windows) is that it has first class scripting support. You can wr
by abdusco 4y ago
One of the best features of mpv that I miss sorely on other players, (notably PotPlayer[0] on Windows) is that it has first class scripting support.
You can write Lua/Javascript and bind it to a hotkey and run your own scripts, pass in current video, playback position, download subtitles etc.
[0]: I use mpv.net on Windows, too, but PotPlayer has better UX.
- ranger_danger 4y agoStill no crossfade support though, unfortunately.
- ksdnjweusdnkl21 4y agoWriting scripts for mpv is really fun. I would recommend it for anyone especially for people who are learning programming. There is a lot of room for innovation and creativity. The development feedback loop is quick, interactive and visual.
- disk0 4y agoFor anyone already acquainted with emmylua/vscode-lua I'd recommend using my type declarations for mpv—need to push some commits for recent changes but it's completely functional https://github.com/disco0/mpv-types-lua https://github.com/disco0/mpv-types-lua
- pltnr 4y agoJust curious why Lua is frequently used as plugin script? I would like to use an already familiar one like Python instead of to learn a new one.
- pimeys 4y agoIt is very easy to embed to C/C++ codebase, much faster than almost any other scripting languages (luajit) and adds a minimal amount to the binary size.
- nmz 4y agoMuch faster than C in some cases.
- capableweb 4y agoLua is so similar to Python that you could learn the basics in one afternoon since you already know Python. The official book is a great start: https://www.lua.org/pil/1.html https://www.lua.org/pil/1.html
- grumbel 4y agoLUA is essentially build as a plugin language. It's simple and well behaved, very easy to spawn when you need it and throw it away when you are done with it. It can also be isolated, if you don't want to give people access to file-io functions for example, you just don't load them into the interpreter and everything works as expected. Most other language are not like that, they rely on global state and want to take full control your program. The interpreter also tends to be full of functions you can't get rid of, so they are impossible to secure. Even simple things like spawning two independent interpreters are often not supported. A language like Python really wants you to extend Python with modules, not extend your program with Python. Long story short, writing a Lua interpreter is just a couple of lines of code: https://www.lua.org/pil/24.1.html https://www.lua.org/pil/24.1.html
- jamhan 4y agoAs an example, the MMORPG "Elder Scrolls Online" [1], uses Lua as the interface and plugin ("addons") language. This allows feature-rich, very useful UI modifications such as "Bandits User Interface" [2] [1] https://www.elderscrollsonline.com/ https://www.elderscrollsonline.com/ [2] https://www.esoui.com/downloads/info1643-BanditsUserInterface.html https://www.esoui.com/downloads/info1643-BanditsUserInterfac...
- nmz 4y agoPython is familiar because you already know it. Lua is much easier to learn than python. Also, you can look for a python transpiler to lua, or any that you like. Take your pick. https://github.com/hengestone/lua-languages https://github.com/hengestone/lua-languages
- mrtweetyhack 4y ago