mirror of
https://github.com/Rafostar/clapper.git
synced 2025-08-30 07:42:23 +02:00
Add some easy way to install
I know that this should be done using some sort of build system (like meson), but the player is still far from finished and a basic install script should be sufficient for the time being, if anyone wishes to test it.
This commit is contained in:
24
README.md
24
README.md
@@ -1,17 +1,35 @@
|
|||||||
# Clapper
|
# Clapper
|
||||||
A GNOME media player built using [GJS](https://gitlab.gnome.org/GNOME/gjs) and powered by [GStreamer](https://gstreamer.freedesktop.org) with [OpenGL](https://www.opengl.org) rendering. Can also be used as a pre-made widget for [Gtk](https://www.gtk.org) apps.
|
A GNOME media player built using [GJS](https://gitlab.gnome.org/GNOME/gjs) and powered by [GStreamer](https://gstreamer.freedesktop.org) with [OpenGL](https://www.opengl.org) rendering. Can also be used as a pre-made widget for [GTK](https://www.gtk.org) apps.
|
||||||
|
|
||||||
<b>WORK IN PROGRESS</b>
|
<b>WORK IN PROGRESS</b>
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
Clapper uses these `GStreamer` elements:
|
Clapper uses `GStreamer` bindings from `GI` repository, so if your repo ships them as separate package, they must be installed first.
|
||||||
|
Additionally Clapper requires these `GStreamer` elements:
|
||||||
* [gtkglsink](https://gstreamer.freedesktop.org/documentation/gtk/gtkglsink.html)
|
* [gtkglsink](https://gstreamer.freedesktop.org/documentation/gtk/gtkglsink.html)
|
||||||
* [glsinkbin](https://gstreamer.freedesktop.org/documentation/opengl/glsinkbin.html)
|
* [glsinkbin](https://gstreamer.freedesktop.org/documentation/opengl/glsinkbin.html)
|
||||||
|
|
||||||
Other required plugins (codecs) depend on video format.
|
Other required plugins (codecs) depend on video format.
|
||||||
|
|
||||||
To use `VAAPI` make sure you have `gstreamer1-vaapi` installed. Verify with:
|
## Installation
|
||||||
|
Run in terminal:
|
||||||
|
```sh
|
||||||
|
sudo ./install.sh
|
||||||
|
```
|
||||||
|
I know that this should be done using some sort of build system (like `meson`), but the player is still far from finished and a basic install script should be sufficient for the time being, if anyone wishes to test it.
|
||||||
|
|
||||||
|
## Hardware acceleration
|
||||||
|
Using hardware acceleration is highly recommended. As stated in `GStreamer` wiki:
|
||||||
|
```
|
||||||
|
In the case of OpenGL based elements, the buffers have the GstVideoGLTextureUploadMeta meta, which
|
||||||
|
efficiently copies the content of the VA-API surface into a GL texture.
|
||||||
|
```
|
||||||
|
Clapper uses `OpenGL` based sinks, so when `VA-API` is available, both CPU and RAM usage is much lower.
|
||||||
|
|
||||||
|
To use `VA-API` make sure you have `gstreamer1-vaapi` installed. Verify with:
|
||||||
```shell
|
```shell
|
||||||
gst-inspect-1.0 vaapi
|
gst-inspect-1.0 vaapi
|
||||||
```
|
```
|
||||||
On some older GPUs you might need to export `GST_VAAPI_ALL_DRIVERS=1` environment variable.
|
On some older GPUs you might need to export `GST_VAAPI_ALL_DRIVERS=1` environment variable.
|
||||||
|
|
||||||
|
Other acceleration methods (supported by `GStreamer`) should also work, but I have not tested them due to lack of hardware.
|
||||||
|
12
bin/clapper
Executable file
12
bin/clapper
Executable file
@@ -0,0 +1,12 @@
|
|||||||
|
#!/usr/bin/gjs
|
||||||
|
|
||||||
|
const Package = imports.package;
|
||||||
|
|
||||||
|
Package.init({
|
||||||
|
name: "clapper",
|
||||||
|
version: "0.0.0",
|
||||||
|
prefix: "/usr/local",
|
||||||
|
libdir: "/usr/local/lib",
|
||||||
|
datadir: "/usr/local/share",
|
||||||
|
});
|
||||||
|
Package.run(imports.main);
|
11
gjs-1.0/clapper.js
Normal file
11
gjs-1.0/clapper.js
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
imports.gi.versions.Gdk = '3.0';
|
||||||
|
imports.gi.versions.Gtk = '3.0';
|
||||||
|
imports.searchPath.unshift('/usr/local/share/clapper');
|
||||||
|
|
||||||
|
const ClapperSrc = imports.clapper_src;
|
||||||
|
|
||||||
|
var { App } = ClapperSrc.app;
|
||||||
|
var { Interface } = ClapperSrc.interface;
|
||||||
|
var { Player } = ClapperSrc.player;
|
||||||
|
|
||||||
|
imports.searchPath.shift();
|
37
install.sh
Executable file
37
install.sh
Executable file
@@ -0,0 +1,37 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
LICENSES_DIR="/usr/local/share/licenses/clapper"
|
||||||
|
DOC_DIR="/usr/local/share/doc/clapper"
|
||||||
|
MAIN_DIR="/usr/local/share/clapper"
|
||||||
|
BIN_DIR="/usr/local/bin"
|
||||||
|
GJS_DIR="/usr/local/share/gjs-1.0"
|
||||||
|
|
||||||
|
SCRIPT_ERR="Error: this script must be"
|
||||||
|
|
||||||
|
if [ ! -d "./clapper_src" ]; then
|
||||||
|
echo "$SCRIPT_ERR run from clapper directory!" 1>&2
|
||||||
|
exit 1
|
||||||
|
elif [ "$EUID" -ne 0 ]; then
|
||||||
|
echo "$SCRIPT_ERR run as root!" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Creating directories..."
|
||||||
|
mkdir -p "$LICENSES_DIR"
|
||||||
|
mkdir -p "$DOC_DIR"
|
||||||
|
mkdir -p "$MAIN_DIR"
|
||||||
|
mkdir -p "$GJS_DIR"
|
||||||
|
mkdir -p "$BIN_DIR"
|
||||||
|
|
||||||
|
echo "Copying files..."
|
||||||
|
cp -f "./COPYING" "$LICENSES_DIR/"
|
||||||
|
cp -f "./README.md" "$DOC_DIR/"
|
||||||
|
cp -rf "./clapper_src" "$MAIN_DIR/"
|
||||||
|
cp -f "./main.js" "$MAIN_DIR/"
|
||||||
|
cp -f "./gjs-1.0/clapper.js" "$GJS_DIR/"
|
||||||
|
cp -f "./bin/clapper" "$BIN_DIR/"
|
||||||
|
|
||||||
|
echo "Creating executables..."
|
||||||
|
chmod +x "$BIN_DIR/clapper"
|
||||||
|
|
||||||
|
echo "Install finished"
|
Reference in New Issue
Block a user