Auto-split every X seconds

Many of my recordings have the video automatically transitioning between several web-cam feeds. When I bring a clip into Shotcut, I have to manually split the clip every 30, 60, or 90 seconds (depends on the configuration used when recording). I’ve scanned the forum, documentation, and did some trial-and-error, but cannot find a way to automatically split the video. Does anyone know if this might be possible using native functionality or existing scripts/plugins?

Thanks in advance!

Use Player > Set Jump Time and the Jump actions to improve the manual process. There is no auto-split, but you can use an app called AutoHotkey.

1 Like

You can use Ctrl+J to set a Jump duration.
For example to 30, 60 or 90 seconds (00:00:30:00, 00:01:00:00 or 00:01:30:00).

shotcut_901xgG8J6e

Then use:

  • Alt+PgDown to do a Forward Jump.
  • Alt+PgUp to do a Backward Jump

If you don’t like those 2 shortcuts, you can change them to custom ones in:
Help > Actions and Shortcuts.

I personally changed them to:

  • Q for Backward Jump.
  • E for Forward Jump

bW1SW5p0oi

1 Like

Ooops… sorry

Hi @aberrantcode - I just wrote a simple Auto HotKey script which does what you want. (Note: AHK is for Windows only).
How to use it:

  1. Set the time of the jump you require in Shotcut to n seconds (or frames) (CTRL + J)
  2. Run Auto Hotkey on your computer
  3. Unzip the AHK file attached and double click it.
  4. When you are on the timeline in Shotcut, press the hotkey CTRL + 1 (this “hotkey” can be changed by editing the script) and the cursor will jump then split automatically.

I’ve also added a “loop” feature in the script so you press CTRL + 2 and the process (Jump and Split) will repeat 4 times. Again, this number of repeats can be changed. Just replace “4” (after “loop”) with any number you want.

Shotcut SPLIT (cut) every n seconds.zip (309 Bytes)

Here’s the text of the script:

 SetKeyDelay, 200			   ; ^ =ctrl  +=shift  !=alt
 SetNumLockState , on

 ^1::
 send, !{PgDn}
 sleep, 100
 send, s
 return

 ^2::
 loop 4 {
 send, !{PgDn}
 sleep, 100
 send, s
 }
 return
2 Likes