{"id":28324160,"url":"https://github.com/thertzlor/mpv-plugin-winframes","last_synced_at":"2026-04-29T10:34:34.837Z","repository":{"id":294420618,"uuid":"986879071","full_name":"Thertzlor/mpv-plugin-winframes","owner":"Thertzlor","description":"Enhanced Windows port of mpv-plugin-xrandr for automatically changing display refresh rates.","archived":false,"fork":false,"pushed_at":"2025-05-29T09:51:21.000Z","size":39,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-24T02:39:34.249Z","etag":null,"topics":["framerate","mpv","mpv-player","mpv-plugin","refresh-rate","windows"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Thertzlor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-20T08:54:49.000Z","updated_at":"2025-05-29T09:51:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"3056d9f3-8d50-4fb2-b9f8-b1f05b721f3c","html_url":"https://github.com/Thertzlor/mpv-plugin-winframes","commit_stats":null,"previous_names":["thertzlor/mpv-plugin-winframes"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Thertzlor/mpv-plugin-winframes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thertzlor%2Fmpv-plugin-winframes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thertzlor%2Fmpv-plugin-winframes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thertzlor%2Fmpv-plugin-winframes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thertzlor%2Fmpv-plugin-winframes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Thertzlor","download_url":"https://codeload.github.com/Thertzlor/mpv-plugin-winframes/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thertzlor%2Fmpv-plugin-winframes/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32422060,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T06:29:02.080Z","status":"ssl_error","status_checked_at":"2026-04-29T06:29:00.631Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["framerate","mpv","mpv-player","mpv-plugin","refresh-rate","windows"],"created_at":"2025-05-25T17:10:13.390Z","updated_at":"2026-04-29T10:34:34.832Z","avatar_url":"https://github.com/Thertzlor.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"mpv-plugin-winframes\n======================\n\nmpv plugin for setting display output parameters, e.g. the refresh rate,\nautomatically to the best suitable value for playing the current file.\n\nThis is a Windows version of the plugin [mpv-plugin-xrandr](https://gitlab.com/lvml/mpv-plugin-xrandr/) by Lutz Vieweg and utilizes the tool [ChangeScreenResolution.exe](https://www.tools.taubenkorb.at/change-screen-resolution/) as a stand-in for xrandr. It retains full compatibility with all its features and options.\n\nRationale / Use Case:\n=====================\n\nVideo replay looks choppy if the display refresh rate is not an even\nmultiple of the frame rate the video is encoded at.\n\nMany displays support different refresh rates, and for some of them,\nnamely TVs, choosing the correct refresh rate is also important for the\nquality of computing interpolated frames for \"smoother motion\".\n\nSetting the display to the best suitable refresh rate manually\nfor each video you play is annoying, so this plugin aims at\nautomatizing this task.\n\n## Why winframes?\nWhile there are [multiple](https://github.com/CogentRedTester/mpv-changerefresh) nircmd based mpv [scripts](https://github.com/kevinlekiller/mpv_scripts/tree/master/autospeedwin) for changing the refresh rate on windows, they are far less flexible than the xrandr plugin due to the limitations of nircmd, which can only set but not read display information, requiring the user to provide a list of valid refresh rates which becomes problematic when using multiple displays with different capabilties.\n\nChangeScreenResolution on the other hand has (almost) all capabilties of xrandr allowing this plugin to retain the automatic detection of the optimal refresh rate.\n\nPrerequisites / Installation\n============================\n\nIn order to use winframes.lua, you only need to have mpv installed, as well as the [ChangeScreenResolution.exe](https://www.tools.taubenkorb.at/change-screen-resolution/) utility which in turn *might* requite the [Redistributable Packages for Visual Studio 2013](https://www.microsoft.com/en-us/download/details.aspx?id=40784).  \nYou can then either put the executable on your PATH, or in a directory of your choosing, in which case you need to provide the location with the `winframes-exec-path` option:\n\n mpv --script /path/to/winframes.lua --script-opts=winframes-exec-path=\"D:/utils/ChangeScreenResolution.exe\"  ...\n\nUsage:\n======\n\n mpv --script /path/to/winframes.lua\n\n(Or copy winframes.lua to ~/.config/mpv/scripts/ for permanent default usage.)\n\nShortcuts :\n========\nThe script adds the shortcut **Ctrl+f** to toggle refresh rate adjustment on and off.  \nThis is mostly useful in conjunction with the --wait-for-fullscreen option.\n\nOptions:\n========\n\nNormally, you won't need to specify any options besides `winframes-exec-path`.\n\n mpv --script-opts=winframes-blacklist=25 ...\n\nAll options can also be permanently defined in a winframes.conf file in the script-opts directory.\n\n## Optional blacklisting refresh rates:\n\nYou can set the script option \"winframes-blacklist\" to a certain refresh rate\nor to a comma separated list of refresh rates that you don't want to be used at all.\nThis can be done to address compatibility issues - e.g., when you know that your\ndisplay can use 25 Hz, but if your computer tries to use that rate, your TV stays black,\nyou can use\n\n mpv --script-opts=winframes-blacklist=25 ...\n\nor if both 25 and 24 Hz are unusable, you could specify:\n\n mpv --script-opts=winframes-blacklist=[24,25]\n\n## Optional switching to a preferred output mode\n\nIn rare cases, e.g. when using a display that supports more different refresh\nrates for an output mode you do not usually use, you might want to have mpv\nswitch to some preferred output mode during playback.\n\nTo do this, use \"--script-opts=winframes-output-mode\", e.g., if\nyou want to change to the \"1920x1080\" mode during playback, use:\n\n mpv --script-opts=winframes-output-mode=1920x1080 ...\n\n## Restricting refresh rate change to fullscreen\n\nNormally the script will adjust the refresh rate the moment a video starts playing.  \nWith the \"winframes-wait-for-fullscreen\" option the adjustment will only take place once the player enters fullscreen mode. \n\n mpv --script-opts=winframes-wait-for-fullscreen=yes ...\n\n### Reverting changes on exiting full screen\nOnce the refresh rate is changed, it is kept until the player exits.  \nThe \"winframes-restore-outside-fullscreen\" option changes this behavior also revert when the player exits fullscreen mode.\n\n mpv --script-opts=winframes-wait-for-fullscreen=yes,winframes-restore-outside-fullscreen=yes ...\n\nIf the \"winframes-wait-for-fullscreen\" option is not enabled, this option has no effect.\n\n## Old screen change handling\nIn the original xrandr plugin, changing the active display would only adjust the refresh rate if the framerate of the video also changed. This behavior is altered in this version, so that switching the player to another monitor will *always* check if that monitor's refresh rate also needs to be adjusted.\n\nIf you prefer to retain 100% of the old screen handling logic you can restore it like this:\n\nmpv --script-opts=winframes-old-monitor-handling=yes ...\n\n\nDISCLAIMER\n==========\n\nThis software is provided as-is, without any warranties.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthertzlor%2Fmpv-plugin-winframes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthertzlor%2Fmpv-plugin-winframes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthertzlor%2Fmpv-plugin-winframes/lists"}