Skip to content

Automated daily builds of mpv for Windows with luasocket & frei0r (fork of https://github.com/zhongfly/mpv-winbuild)

License

Notifications You must be signed in to change notification settings

qwerty12/mpv-winbuild

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mpv-winbuild

GitHub Workflow Status releases downloads

Uses Github Actions to build mpv for Windows daily, thanks to https://github.com/zhongfly/mpv-winbuild/

mpv is built from my fork of shinchiro's mpv-winbuild-cmake. My Scoop bucket, scoop-alts, installs this version (x64-v3) of mpv.

Note: if any dependency not introduced by me fails to build, I do not attempt to find a fix or rollback to a last-known-good commit. I usually wait for a fix to appear in shinchiro's mpv-winbuild-cmake. zhongfly works very hard to pretty much ensure a fresh mpv build each day; if that is important to you, you will be well served by his builds. This repo is just a small modification of his.

The notable changes are:

  • LuaJIT has its JIT compiler enabled

    • I assume it's intentionally disabled by default because some scripts may not be compatible with it. But not the ones I use. 😎 If you start seeing problems with scripts that you weren't seeing before, try adding jit.off() to the beginning of them.

    As of 2022-08-31, shinchiro's builds have LuaJIT's JIT compiler enabled

  • LuaSocket is built and included, so simple-mpv-webui can be used out of the box

  • frei0r plugins are built. See the section below for more information.

  • The mpv here is built against the Oniguruma regex library to enable the use of the sub-filter-regex option unofficially on Windows

    • Yes, I know sub-filter-jsre is an option, but I would rather deal with an actual regex library than a JS engine

    • I picked Oniguruma because it's C, reasonably fast and, most importantly, provides an API that emulates the POSIX regex.h. PCRE2 can also do this. If there's a tangible advantage to using PCRE2, I will switch to that

    • Do not report any bugs relating to sub-filter-regex (maybe even subtitles in general) to the mpv team

Everything else is pretty much the same as shinchiro's builds.

As the mpv builds here have been modified with unofficial patches, please see if you can reproduce any bugs you may experience with shinchiro's pristine builds before making a bugreport to the mpv team. Let them know you're using this dirty build at the very least.

Auto-Builds

Builds run daily at 12:00 UTC and are automatically released on success.

On the first of every month, the cache will be automatically cleared. This ensures the underlying MinGW installation is fresh and up-to-date. This does cause successful builds to be released later than usual, however, on account of the increased build time.

Only 64-bit versions of mpv are provided. If you need a 32-bit version, you can fork this repo and edit mpv.yml. Or just use shinchiro/zhongfly's builds.

mpv-dev-x86_64-xxxx.7z is 64-bit libmpv version, including the libmpv-2.dll file.

Some media players based on libmpv use libmpv-2.dll or mpv-2.dll. You can upgrade their libmpv version by overwriting this DLL file. You will need to add lua51.dll to the same folder as well.

Release Retention Policy

  • Artifacts (from the Actions tab), and their corresponding build logs, are cleaned every 30 days
  • Releases that are 30 days old should be removed

frei0r plugin support

  • I do not have a need for these personally. If they cause build failures, the first thing I will try is clamping the version to a known good commit (and check a long time in the future whether the latest version can be built again). Failing that, I will disable their build entirely.

  • Plugins that require Cairo, OpenCV or gavl are not built/included

  • As they are in the realm of 50 MB uncompressed, they are not bundled with the mpv build here proper.

    • You will need to download them separately from the releases and extract them to a path of your choosing

    • Most of the time, you will not need to keep redownloading them with every mpv release, especially if the plugins are built from the same Git commit. If their API changes (unlikely) and mpv can't load the DLLs, then yes, try then

  • You have three choices for getting mpv to see the frei0r plugins:

    • set the Windows environment variable FREI0R_PATH to the full path of the folder where you extracted the plugins

    • extract the DLLs into C:\usr\local\lib\frei0r-1\

    • Save main.lua into a folder called frei0r_path in your mpv config scripts folder. With this script, you can either have the frei0r-1 folder next to the mpv.exe file or next to the main.lua script itself

Information about packages

same as shinchiro

  • Git/Hg

    • ANGLE ANGLE
    • FFmpeg FFmpeg
    • xz xz
    • x264 x264
    • x265 (multilib) x265
    • uchardet uchardet
    • rubberband rubberband
    • opus opus
    • openal-soft openal-soft
    • mpv mpv
    • luajit luajit
    • luasocket luasocket
    • libvpx libvpx
    • libwebp libwebp
    • libpng libpng
    • libsoxr libsoxr
    • libzimg (with graphengine) libzimg
    • libdvdread libdvdread
    • libdvdnav libdvdnav
    • libdvdcss libdvdcss
    • libudfread libdvdcss
    • libbluray libbluray
    • libunibreak libunibreak
    • libass libass
    • libmysofa libmysofa
    • lcms2 lcms2
    • lame lame
    • harfbuzz harfbuzz
    • game-music-emu game-music-emu
    • freetype2 freetype2
    • mujs mujs
    • libarchive libarchive
    • libjpeg libjpeg
    • shaderc (with spirv-headers, spirv-tools, glslang) shaderc
    • vulkan-header Vulkan-Headers
    • vulkan Vulkan
    • spirv-cross spirv-cross
    • fribidi fribidi
    • frei0r frei0r
    • oniguruma oniguruma
    • nettle nettle
    • libxml2 libxml2
    • amf-headers amf-headers
    • avisynth-headers avisynth-headers
    • nvcodec-headers nvcodec-headers
    • libvpl libvpl
    • aom
    • dav1d dav1d
    • libplacebo (with glad) libplacebo
    • fontconfig uchardet
    • libbs2b libbs2b
    • libssh
    • libsrt libsrt
    • libjxl (with brotli, highway) libjxl
    • libmodplug libmodplug
    • uavs3d uavs3d
    • davs2 davs2
    • libdovi libdovi
    • libva libva
    • libzvbi libzvbi
    • rav1e rav1e
    • libaribcaption libaribcaption
  • Zip