Code Monkey home page Code Monkey logo

thumbfast's Introduction

thumbfast

High-performance on-the-fly thumbnailer for mpv.

The script does not display thumbnails on its own, it is meant to be used alongside a UI script that calls thumbfast.

Preview.of.thumbfast.on.different.UIs.webm

Installation

Place thumbfast.lua in your mpv scripts folder.
Default settings are listed in thumbfast.conf, copy it to your mpv script-opts folder to customize.

For the vanilla UI, you also have to install osc.lua (identical to the mpv default, with added thumbfast support) into your scripts folder.
For third-party UIs, refer to their respective installation instructions. See the list of supported UIs.

Features

No dependencies, no background thumbnail generation hogging your CPU.
Customizable sizes, interval between thumbnails, cropping support, respects applied video filters.
Supports web videos e.g. YouTube (disabled by default), mixed aspect ratio videos.

This script makes an effort to run on mpv versions as old as 0.29.0 (Windows, Linux) and 0.33.0 (Mac).
Note that most custom UIs will not support vintage mpv builds, update before submitting an issue and mention if behavior is the same.
Support for <0.33.0 on Linux requires socat.

Usage

Once the lua file is in your scripts directory, and you are using a UI that supports thumbfast, you are done.
Hover on the timeline for nice thumbnails.

UI support

mpv frontends

If you are using a GUI frontend such as mpv.net, you will need standalone mpv accessible within Path.
The easiest way is to copy standalone mpv files inside of your mpv.net installation folder.
It will be used in the background to generate thumbnails.

The only exception is ImPlay, which can do thumbnailing on its own.
Set mpv_path=ImPlay in script-opts/thumbfast.conf.

MacOS

If your mpv install is an app bundle (e.g. stolendata builds), the script will work but you may notice the Dock shakes when generating the first thumbnail.
To get rid of the shaking, make sure the app is in your Applications folder, then run: sudo ln -s /Applications/mpv.app/Contents/MacOS/mpv /usr/local/mpv
If you installed mpv via Homebrew, there are no issues.

Configuration

socket: On Windows, a plain string. On Linux and Mac, a directory path for temporary files. Leave empty for auto.
thumbnail: Path for the temporary thumbnail file (must not be a directory). Leave empty for auto.
max_height, max_width: Maximum thumbnail generation size in pixels (scaled down to fit). Values are scaled when hidpi is enabled. Defaults to 200x200.
scale_factor: Scale factor for thumbnail display size (requires mpv 0.38+). Lower quality than increasing max_height and max_width. Defaults to 1.
tone_mapping: Apply tone-mapping, no to disable. Defaults to auto, which copies your mpv config.
overlay_id: Overlay id for thumbnails. Leave blank unless you know what you're doing.
spawn_first: Spawn thumbnailer on file load for faster initial thumbnails. Defaults to no.
quit_after_inactivity: Close thumbnailer process after an inactivity period in seconds. Defaults to 0 (disabled).
network: Enable on remote files. Defaults to no.
audio: Enable on audio files. Defaults to no.
hwdec: Enable hardware decoding. Defaults to no.
direct_io: Windows only: write directly to pipe (requires LuaJIT). Should improve performance, ymmv.
mpv_path: Custom path to the mpv executable. Defaults to mpv.

For UI developers: How to add thumbfast support to your script

This API usage example code is CC0 (public domain).

Declare the thumbfast state variable near the top of your script.
Do not manually modify those values, they are automatically updated by the script and changes will be overwritten.

local thumbfast = {
    width = 0,
    height = 0,
    disabled = true,
    available = false
}

Register the state setter near the end of your script, or near where your other script messages are.
You are expected to have required mp.utils (for this example, into a utils variable).

mp.register_script_message("thumbfast-info", function(json)
    local data = utils.parse_json(json)
    if type(data) ~= "table" or not data.width or not data.height then
        msg.error("thumbfast-info: received json didn't produce a table with thumbnail information")
    else
        thumbfast = data
    end
end)

Now for the actual functionality. You are in charge of supplying the time hovered (in seconds), and x/y coordinates for the top-left corner of the thumbnail.
In this example, the thumbnail is horizontally centered on the cursor, respects a 10px margin on both sides, and displays 10px above the cursor.
This code should be run when the user hovers on the seekbar. Don't worry even if this is called on every render, thumbfast won't be bogged down.

-- below are examples of what these values may look like
-- margin_left = 10
-- margin_right = 10
-- cursor_x, cursor_y = mp.get_mouse_pos()
-- display_width = mp.get_property_number("osd-width")
-- hovered_seconds = video_duration * cursor_x / display_width

if not thumbfast.disabled then
    mp.commandv("script-message-to", "thumbfast", "thumb",
        -- hovered time in seconds
        hovered_seconds,
        -- x
        math.min(display_width - thumbfast.width - margin_right, math.max(margin_left, cursor_x - thumbfast.width / 2)),
        -- y
        cursor_y - 10 - thumbfast.height
    )
end

This code should be run when the user leaves the seekbar.

if thumbfast.available then
    mp.commandv("script-message-to", "thumbfast", "clear")
end

If you did all that, your script can now display thumbnails!
Look at existing integrations for more concrete examples.

If positioning isn't enough and you want complete control over rendering:
Register a thumbfast-render script message.
When requesting the thumbnail, set x and y to empty strings and supply your script's name as the 4th argument.
You will recieve a json object with the keys width, height, x, y, socket, thumbnail, overlay_id when the thumbnail is ready.

thumbfast's People

Contributors

christoph-heinrich avatar dyphire avatar he3als avatar hill-98 avatar hooke007 avatar leiserfg avatar n-r-k avatar natural-harmonia-gropius avatar po5 avatar qwerty12 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

thumbfast's Issues

Support mpv release builds

I installed the script (latest master) together with the latest master of uosc, installed socat (since it was missing initially) but am not seeing any thumbnails. I also don't see a subprocess or even a new thread spawned when I hover over the timeline.

2022-09-21_20-34-39

Only first thumbnail is shown with spawn_first=yes

I'm using thumbfast with mfpbar.

When playing (local) vp9 files I'm getting very inconsistent thumbnailing.

Sometimes it works perfectly. Other times it will only show the first frame of the file. Occasionally it's just slow and only shows a few thumbnails at large intervals. There are never any errors in the log.

I cannot consistently reproduce the issue, it just seems to happen randomly and regardless of config options. Although I have noticed that if the cursor is moved to the timeline as soon as the file is opened, thumbnailing is more likely to not work properly.

Other common codecs thumbnail flawlessly 99% of the time.

I had similar issues when using mpv_thumbnail_script, so it might be an issue with mpv or the codec itself rather than this script.

osc.lua often does not appear.

I use thumbfast with osc.lua, often when opening a file in explorer (windows 11) the control interface does not appear.

Questions about watch_changes()

I'm looking into this.

Q1
Is par ~= last_par needed any more? that effective_w,h maintained by video-out-params/dw,dh now.

Q2
Also (last_rotate % 180) ~= (rotate % 180)? it determines the rotated square is resized.
image

Q3
There's another :force_original_aspect_ratio=decrease, should it be replaced with par?

White thumbnails

Hi I'm using mpv on a Wayland with GNOME. I have installed your script, but all I get is white thumbnails. Am I missing something?
Screenshot from 2022-10-12 07-42-35

erroor? or somthign

image
this is keeppign appearign . how to solve . and thumbfast work well . only this is popoing in terminal

Thumbnail process loads high res streams

Turns out the problem was introduced in acc092d, see comments.

It seems like the subprocess doesn't use some of the passed arguments, but from looking at the code that doesn't make sense 😕.

I was curious about how fast it would get thumbnails if I use a format that has video and audio, because those don't get throttled by YouTube (or at least far less).
So I replaced the line
"--ytdl-format=worst", "--demuxer-readahead-secs=0", "--demuxer-max-bytes=128KiB", with
"--ytdl-format=18", "--demuxer-max-bytes=1GiB",, but based on bandwidth usage, it doesn't use the right format. If i use the same options on the main mpv instance, it buffers the whole video very quickly and uses a lot more bandwidth, so the options should work.

I also tried other format options like --ytdl-format=313, which has a resolution of 3840x1920, but based on the bandwidth usage there is no way it actually loads a video with that resolution.

Also with the default --ytdl-format=worst it should use format 17, which has a resolution of 176x144, but the resulting thumbnail certainly isn't from that format (that format has a different aspect ratio, so the thumbnail should either have a different aspect ratio, or be distorted).

I'm certain that I'm editing the correct file, because I've put a print statement in the spawn function, and that shows up in the console (two times actually).

More needs to do when vid changes

For this sample, play it with hevc track, every thing works fine.
image
When switch to jpg track. an error here.
image

And reopen it with jpg track, It is treated as audio, that's okay. But when switch to hevc track, it still follows disabled on file_load.

edition also be synced as vid, but I have never seen it.

[Feature Request] thumbnails while streaming youtube videos

I am using this plugin alongside uosc but when streaming youtube videos, it does not load the thumbnails. Previously i was using https://github.com/marzzzello/mpv_thumbnail_script plugin which seemed to load up the thumbnails from youtube video streams.

Different height and width in windowed?

Using percentage if possible, like x% of the current window.
And a feature that if window size is <= x% of max_height and max_width (take 150% for example) it would disable thumbnailing on seekbar. (This feature would be good for people like me who uses pip a lot and don't want thumbnails to take up the entire small window when seeking)
image

Script activates on audio playback

This is my conf:

# Socket path (leave empty for auto)
socket=

# Thumbnail path (leave empty for auto)
thumbnail=

# Maximum thumbnail size in pixels (scaled down to fit)
max_height=200
max_width=200

# Overlay id
overlay_id=42

# Thumbnail interval in seconds set to 0 to disable (warning: high cpu usage)
interval=6

# Number of thumbnails
min_thumbnails=6
max_thumbnails=240

# Spawn thumbnailer on file load for faster initial thumbnails
spawn_first=no

# Enable on network playback
network=no

# Enable on audio playback
audio=no

But yet it shows thumbnails when i play audio files. Not so sure why this happens. My guess is that cause it has cover art that is why.
image

options.audio doesn't work.

And what is the use of this? If it's of any practical use, I'll submit a PR to fix is_audio_file(). Otherwise I suggest removing it

Thumbnails are empty

Hello,

thumbnails are just empty and transparent for me.
I´m using mfpbar and I changed the first spawn and hw lines.
I tried the other supported UIs as well.

https://imgur.com/a/QeFQ7Lm

Sorry if thats something common but i looked quite a bit and i cannot fix it^^

help with set path

i use windows machine, that script didn't work for me. my idea about reason is.

  1. the Thumbnails path dont exite, ''if so how create one ' also socket path '
  2. maybe because i installed mpv using windows package manager 'chocolaty

Thumbnail show a still picture, it does not change when I move the mouse over the seekbar

I am using mpv 0.32.0

I have followed the steps in https://github.com/po5/thumbfast#installation for vanilla UI.

When I move the mouse on the seekbar, it does not change the thumbnail. It shows a fixed image.

my mpv.conf looks like:

keep-open=yes
player-operation-mode=pseudo-gui
input-ipc-server=/tmp/mpv-socket
screenshot-directory=~/Pictures/
no-window-dragging
reset-on-next-file=pause

osc=no

I did not make any change to thumbfast.conf

System cannot find the file specified(mpv.net + uosc)

Hello
I have a problem with thumbfast script on Mpv.net(windows) using uosc OSC. The thumbnails are not showing at all and the console is showing "System cannot find the file specified" errors every time i hover cursor over the seek bar. I've checked the regular mpv and both scripts works without problems. I have also tried to run mpv.net with default settings but it didn't help much.
Thanks
image

smoother thumbnail?

I use this config:

# Socket path (leave empty for auto)
socket=

# Thumbnail path (leave empty for auto)
thumbnail=

# Maximum thumbnail size in pixels (scaled down to fit)
# Values are scaled when hidpi is enabled
max_height=200
max_width=200

# Overlay id
overlay_id=42

# Spawn thumbnailer on file load for faster initial thumbnails
spawn_first=yes

# Enable on network playback
network=no

# Enable on audio playback
audio=no

# Enable hardware decoding
hwdec=vaapi

# Windows only: use native Windows API to write to pipe (requires LuaJIT)
direct_io=no

Basically I want thumbnails as fast as possible and real smooth when surf progress bar. I'm ok with current state of how thumbnails processed but still find it a bit not so smooth -- this is purely my experience and it's biased.

I'm thinking of if we can allow multi-threads to process thumbnails faster (threads=10) --> considering the machine's power is not limited. Other users with limited pc's hardware can turn it off.

I've tested with 60G 4k mkv file and thumbnails took a lot of time to generate frames/images.

from your video/gif in README, thumbnails look really smooth with small size / low video quality but in case of 4k or 8k video, how to have thumbfast generate thumbnails faster and smoother when surf progress bar?

  1. again, can we enable multi-threads to process thumbnails?
  2. can we give option to choose the quality of each frame/images to give faster experinece? like if you're with 4k video, and choose thumbnails frames/images with quality really low, it'll help to speed up user's experience.

Update: just confirmed that it's unusable with 4k video (tried with size of 64G and 38G video), when I surf progress bar, it always show same frame/image.

Thumbnail generation failed with incorrect scale

Unfortunately, I found that this pr #19 did not really solve the scaling accuracy issue, and thumbnails still failed on some videos.

I tried to get the following output log:

[   6.283][i][thumbfast] [ffmpeg] filter: Padded dimensions cannot be smaller than input dimensions.
[   6.283][i][thumbfast] [ffmpeg] filter: Failed to configure input pad on filter
[   6.283][i][thumbfast] [lavfi] failed to configure the filter graph
[   6.284][i][thumbfast] Disabling filter pad.00 because it has failed.
[   6.285][i][thumbfast] [autoconvert] Converting yuv420p10 -> bgra
[   6.287][i][thumbfast] VO: [lavc] 299x125 bgra
[   6.287][i][thumbfast] [vo/lavc] Opening encoder: raw video [rawvideo]
[   6.287][i][thumbfast] [encode] Opening muxer: image2 sequence [image2]

Add a command to manually toggle thumbnail generation

Via tomasklaen/uosc#445.

Thumbfast currently does not have a way to toggle the generation and/or display of thumbnails. It should provide a way to toggle them and to specify the default operation mode, i.e. whether it should start generating them on first load/request, much like there already is such a configuration option for network videos.

Additionally, this toggle should also work for network videos.

I could see a global toggle and a per-video toggle (when working with playlists).

Hide the thumbnail when the window loses focus

If I have my pointer pointing at the OSC, it will show the thumbnail of the time frime it is pointing at, as expected. But if I move my pointer down to a different window, it still shows the thumbnail. It would be nice if it hid the thumbnail when the window loses focus.

Suppress error message when mpv exits

Currently whenever mpv exits, the following error message is printed:

[thumbfast] /tmp/thumbfast17446.run: line 5: read: read error: 3: Connection reset by peer

Might be worthwhile to suppress it if mpv exited normally. Or suppressing it unconditionally could be an option as well:

- [...] & while read -r -u "$MPV_IPC_FD"; do :; done; fi
+ [...] & while read -r -u "$MPV_IPC_FD" 2>/dev/null; do :; done; fi

Script plays on audio playback when audio=no

Not so sure why this happens.

This is my conf:

image

mpv version:

mpv 0.35.0 Copyright © 2000-2022 mpv/MPlayer/mplayer2 projects
 built on UNKNOWN
FFmpeg library versions:
   libavutil       57.28.100
   libavcodec      59.37.100
   libavformat     59.27.100
   libswscale      6.7.100
   libavfilter     8.44.100
   libswresample   4.7.100
FFmpeg version: 5.1.3

Usage:   mpv [options] [url|path/]filename

Basic options:
 --start=<time>    seek to given (percent, seconds, or hh:mm:ss) position
 --no-audio        do not play sound
 --no-video        do not play video
 --fs              fullscreen playback
 --sub-file=<file> specify subtitle file to use
 --playlist=<file> specify playlist file

 --list-options    list all mpv options
 --h=<string>      print options which contain the given string in their name

System:

    ⠀⠀⢀⣤⣴⣶⣶⣶⣦⣤⡀⠀⣀⣠⣤⣴⣶⣶⣶⣶⣶⣶⣶⣶⣤⣤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀   ---------------- 
    ⠀⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀   OS: Nobara Linux 37 (KDE Plasma) x86_64 
    ⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀   Host: 82B1 Lenovo Legion 5 15ARH05H 
    ⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⠀⠀⠀⠀   Kernel: 6.3.5-201.fsync.fc37.x86_64 
    ⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀⠀⠀   Uptime: 4 hours, 18 mins 
    ⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠋⠉⠁⠀⠀⠉⠉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀⠀   Packages: 3252 (rpm), 10 (flatpak) 
    ⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⢀⣀⣀⡀⠀⠀⠀⠈⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀   Shell: bash 5.2.15 
    ⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠀⠀⠀⢠⣾⣿⣿⣿⣿⣷⡄⠀⠀⠀⠻⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀   Resolution: 1920x1080 
    ⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⣀⣀⣬⣽⣿⣿⣿⣿⣿⣿⠀   DE: Plasma 5.27.4 
    ⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠈⠻⢿⣿⣿⡿⠟⠁⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀   WM: kwin 
    ⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀   Theme: [Plasma], Breeze [GTK2/3] 
    ⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣤⣤⣄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀   Icons: [Plasma], breeze-dark [GTK2/3] 
    ⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀   Terminal: konsole 
    ⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀   CPU: AMD Ryzen 7 4800H with Radeon Graphics (16) @ 2.900GHz 
    ⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠛⠉⠉⠛⠛⢿⣿⣿⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀   GPU: NVIDIA GeForce RTX 2060 Mobile 
    ⠀⠘⢿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀   Memory: 6718MiB / 15845MiB 
    ⠀⠀⠀⠈⠙⠛⠛⠛⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠛⠛⠛⠉⠁⠀⠀⠀
                                                                       
                                                                       

in default socket path does it use virtual memory?

Thank you for making this script, I like it. I am running Ubuntu 22.04 Mate. I have 8GB of RAM and SSD storage. I care for health of my SSD's life span. I wonder if it uses RAM for preview images. If not, can I use /dev/shm/tmp directory path for rendering process?

Thumbnails grid as a preview of the whole video

(I don't know whether it's in the scope of this plugin or it should be a plugin on its own)

I've come up with this idea today, such that, when you press a key binding a grid of multiple thumbnails (MxN, configurable) appears and each thumbnail comes from that calculated point of the video. So it's like an x-ray of the movie file at a glance. The grid should be mpv-window wide, hiding any other controls, timeline etc. Pressing the keybinding again or ESC hides it.

Clicking on individual thumbnails should seek the video to that point. Keyboard navigation may be considered as well.

I've searched the web to see if this is already implemented but couldn't find anything close. What do you guys think? /cc @christoph-heinrich

`interval` doesn't work as expected

I tried set it to 0 or 1 and set max_thumbnails = 1440

Expectation:
Theoretically, for a 24min video, each second of preview should be different.

Actual behavior:
Sometimes the same thumbnail would be including 5 secs's duration.

How to Update ? (Sorry)

I got into Mpv and have been following alot of repos. Now there are many that get updated frequently.
I am new to this tried to google and can't find answer.

Question --> How to update other than manually downloading the code.zip and extracting , comparing with the edits that i made in .conf and then placing them in correct directly.

I follow alot of repos like this now, Autohotkey Scripts, Firefox CSS , and now MPV.

I know there must be answer , i just can't form a sentence without writing a paragraph.

Lagging behind osc decorations

#5 doesn't completely fix the issue.
The position will now be updated in time, but the frame will still be frozen. Maybe we need to add debounce or lock to make sure there is no parallel execution.

Flatpak, Snap, AppImage

Need to investigate what problems may arise on Linux systems with weirdo self-contained package formats.
Do they even allow user scripts?
Would the Mac PID lookup be enough? (I know it does work with regular mpv on Linux)

Failure to work as expected on Windows

When I try to communicate with uosc.lua is used together, the current video thumbnail is successfully displayed only when the mouse is moved to the timeline for the first time, and the new thumbnail cannot be displayed when the mouse is moved subsequently, only the first thumbnail will be displayed.

I can't determine the cause in the log. This is the log file: mpv.txt

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.