Minimalist video player using GTK4, libadwaita and GStreamer. The main purpose is to make playing hardware accelerated videos with e.g. hantro and OpenGL simple.
It supports:
- Inhibiting suspend/idle when playing video
- Stopping video playback on (i.e. power button toggled) blank
- Registering as default video player in GNOME control center
- A MPRIS interface to control the playback
- Resuming position on previously played videos
- Playing videos from popular online sites using yt-dlp as "preprocessor".
Flatpak build:
# Intial setup
flatpak install --user org.gnome.Sdk//master
flatpak install --user org.gnome.Platform//master
# Build
flatpak-builder --force-clean --install --user _build/ org.sigxcpu.Livi.json
Regular build:
# Intial setup
apt build-dep .
# Build
meson setup . _build
meson compile -C _build
To play a video using the preprocessor use -Y
:
livi -Y <url>
For this to work yt-dlp
needs to be able to fetch a combined audio and
video stream. If this is possible for a given URL with the current yt-dlp
configuration can be checked with:
yt-dlp --list-formats <url>
At least one of the listed format there needs to contain a video and audio stream as you'd otherwise get video playback without audio when playing the URL in livi.
You can wiggle yt-dlp
option to see if you can find a combined
format. Common options there are --format-sort
and
--extractor-args
. Once you've found suitable options you can put
them into `~/.config/yt-dlp.conf. E.g.
cat <<EOF > ~/.config/yt-dlp.conf
--format-sort=codec:h264,codec:vp8
--extractor-args=youtube:player-client=android
EOF