Rafał Dzięgiel d7f069d6c3 lib: Introduce Clapper playback library
An easy to use media playback library (libclapper) as a GstPlayer replacement.

Previously we tried to use upstream `gstplayer` library to control playback and
pass all events from multiple threads GStreamer uses into an app main thread.
Since this caused some thread racy problems and we needed additional ABI breaking
changes to better suit our needs, we ended up with a modified fork of said library
renamed to `gstclapper` as a temporary solution.

This new library simply named `clapper` replaces our previous `gstclapper` solution
and is written completely from scratch by myself. The aim here is to have an easy to
use playback library better suited to work with (but not limited to) GTK and GObject
properties bindings by relying on "notify" signals.

Major differences include:
* Operates on a playback queue (inherits `GListModel` interface) instead of a single URI
* Uses "notify" signals for property changes always dispatched to app thread
* Time is passed/read as decimal number in seconds instead of int64 in nanoseconds
* Integrates `GstDiscoverer` to figure out media info (such as title) before playback
* Easy to use MPRIS support as part of library
* Optional playback remote controls with WebSocket messages

The new library will be distributed with Clapper player. This includes public headers
and GObject Introspection support.

Licensed under LGPL-2.1-or-later.

Enjoy
2024-04-05 21:18:08 +02:00
2022-05-06 18:57:12 +02:00
2023-06-05 21:22:40 +02:00
2020-10-31 16:43:27 +01:00
2021-08-23 16:18:13 +02:00
2022-09-07 13:15:34 +02:00
2020-09-08 19:55:59 +02:00
2020-10-15 10:45:57 +02:00
2022-04-01 09:42:06 +02:00
2021-06-17 17:20:42 +02:00

Clapper

Flatpak Flatpak Nightly Crowdin Matrix Donate

A GNOME media player built using GJS with GTK4 toolkit. The media player uses GStreamer as a media backend and renders everything via OpenGL.


Windowed Mode


Fullscreen Mode


Floating Mode

Features:

Installation from Flatpak

The Flatpak package includes all required dependencies and codecs. Additionally it also has a few patches, thus some functionalities work better (or are only available) in Flatpak version (until my changes are accepted upstream). List of patches used in this version can be found here.

Download on Flathub

Packages in Linux Distributions

Packaging status

Pre-built RPM packages are also available in my repo (see status).
Those are automatically built on each git commit, thus are considered unstable.

Installation from Source Code

meson builddir --prefix=/usr/local
sudo meson install -C builddir

Questions?

Feel free to ask me any questions. Come and talk on Matrix: #clapper-player:matrix.org

Translations

Preferred translation method is to use Clapper Crowdin web page.

Crowdin does not require any additional tools and translating can be done through web browser. You can login using GitHub account or create a new one. Only I can add new languages to this project, so if your language is not available, please contact me first.

Special Thanks

Many thanks to sp1ritCS for creating and maintaining package build files. Big thanks to bridadan and Uniformbuffer3 for helping with testing V4L2 and NVDEC hardware acceleration methods.

Thanks a lot to all the people who are supporting the development with their anonymous donations through Liberapay. I ❤️ U.

Description
Level up your video experience with a modern and user-friendly media player.
Readme 25 MiB
Languages
C 96.7%
Meson 2.8%
CSS 0.5%