Jump to time (Previous frame) v2.1
VLC Extensions
Description:

Jump to time (Previous frame) is VLC Extension that can:
- jump to a desired time in a played media;
- jump forward/backward by a desired time length;
- split-second jumps imitating previous/next frame;*
- show actual playback time with milliseconds;
- use time longer than 24 hours;
- repeat a desired scene again and again (A-loop);
- convert time.
It cannot make a cup of coffee for you :-)

Automatic DOWNLOAD & INSTALLATION of the extension is now (VLC-2.2) available through the Addons Manager in VLC menu (Tools > Plugins and extensions).

Manual DOWNLOAD & INSTALLATION:
DOWNLOAD:
- click the download button below
- save the .zip file
INSTALLATION:
- extract (unzip) the .lua file and put it in VLC subdir /lua/extensions, by default:
* Windows (all users): %ProgramFiles%\VideoLAN\VLC\lua\extensions\
* Windows (current user): %APPDATA%\VLC\lua\extensions\
* Linux (all users): /usr/lib/vlc/lua/extensions/
* Linux (current user): ~/.local/share/vlc/lua/extensions/
* Mac OS X (all users): /Applications/VLC.app/Contents/MacOS/share/lua/extensions/
* Mac OS X (current user): /Users/%your_name%/Library/Application Support/org.videolan.vlc/lua/extensions/
(create directories if they don't exist)
- Restart VLC or just reload extensions (Tools > Plugins and extensions > Active Extensions tab: Reload extensions button).
USAGE:
Then you simply start the extension by going to the "View" menu or "Vlc > Extensions" on Mac OS X.
Last changelog:

4 years ago

v2.1 (28.9.2015) 24717
- compact size layout of the dialog box (a trick with right buttons over spanned text input fields) caused troubles on OS X => no spanning now
- removed ampersands from buttons on OS X as they do not work as hotkeys there
- added "Pause/Play" button

Jump to time 2.0 (11.5.2015) 22382
- reworked and renamed "Previous frame" extension
- libvlc hotkeys (unsupported callbacks since VLC-2.1) replaced with dialog box hotkeys at least

Previous frame 1.0 (10.1.2013)

ate9

1 year ago

Hi, mederi (or someone who can commit into the code). Have fixed a bug for all us. Dialog elements colspan and col positions needed some adjustments as two buttons were overlapped with inputs. Here is the right code:


function Create_dialog()
d = vlc.dialog(descriptor().title)

d:add_label(string.rep(" ",27),1,1,1,1)
d:add_label(string.rep(" ",27),2,1,1,1)
d:add_label(string.rep(" ",27),3,1,1,1)


d:add_button("&Get time >>", click_Get_time, 1,1,1,1)
textinput_time = d:add_text_input(Time2string(0), 2,1,2,1) -- "00:00:00,000"
d:add_button(">> &Set time", click_Set_time, 4,1,1,1)

d:add_button("&Time format", click_Switch_time_format, 1,2,1,1)
dropdown_jump = d:add_dropdown(2,2,1,1)
for i,v in ipairs(jumps) do
dropdown_jump:add_value(v[1],i)
end
d:add_button("&Use selected", click_Use_jump, 3,2,1,1)

d:add_button("&Backward <<", function() click_Jump(-1) end, 1,3,1,1)
textinput_jump = d:add_text_input(jumps[1][2], 2,3,2,1) -- default jump length (1-st in the list)
d:add_button(">> &Forward", function() click_Jump(1) end, 4,3,1,1)
end

Report

mederi

1 year ago

VLC Extensions dialog box widgets stacking issue in VLC for OS X.

Report

ate9

1 year ago

Stacking focusable elements one on another may seem as a good workaround, still it isn't. If you target multi-platform environment you can't rely on default behavior of such elements stacking, especially if you have no direct control of their z-ordering.

In this case on os x, rightmost buttons were hiding behind inputs only if doing something in that input (focusing, entering text, pressing other button). What happened, I think, OS or library simply recreated/redraw input element, and it became top on a stack. Should it be left at a same creation order, yea probably, you may hope so.

Imho, unless and until vlc lua dialog code implement explicit z-order parameter for elements stacking and vlc coders enforce it's behavior in any of supported os gui - relying, on inexplicit z-ordering (creation order in source code), is erroneous. You simply can't rely on initial elements creation order if something is changing latter. What we have faced here - last focused element in OS X is always on top :), and no way back, button is deep behind with no way to click through. Is it bad default behavior of gui kit? No, actually, it is quite useful and logical behavior - get focused on top.


P.S. simply cols span 1 instead of 2 was not a better solution. Left input twice wide, to keep current time input text visible even if it is shown in its longest format with widest weirdest user font :)

Let it be a feature, not a bug - as we say ;)

Attaching screens:
1. [ just launched ]
http://pasteboard.co/LltRXCg.png
2. [after focusing input, editing, pressing get time]
http://pasteboard.co/LlvaYGk.png
3. [after focusing input, selecting time format from drop, pressing use selected]
http://pasteboard.co/LlwlUgG.png

4. [after a, erroneous stacking workaround, fix]
http://pasteboard.co/Lls1fM0.png

Report

mederi

1 year ago

Thank you for the screenshots. Now I see the difference. VLC for OS X is all different from Windows/Linux. Please can you make 2 more screenshots of 2 different variations for me?
Quote:
-- text_input: col_span=1; button: col=3;
textinput_time = d:add_text_input(Time2string(0), 2,1,1,1) -- "00:00:00,000"
d:add_button(">> &Set time", click_Set_time, 3,1,1,1)
textinput_jump = d:add_text_input(jumps[1][2], 2,3,1,1) -- default jump length (1-st in the list)
d:add_button(">> &Forward", function() click_Jump(1) end, 3,3,1,1)

-- text_input: col_span=2; button: col=4;
textinput_time = d:add_text_input(Time2string(0), 2,1,2,1) -- "00:00:00,000"
d:add_button(">> &Set time", click_Set_time, 4,1,1,1)
textinput_jump = d:add_text_input(jumps[1][2], 2,3,2,1) -- default jump length (1-st in the list)
d:add_button(">> &Forward", function() click_Jump(1) end, 4,3,1,1)
Here is how it looks in my computer: https://cdn.pbrd.co/images/NYpDsUO.png

I would like to make a different layout for OS X and to keep the compact one for Windows and Linux. I would like to ask you whether you could help me to find out the best way how to distinguish OS X from Linux in VLC Lua. It can be useful for other cases/extensions, too. Perhaps there is an environment variable that is available in all OS X systems and not available in Linux, or they have a different value. According to this link: http://www.cyberciti.biz/faq/set-environment-variable-unix/unix-env-printenv-set-command-to-display-environment-variables/ the OSTYPE could be the one I am looking for. Please check its value in OS X:Quote:
-- some environment variables like "OS" and "windir" on Windows (OS=Windows_NT; windir=C:\WINDOWS). "OSTYPE" on OS X and Linux?
-- word "Application" in userdatadir on OS X, not on Linux?
d:add_html(tostring(os.getenv("OSTYPE")) .."<br />".. vlc.config.userdatadir(), 1,5,3,1)

Do the ampersands "&" in the buttons work as hotkeys (Alt+G, Alt+S, ...)? Probably not as they are not invisible there. I can remove them from OS X layout.
Which of the buttons is the "submit" button? While I am editing a string in a text_input field or selecting an item in the drop-down list on Windows, then the first button in the code "Time format" is automatically focused and ready for action by pressing the Enter key on keyboard.

Report

ate9

1 year ago

-- get OS unix way
d:add_label(io.popen("uname -s"):read("*l") , 1,4,2,1)

-- get exact version OS X way
v = assert ( io.popen("sw_vers") )
row = 5;
for s in v:lines() do
d:add_label( s , 2,row,1,1)
row = row + 1
end
v:close()

-- tostring(os.getenv("OSTYPE")), returns nill
-- user config dir is dependent on user name and typically is /Users/username/Library/Application Support/org.videolan.vlc


Screenshots, layouts and env. detection

1. [it's quite ok with default fonts]
http://pasteboard.co/R2ZYGRL.png
2. [if wide version, then I'd vote for this]
http://pasteboard.co/R31wCee.png
3. [as drop down does not seam to react at colspan]
http://pasteboard.co/R32Eon6.png

4. [enviroment]
http://pasteboard.co/R34Vl8w.png


Ampersands "&", keyboard shortcuts do not work at all. Probably best is to remove them.
There is no "default" submit button. I can tab only in between inputs, pressing enter does nothing, dialog or inputs have no default action attached.

Report

ate9

1 year ago

lua environment detection code example

https://github.com/keplerproject/luarocks/blob/master/src/luarocks/cfg.lua

Report

mederi

1 year ago

Thank you for your contribution. I will fix it soon.

Report

puchikunch

1 year ago

Good plugin, but not conveniently when management appears in a separate window.
It is worth pressing a pause in a vlc and the window of a plugin appears behind a player.

Report

mederi

1 year ago

Sorry, the "always on top" feature is not available for dialog box window of VLC Extensions.
You could have the "Pause/Play" button in the dialog box if it helps you. Just edit the script and insert the new button in function Create_dialog():Quote:
d:add_button("&Pause / &Play", function() vlc.playlist.pause() end, 2,4,1,1)

Report

zimon

3 years ago

I got this in debug window when pressing mouse buttons next+previous:
main debug: auto hiding mouse cursor
main debug: VoutDisplayEvent 'mouse button' 8 t=8
main debug: VoutDisplayEvent 'mouse button' 8 t=9
main debug: VoutDisplayEvent 'mouse button' 7 t=8
main debug: VoutDisplayEvent 'mouse button' 7 t=9
main debug: auto hiding mouse cursor

Report

Mind0Master1

3 years ago

Can this add-on still be used with VLC 2.1 on Mac?
b/c
1. no controls in a custom dialog box
2. no more custom hotkeys in this extension (per https://forum.videolan.org/viewtopic.php?f=29&t=100885#p388873)

Report

mederi

3 years ago

Please edit the script and remove those two lines with add_callback, del_callback and share your experience here, whether the dialog box in extension works on Mac. I am on Windows XP.

Report

GDswamp

3 years ago

No success with this, sorry to say. I am on VLC 2.0.8 Twoflower, Mac OS 10.8.5. I've tried implementing two lua extensions, this one and another of yours (mederi) for displayi ng the time in tenths of seconds. So far no dice.

In this case I installed in the directory you suggested, and made the suggested edits in Mac's TextEdit program then resaved back to .lua format (first I just deleted the line about "create_dialog()", then also the two other lines you mention in the above comment). No sign of the new functionality when I restart the program. Don't suppose you (mederi) know any Mac user/programmers on the forum who could be enlisted to figure out what's getting lost in translation?

Report

GDswamp

3 years ago

No success with this, sorry to say. I am on VLC 2.0.8 Twoflower, Mac OS 10.8.5. I've tried implementing two lua extensions, this one and another of yours (mederi) for displayi ng the time in tenths of seconds. So far no dice.

In this case I installed in the directory you suggested, and made the suggested edits in Mac's TextEdit program then resaved back to .lua format (first I just deleted the line about "create_dialog()", then also the two other lines you mention in the above comment). No sign of the new functionality when I restart the program. Don't suppose you (mederi) know any Mac user/programmers on the forum who could be enlisted to figure out what's getting lost in translation?

Report

GDswamp

3 years ago

No success with this, sorry to say. I am on VLC 2.0.8 Twoflower, Mac OS 10.8.5. I've tried implementing two lua extensions, this one and another of yours (mederi) for displayi ng the time in tenths of seconds. So far no dice.

In this case I installed in the directory you suggested, and made the suggested edits in Mac's TextEdit program then resaved back to .lua format (first I just deleted the line about "create_dialog()", then also the two other lines you mention in the above comment). No sign of the new functionality when I restart the program. Don't suppose you (mederi) know any Mac user/programmers on the forum who could be enlisted to figure out what's getting lost in translation?

Report

mederi

3 years ago

Thank you for feedback. I have just found following video with instructions how to install VLSub extension on Linux, Windows and Mac:
http://www.youtube.com/watch?v=of2wgf_dhQw
You do not need to understand the language there, just jump to the 13-th minute in the video (part about Mac) and watch it.
VLSub extension also uses dialog box and it apparently works on Mac, too. Please install the Previous frame extension the same way like the guy in the video and tell me, whether the extension appears in VLC menu and whether it works. Do not eliminate dialog box by removing create_dialog(). You probably need to eliminate callback as described in my previous comment.
Callbacks probably never worked on Mac. They works on Windows and Linux in VLC-2.0.x, not in new VLC-2.1.x. Please share your experience to provide correct instructions for other users of Mac OS X. Thanks.

Report

gernoth

3 years ago

I would like to assign a hotkey to this action.
However, I cannot find it in the hotkeys dialog.
Any idea how this could be accomplished?

Report

mederi

3 years ago

You cannot find it in the hotkeys dialog (VLC preferences) because it is not there. You just activate the extension in VLC menu, then you use the predefined hotkeys Numpad4 and Numpad6 in the player. If you want to define custom hotkeys, then edit the script and use custom key code number (previous_key=52). To find out a key code, just activate the Logger in Help in the dialog box of the extension, focus the player and press a desired key there.

Report

gernoth

3 years ago

yes but I _have_ to activate the extension through the menu? What if I am currently in full screen mode (then I have no menu, hitting Alt key doesnt help). Can you think of any way to bind this to a (maybe exotic) main window keyboard combination?

Report

mederi

4 years ago

I tested the extension on a short sample of TS{M2V, M1A} and MKV{AVC1, AAC}. The extension does not work well with these formats if you would like to perform split-second jumps, but it still can be used for longer backward/forward jumps. Tiny jumps work well in AVI{XVID, MP3} format.

Report

4 years ago

v2.1 (28.9.2015) 24717
- compact size layout of the dialog box (a trick with right buttons over spanned text input fields) caused troubles on OS X => no spanning now
- removed ampersands from buttons on OS X as they do not work as hotkeys there
- added "Pause/Play" button

Jump to time 2.0 (11.5.2015) 22382
- reworked and renamed "Previous frame" extension
- libvlc hotkeys (unsupported callbacks since VLC-2.1) replaced with dialog box hotkeys at least

Previous frame 1.0 (10.1.2013)

File (click to download) Version Description Filetype Packagetype License Downloads Date Filesize OCS-Install
Score 50%
50.00 Likes
50 Dislikes
Details
version
updated Sep 28 2015
added Jan 10 2013
downloads
page views 15309