User Manual
Every button in Soccer Video Tools, screen by screen. Button names are shown the way they look in the app, like Load; text boxes and lists look like this.
Getting started
Install it with SoccerVideoTools-Setup.exe from the website (no administrator rights needed), then open Soccer Video Tools from the Start menu or the desktop shortcut. It opens in your browser. A small window shows the app is running: keep it open while you work, and close it to quit. Everything runs on your own PC; your videos are never uploaded.
- Add your team under Teams & Rosters: the team name, then each player and their shirt number.
- Load the match: Browse to the video file and press Load.
- Tag the game: press Space when something happens, pick the player and the event, press Enter. Play carries on.
- Tune the clips in Generate Reels → Clip Editor: preview them, zoom in, follow a player.
- Render on the Generate tab, or download single clips straight from the Clip Editor.
- Publish: copy chapter timestamps for YouTube from YT Chapters.
Main screen
The main screen is where you watch the game and tag what happens: the video player on the left, the tagging panel on the right and the event log underneath.
Top bar
| Control | What it does |
|---|---|
| Teams & Rosters | Opens the team and player lists used by the tagging panel. See Teams & Rosters. |
| Generate Reels | Opens the Clip Editor, the Generate settings and the Watch Reels player. See Generate Reels. |
| YT Chapters | Builds YouTube chapter timestamps from your tags. See YT Chapters. |
| Help | Shows the keyboard shortcuts. H opens and closes it too. |
Video and player
| Control | What it does |
|---|---|
| Video box | The path of the match video. Paste a path here, or use Browse. |
| Browse | Picks the video file from your PC. |
| Load | Opens the video in the player. Large 4K files stream straight from disk. Loading a video also sets up its event log next to it, and brings back any external audio sync you saved for it. |
| ◀◀ ▶ ▶▶ | Rewind 10 seconds, play / pause and forward 10 seconds. Keys: [ or ←, Space, ] or →. |
| Time display | Current position and the video's length. |
| Timeline (scrubber) | Drag to move through the game. Each tag shows as a small marker on it, and a trim for the full video shows as shaded ends. |
| - 1.00x + | Playback speed, in 0.25x steps. Keys: - and +. |
| − 1.0x + ↺ | Zoom the player out, in, and back to the full picture. You can also scroll on the video to zoom where the pointer is, drag to move around, and double-click to reset. This zoom is only for watching (for example to read a shirt number); it doesn't change your videos. |
Trim full video
Sets where the full-game video (an option on the Generate tab) starts and ends, for cutting off the warm-up or the walk off.
| Control | What it does |
|---|---|
| ⇤ Set start here | The full video starts at the player's current position. Also ticks "Also render the full game video" on the Generate tab. |
| Set end here ⇥ | The full video ends at the current position. |
| Clear trim | Uses the whole footage again. |
| Trim display | Shows the chosen start and end and the resulting length, or "Not trimmed". |
Event log file
Your tags are saved automatically, a moment after each change, to a file called event_log.json next to the video. This includes each clip's zoom, framing and followed path.
| Control | What it does |
|---|---|
| Event log box | Where the tags are saved. It's filled in for you when you load a video. |
| Browse | Picks a different log file, for example one saved from an earlier session. |
| Load | Loads the tags from the log file in the box, to carry on where you left off. |
| Save status | Confirms when the log was last saved. |
External audio
Use sound recorded separately (commentary on a phone, or an audio recorder) instead of, or mixed with, the camera's sound. It plays in the app and goes into every video you render.
| Control | What it does |
|---|---|
| External audio box | The audio file's path. Several files can be typed separated by |. |
| Browse | Picks the audio file. If your recorder splits long recordings into parts, select every part at once; they're sorted by name and joined end to end. |
| Add | Adds more parts after the current ones, for example from another folder. Shown once audio is loaded. |
| Load | Loads the files typed in the box. |
| Remove | Stops using external audio. |
| Parts list ↑ ↓ ✕ | For split recordings: move a part earlier or later, or remove it. If the file names carry the recorder's start times, the app warns about gaps or a wrong order. |
| -1s -.1 -.01 … +1s | Nudge the audio earlier or later by 1, 0.1 or 0.01 seconds. |
| Offset box | The exact time in the video where the audio file starts. Negative means the audio started before the video. |
| Auto-sync | Lines the audio up for you by comparing it with the camera's own sound. Check it by ear afterwards. |
| Replace game audio / Mix with game audio | Use only the external audio, or play it over the camera's sound. |
| Game and Audio sliders | The camera's volume (in mix mode) and the external audio's volume. |
Suggested moments
The app can watch and listen to the game for you, and suggest where the highlights are. It listens for crowd cheers and the referee's whistle, and watches the pace of play: how fast players are moving and how hard the camera is chasing the ball. Then it scores each moment on what happens around it. A goal usually goes: fast play, a big long cheer, a lull while the players walk back, then the kickoff whistle. A near miss gets the cheer without the lull and kickoff, and a foul gets a whistle with play stopping and no cheer.
Each suggestion gets a label:
- Probable goal (red): a strong cheer followed by play stopping and a kickoff whistle.
- Chance (blue): a cheer without the restart: a shot, a save, a near miss. A single parent shouting scores low, because one voice sounds different from a crowd.
- Fast play (green): a burst of pace nobody cheered, like a counterattack or a scramble in front of goal.
- Whistle (purple): a whistle on its own: a foul, a throw-in, half time.
| Control | What it does |
|---|---|
| Find moments | Listens to and watches the whole game. Reading the video's movement takes a few minutes for a full 4K game the first time (faster with an NVIDIA graphics card), and is remembered after that, so running it again is quick. The suggestions are remembered for this video. |
| Source menu | Shown when external audio is loaded: listen to the External audio or the Game video's audio. A recorder by the sideline often hears the crowd better. The video's movement is used either way. |
| Goals Chances Fast play Whistles | Show or hide each kind, in the list and on the timeline. |
| Top 25 | How many to list: the best 10, 25 or 50 you haven't tagged yet, or all of them. They're listed in match order. |
| Time | Click it to jump there. |
| Score bar | How likely it is to be a highlight. Timeline marks are brighter for higher scores. |
| Reasons | Why it was suggested, for example "7s cheer, +17 dB · fast play before · play stopped after · kickoff whistle 0:43 later". |
| ▶ | Plays from a few seconds before (10 for a probable goal, since the crowd reacts after the shot). |
| Tag | Jumps just before the moment, pauses and opens the tagging panel. Fine-tune with , and ., then pick the player and event and press Enter. |
| ✕ | Not a real moment (a parent shouting, a whistle from the next pitch): hides it for good. |
| Hide list | Folds the list away; the timeline marks stay. |
A suggestion disappears once you've tagged something close to it (up to 15 seconds before it), and the next best takes its place, so you can work down the list. Press M to play the next suggestion and Shift M for the previous one.
The scoring is a starting point, not a referee: it can't see the ball go in. Expect a few false alarms and the odd quiet goal it misses, especially at games with few spectators.
Auto-Cut
No time to tag? Auto-Cut… (next to the suggestions) makes one highlight reel, AUTO_CUT.mp4, straight from the suggested moments, in match order. Clips that overlap are joined into one. The logo, name overlay, GPU and external audio settings come from the Generate Reels tab.
| Control | What it does |
|---|---|
| Kinds of moment | Which to include: probable goals, chances, fast play and whistles (whistles are off to start with). |
| Seconds before / after | How much of the game to keep around each kind. Probable goals default to 15 seconds before and 5 after, for the build-up and the celebration. |
| Reel length | Fills the reel with the best moments first, up to about 2, 3, 5, 8 or 10 minutes. Or choose Every moment that matches. |
| Minimum score | Leaves out the weaker suggestions. |
| Also include my tagged events | Adds your own tags, with their Clip Editor timing, zoom, followed player and name overlay; they always go in. A moment that overlaps a tag takes on the tag's zoom and name. |
| Also make a 9:16 version | Adds a vertical copy in the vertical folder. |
| Save to | The output folder; starts as an Auto-Cut folder next to the video. |
| Make the reel | Shows how many clips and how long the reel will be before you start, then renders it. |
Dismissed suggestions (✕) are left out, so a quick pass through the list first makes a cleaner reel.
Tagging panel
Press Space when something happens: the game pauses so you can tag it. Pick a player and an event, add a note if you like, and press Enter.
| Control | What it does |
|---|---|
| Team list | Chooses which team's players appear below. |
| Player buttons #9 Mateo | Picks the player for the tag. Players come from Teams & Rosters. |
| G | A tag with no particular player, such as an opponent's goal. Picked for you if you choose Goal without a player. "G" tags go into the goals reel but never into a player reel or a name overlay. |
| Event buttons Touch Pass Shot Steal Save Foul Goal Other | Picks what happened. Keys: T P S X V F G O. The event decides the clip's length (see Category Windows). |
| Note box | Optional text, like "header from the corner". It appears in the event log and in YouTube chapters. N jumps to it. |
| Save Tag (Enter) | Saves the tag at the paused moment and resumes play. Needs a player and an event. |
| Cancel (Esc) | Drops the tag and resumes play. |
Event log
| Control | What it does |
|---|---|
| A row in the table | Click it to jump the player to that moment. |
| × on a row | Deletes that tag. |
| Undo (U) | Removes the most recent tag. |
| Clear All | Deletes every tag, after asking you to confirm. |
Teams & Rosters
Teams and players are saved on your PC and appear in the tagging panel's Team list and player buttons.
| Control | What it does |
|---|---|
| New team name + Add | Creates a team. Enter works too. |
| A team in the list | Click it to show and edit its players on the right. |
| × next to a team | Removes the team and all its players, after asking you to confirm. |
| Player name + # + Add | Adds a player to the selected team, with an optional shirt number (0–99). |
| # box on a player | Changes that player's shirt number. Numbers show on the player buttons and in name overlays, like "#9 Mateo". |
| × next to a player | Removes the player from the team. Tags you already made for them are kept. |
| × (top right) | Closes the window. Esc also works. |
Generate Reels
Turns your tags into videos. It has three tabs: Clip Editor to check and frame each clip, Generate to render everything, and Watch Reels to play the results.
Clip Editor
Every tag becomes a clip that starts a little before the tagged moment and ends a little after it.
| Control | What it does |
|---|---|
| Category Windows: Default, Shot / Save, Goal | Seconds before and after the tag for each kind of event. Defaults: 3 s and 3 s for most events, 4 s and 4 s for shots and saves, 7 s before and 6 s after a goal. |
| Refresh Clips | Recalculates the clip list after you change the windows or your tags. |
| A row in the clip table | Selects the clip and opens its adjuster below. The Zoom column shows its framing, for example "1.5x + follow · 9:16 1.20x". |
| ▶ on a row | Previews that clip. |
| Before / After sliders | Lengthen or shorten this clip only, from 0 to 30 seconds each way. |
| Reset to Category Default | Puts this clip back to its category's window. |
| Preview Clip / Stop | Plays the clip in the preview below, or stops it. Playback stops at the clip's end. |
| Download clip | Renders just this clip, with the Generate tab's settings (name overlay, logo, audio, framing), and saves it to your browser's Downloads folder. No output folder needed. Downloading the same clip again is almost instant. |
| Download 9:16 | The same, as a vertical video for Instagram and TikTok. |
Clip preview
The preview shows exactly what the rendered clip will look like.
| Control | What it does |
|---|---|
| Scroll / drag / double-click on the preview | Zoom in on the action, move the framing around, or reset to the full picture. |
| Zoom readout 1.5x → 2560×1440 | The zoom and the size the clip will render at. Zoom goes up to 2x on 4K footage. Zoomed clips are shrunk to a standard size and never enlarged, so they stay sharp. 1080p footage can't be zoomed. |
| Use this framing for clip | Saves the current zoom and position to the clip, so the rendered clip uses them. |
| Clear zoom | Removes the clip's zoom (and any followed player). |
| × on the preview | Closes the preview. |
Follow a player
Makes the zoomed framing follow one player through the clip, like a camera operator. It needs footage above 1080p.
| Control | What it does |
|---|---|
| Follow a player | Zooms in to 1.5x if needed and pauses. Click the player in the preview, ideally in a frame where they're clearly visible. The app then tracks them through the clip; the first time, it downloads its 36 MB tracking model. |
| Confidence strip | Under the preview: green = confident, amber = another player was close by, red = lost (position estimated), white marks = your clicks. Click the strip to jump there. |
| Correct position here | Pause where the framing lost the player (usually amber or red), press this, then click the player. Tracking restarts from that point; earlier parts stay as they were. |
| Remove nearest correction | Removes the correction click closest to the playhead and re-tracks. |
| Follow a different player | Starts again with a new first click. |
| Stop following | Keeps the clip's zoom but no longer follows anyone. |
The followed path is saved with the clip automatically, and is used in both landscape and 9:16 videos. Dragging the preview doesn't move the framing while a player is followed.
9:16 framing
Positions the slice that vertical (9:16) videos keep.
| Control | What it does |
|---|---|
| 9:16 framing / Done with 9:16 | Shows the whole picture with a tall outline of the vertical slice, or goes back to the normal view. |
| Drag the outline | Moves the slice. Its position is saved to the clip as you let go. |
| Scroll on the preview | Zooms the slice. The readout shows the size, e.g. "1.26x → 720×1280". 4K stays 1080×1920 up to 1.125x and can zoom to about 1.7x at 720×1280. |
| Reset 9:16 | Goes back to centring on the clip's zoom. |
A clip that follows a player has its slice follow them too. Footage under 1280 rows uses the blurred-background layout, so there's nothing to position.
Generate tab
Renders every reel at once. These settings also apply to single-clip downloads.
| Control | What it does |
|---|---|
| Video file | The loaded video (filled in for you). |
| Output directory + Browse | The folder the videos are saved to. |
Overlay Settings
| Show on player reels | Adds the player's name (and number) to their clips. |
| Text position, Font size | Which corner the name goes in, and how big it is (12–120). |
| Logo watermark + Browse | A PNG or JPG logo, such as your club crest, put on every video. |
| Logo position, Logo size, Logo opacity | Its corner, its size (5–40% of the width) and how see-through it is. If the name and logo would share a corner, the name moves out of the way. |
Full Video
| Also render the full game video | Also saves the whole game as one video, trimmed if you set a trim. |
| Add the logo watermark to the full video | Puts the logo on it too. This re-encodes the whole game, which is slow. Unticked (and with no zoom), the full video is copied without re-encoding, which is nearly instant. |
| Zoom slider | Zooms the whole game up to 2x, for example about 1.1x to crop out a camera's burned-in clock and logo. A preview shows what's kept. |
| Keep | Which part of the picture the zoom keeps: top (crops the bottom), centre, or bottom. |
| Output size | Standard size, never enlarged (1.1x of 4K = 1440p, 2x = 1080p), or the same size as the source. |
| Start at / End at + Set to current / Clear | The full video's trim, typed as m:ss or h:mm:ss, or taken from the player's position. Same as the trim buttons on the main screen. |
Vertical (9:16) for Instagram & TikTok
| Also export vertical 9:16 versions | Saves every reel again at 1080×1920 (or 720×1280 for zoomed clips) in a vertical folder, plus each clip on its own in vertical/clips, ready to post. |
| Layout | Crop to fill: a full-height slice of the picture, positioned per clip with 9:16 framing. Whole picture over a blurred background: the full wide shot across the middle. Footage under 1280 rows always uses the blurred layout. |
Rendering
| Re-encode | Cuts exactly on the frame you chose, but takes longer. It turns on by itself when overlays or zoom are used. Off, plain clips are copied almost instantly but may start a fraction of a second early. |
| Use GPU encoding | Encodes on your NVIDIA, AMD or Intel graphics card, which is much faster. The app shows which one it found, and uses the CPU if none works. |
| Install ffmpeg automatically | Shown only if ffmpeg (the video engine) is missing. Installs it for you. |
| Generate Reels | Renders everything, with a progress bar. Clips that haven't changed since the last render are reused, so re-renders are fast. |
What you get: GOALS_only.mp4, a players folder with one reel per player, ALL_HIGHLIGHTS.mp4, the full game if chosen, and the vertical folder if chosen.
Watch Reels
| Control | What it does |
|---|---|
| Output directory + Browse | The folder your reels were saved to (filled in after a render). |
| Load | Lists the videos in that folder. |
| A video in the list | Plays it in the player below. |
| × on the player | Closes it. |
YT Chapters
Writes chapter timestamps for your YouTube video description, so viewers can jump straight to each goal. They match the full-game video, including its trim.
| Control | What it does |
|---|---|
| Include: Goals, Shots, Saves, Steals, Fouls, Passes, Touches, Other | Which events become chapters. Goals, shots, saves, steals and fouls are ticked to start with. |
| Show player name | Adds the player to each chapter, like "Shot — Nico". |
| Include notes | Adds the tag's note in brackets. |
| Merge events within … sec | Combines events close together into one chapter, keeping the biggest moment (a goal beats a shot). |
| Generate | Writes the chapter list into the box, starting with "0:00 Start". YouTube needs at least three chapters; the app reminds you if there are fewer. |
| Copy to Clipboard | Copies the list, ready to paste into your video's description. |
Keyboard shortcuts
Press H in the app to see these any time.
Playback
- Space
- Pause and start tagging
- [ ←
- Back 10 seconds
- ] →
- Forward 10 seconds
- , .
- Step 1 second back / forward (paused)
- - +
- Slower / faster
Tagging
- Enter
- Save the tag
- Esc
- Cancel and resume play
- N
- Jump to the note
- U
- Undo the last tag
- M Shift M
- Next / previous suggested moment
- H
- Show shortcuts
Events
- T P S
- Touch, Pass, Shot
- X V F
- Steal, Save, Foul
- G O
- Goal, Other
Zoom (player)
- Z
- Zoom in
- Shift Z
- Zoom out
- 0
- Reset zoom