.builds | ||
Fields | ||
icons/breeze | ||
translations | ||
.gitignore | ||
event_filter.cpp | ||
event_filter.h | ||
event_list.cpp | ||
event_list.h | ||
Events.qml | ||
fuzbal.pro | ||
Hotkey.qml | ||
icons.qrc | ||
io.h | ||
LICENSE | ||
main.cpp | ||
main.qml | ||
main.qrc | ||
qtquickcontrols2.conf | ||
README.md | ||
Sidebar.qml | ||
tags.json | ||
UNLICENSE | ||
util.js | ||
Video.qml | ||
Volume.qml |
Fuzbal
Friendly Usable Zero‐Bullshit Analyzer & Labeler: a keyboard‐driven 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 production‐ready. 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 built‐in 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 space‐separated 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 it’s value is true and it’s 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.