Keyboard‐driven video event tagger
Find a file
2021-09-16 22:57:29 +02:00
.builds Add README and tags.json to Windows build 2021-06-28 20:20:30 +02:00
Fields Clean up field types 2021-09-16 20:33:39 +02:00
icons/breeze First commit 2021-06-14 19:13:14 +02:00
translations Update strings and sl translations 2021-09-16 20:52:01 +02:00
.gitignore Add translations *.qm to .gitignore 2021-09-01 16:23:58 +02:00
event_filter.cpp Reduce C++ fancyness 2021-09-16 21:54:22 +02:00
event_filter.h Implement filter 2021-09-16 20:33:33 +02:00
event_list.cpp Rename property "tag" to "name" in tag definitions 2021-09-16 20:33:47 +02:00
event_list.h Implement filter 2021-09-16 20:33:33 +02:00
Events.qml Fix tab navigation 2021-09-16 20:34:28 +02:00
fuzbal.pro Implement filter 2021-09-16 20:33:33 +02:00
Hotkey.qml Add Hotkey type for defining and displaying shortcuts 2021-09-16 20:34:35 +02:00
icons.qrc First commit 2021-06-14 19:13:14 +02:00
io.h First commit 2021-06-14 19:13:14 +02:00
LICENSE Add LICENSE file 2021-06-14 19:39:52 +02:00
main.cpp Implement event model in C++ 2021-09-16 20:33:05 +02:00
main.qml Fix tab navigation 2021-09-16 20:34:28 +02:00
main.qrc Add Hotkey type for defining and displaying shortcuts 2021-09-16 20:34:35 +02:00
qtquickcontrols2.conf First commit 2021-06-14 19:13:14 +02:00
README.md README: describe filter syntax 2021-09-16 21:40:24 +02:00
Sidebar.qml Sidebar: focus event list when adding a new event 2021-09-16 22:57:29 +02:00
tags.json Rename property "tag" to "name" in tag definitions 2021-09-16 20:33:47 +02:00
UNLICENSE First commit 2021-06-14 19:13:14 +02:00
util.js First commit 2021-06-14 19:13:14 +02:00
Video.qml Fix tab navigation 2021-09-16 20:34:28 +02:00
Volume.qml First commit 2021-06-14 19:13:14 +02:00

Fuzbal

Friendly Usable ZeroBullshit Analyzer & Labeler: a keyboarddriven utility for tagging events in video clips, created for analyzing football matches but likely useful for other kinds of videos.

While functional, this project is not yet productionready. While unlikely, it might eat your files or your cake.

Usage

Open a video. Press space to start or stop video playback. Seek with and . Use , and . to decrease and increase the playback rate, and = to reset it.

To add a new event, press the key for the corresponding tag and fill out event details. Custom tags can be defined as a JSON array and loaded at runtime. See tags.json for the builtin example showcasing all supported field types.

Events for video.mp4 are saved in JSON format to the file video.mp4.events. The saved file includes tag definitions, which are loaded automatically when the video is opened. Event timestamps are stored with millisecond precision.

Filter

Input spaceseparated search strings to select a subset of events. Selected events must match each string, either as the tag name or a field value. Tags are matched from the beginning, so p will select events tagged pass and penalty.

Text and enum fields match when they contain the given search string. Prefixing the string with = specifies a complete match. The string 2 thus matches values 123, 2 and 22, while =2 only matches 2. A boolean field matches when its value is true and its name starts with the search string. Prefixing the string with ! inverts the match.

Finally, a search string can be prefixed with a (prefix of) field name, as in play:2. This selects events with a field named player whose value matches 2 as above. This can be combined with the ! and = operators, as in pass:!success.

Compiling

Qt≥5.14 is required. Once Debian catches up, this might be enough:

# apt install git qtmultimedia-dev qtquickcontrols2-dev qml-module-qtmultimedia qml-module-qtquick-dialogs

One or more of the gst-plugins packages are needed at runtime to play videos. Build with:

$ mkdir build && cd build
$ qmake ..
$ make

This should create the fuzbal binary.

License

This project is released into the public domain. Breeze icons are distributed under LGPL3+. See UNLICENSE and icons/breeze/LICENSE for details.