From 49f72bf212382f321e501f750ceeda4ec77701c5 Mon Sep 17 00:00:00 2001
From: "F. Duncanh"
Date: Fri, 13 Jan 2023 11:26:47 -0500
Subject: [PATCH] Rearrange and update README with "repology" info.
---
README.html | 197 +++++++++++++++++++++++++++++-----------------------
README.md | 142 ++++++++++++++++++++++---------------
README.txt | 192 +++++++++++++++++++++++++++++---------------------
3 files changed, 311 insertions(+), 220 deletions(-)
diff --git a/README.html b/README.html
index be2a0eb..fca3630 100644
--- a/README.html
+++ b/README.html
@@ -7,16 +7,7 @@ id="now-developed-at-the-github-site-httpsgithub.comfdh2uxplay-where-all-user-is
developed at the GitHub site https://github.com/FDH2/UxPlay
(where all user issues should be posted).
-Linux
-distributions providing prebuilt uxplay packages include Debian
-“testing” (Bookworm), Ubuntu (since 22.04), and Ubuntu derivatives
-(install with “sudo apt install uxplay”). To easily build
-latest UxPlay from source, or for guidance on required GStreamer
-plugins, see Getting UxPlay below.
-Raspberry Pi users see here.
-Highlights:
+Highlights:
GPLv3, open source.
Originally supported only AirPlay Mirror protocol, now has added
@@ -36,23 +27,54 @@ options to select different hardware-appropriate output “videosinks” and
“audiosinks”, and a fully-user-configurable video streaming
pipeline).
Support for server behind a firewall.
-New: Support for Raspberry Pi, with hardware
-video acceleration using Video4Linux2 (v4l2), which supports both 32-
-and 64-bit systems: this is the replacement for 32-bit-only OpenMAX
-(omx), no longer actively supported by RPi distributions. (Until
-GStreamer 1.22 is released, a backport of changes from the GStreamer
-development branch is needed: this has now been done by Raspberry Pi OS
-(Bullseye); for other distributions a patch
-to the GStreamer Video4Linux2 plugin, available in the UxPlay Wiki, is
-required.) See Support for Raspberry Pi, with hardware video acceleration using
+the GStreamer Video4Linux2 (v4l2) plugin, which supports both 32- and
+64-bit systems, as the replacement for unmaintained 32-bit OpenMAX
+(omx). See success
-reports.
+reports, so far limited to distributions available through
+Raspberry-Pi Imager.
New: Support for running on Microsoft Windows
(builds with the MinGW-64 compiler in the unix-like MSYS2
environment).
+Packaging status
+(Linux and *BSD distributions)
+
.
+
+Install uxplay on Debian-based Linux systems with
+“sudo apt install uxplay”; on FreeBSD with
+“sudo pkg install uxplay”.
+On Linux and *BSD the mDNS/DNS-SD (Bonjour/ZeroConf) local
+network services needed by UxPlay are usually provided by Avahi:
+if there is a firewall on the server that will host UxPlay, make
+sure the default network port for mDNS queries (UDP 5353) is
+open. (Uxplay can work without this port by using only the
+host’s loopback interface, but its visibility to clients will be
+degraded.) See the Troubleshooting
+section below for more details.
+Even if you install your distribution’s pre-compiled uxplay
+binary package, you may need to read the instructions below for running UxPlay to see which of your
+distribution’s GStreamer plugin packages you should
+also install.
+For Raspbery Pi (tested on RPi 4 model B, reported to work on RPi
+3 model B+), only Raspberry Pi OS, plus the Debian and Manjaro ARM-RPi4
+Images made available through the Raspberry Pi Imager, are known to
+provide the (out-of-mainline-kernel) kernel-module
+bcm2835-codec.ko maintained by Rasperry Pi, and needed
+for hardware-accelerated video decoding by the Broadcom GPU on the Pi,
+accessed using the GStreamer Video4Linux (v4l2) plugin. In addition, for
+Ubuntu and Manjaro, the v4l2 plugin needs a patch
+forGStreamer < 1.22.
+To (easily) compile UxPlay from source, see the section building UxPlay.
+
+Detailed description of
+UxPlay
This project is a GPLv3 open source unix AirPlay2 Mirror server for
Linux, macOS, and *BSD. It was initially developed by antimof using code from
@@ -181,17 +203,6 @@ distributions treat OpenSSL as a “System Library”, but some
(e.g. Debian) do not: in this case, the issue is solved by linking with
OpenSSL-3.0.0 or later.
Getting UxPlay
-
-- Your distribution may already provide a pre-built uxplay package. It
-will be included in the next Debian release “Bookworm” (currently in
-“testing” phase) and Ubuntu-22.04 already provides a uxplay-1.46 package
-based on this. Arch-based distributions also have AUR self-building
-packages for both the latest UxPlay release and the current GitHub
-version. (If you install a uxplay package, you may also need to install
-some needed GStreamer plugin packages which might not get installed as
-“requirements” : see below.) To build the latest version yourself,
-follow the instructions below.
-
Either download and unzip UxPlay-master.zip,
or (if git is installed): “git clone https://github.com/FDH2/UxPlay”.
@@ -271,6 +282,27 @@ somewhere like /usr/local/share/doc/uxplay). The uxplay
executable can also be found in the build directory after the build
process, if you wish to test before installing (in which case the
GStreamer plugins must already be installed)
+Building on non-Debian
+Linux and *BSD
+
+Red Hat, or clones like CentOS (now continued as Rocky
+Linux or Alma Linux): (sudo dnf instal, or sudo yum install)
+openssl-devel libplist-devel avahi-compat-libdns_sd-devel (some from the
+“CodeReady” add-on repository, called “PowerTools” by clones)
+(+libX11-devel for fullscreen X11 and “ZOOMFIX” if needed).
+OpenSUSE: (sudo zypper install) libopenssl-devel
+libplist-devel avahi-compat-mDNSResponder-devel (+ libX11-devel for
+fullscreen X11, and ZOOMFIX if needed).
+Arch Linux (Also available as a package in
+AUR): (sudo pacman -Syu) openssl libplist avahi
+gst-plugins-base.
+FreeBSD: (sudo pkg install) libplist gstreamer1.
+Either avahi-libdns or mDNSResponder must also be installed to provide
+the dns_sd library. OpenSSL is already installed as a System
+Library.
+
+Running UxPlay
+Debian-based systems
Next install the GStreamer plugins that are needed with
sudo apt-get install gstreamer1.0-<plugin>. Values of
<plugin> required are:
@@ -328,6 +360,40 @@ accelerated hardware video decoding if you need it, or just uninstall
the GStreamer VAAPI plugin. If your system uses the Wayland compositor
for graphics, use “uxplay -vs waylandsink”. See Usage for more run-time options.
+Running uxplay
+Non-Debian-based Linux or *BSD
+
+Red Hat, or clones like CentOS (now continued as Rocky
+Linux or Alma Linux): (sudo dnf install, or sudo yum install)
+The required GStreamer packages are: gstreamer1-devel
+gstreamer1-plugins-base-devel gstreamer1-libav
+gstreamer1-plugins-bad-free (+ gstreamer1-vaapi for intel graphics); you
+may need to get some of them (in particular gstreamer1-libav) from rpmfusion.org (which provides packages
+including plugins that RedHat does not ship for license reasons).
+[In recent Fedora, the libav plugin package is
+renamed to “gstreamer1-plugin-libav”, which now needs the RPM Fusion
+package ffmpeg-libs for the patent-encumbered code which RedHat does not
+provide: check with “rpm -qi ffmpeg-libs” that it lists
+“Packager” as RPM Fusion; if this is not installed, uxplay will fail to
+start, with error: no element “avdec_aac”
+].
+OpenSUSE: (sudo zypper install) The required
+GStreamer packages are: gstreamer-devel gstreamer-plugins-base-devel
+gstreamer-plugins-libav gstreamer-plugins-bad (+ gstreamer-plugins-vaapi
+for Intel graphics); in some cases, you may need to use gstreamer
+packages for OpenSUSE from Packman
+“Essentials” (which provides packages including plugins that OpenSUSE
+does not ship for license reasons).
+Arch Linux (sudo pacman -Syu) gst-plugins-good
+gst-plugins-bad gst-libav (+ gstreamer-vaapi for Intel
+graphics).
+FreeBSD: (sudo pkg install) gstreamer1-libav,
+gstreamer1-plugins, gstreamer1-plugins-* (* = core, good, bad, x, gtk,
+gl, vulkan, pulse, v4l2, …), (+ gstreamer1-vaapi for Intel
+graphics).
+
Special
instructions for Raspberry Pi (only tested on model 4B):
@@ -389,49 +455,7 @@ using ssh:
nohup uxplay [options] > FILE &
Sound and video will play on the remote host; “nohup” will keep
uxplay running if the ssh session is closed. Terminal output is saved to
-FILE (which can be /dev/null to discard it).
-Non-Debian-based Linux or
-*BSD
-
-Red Hat, or clones like CentOS (now continued as Rocky
-Linux or Alma Linux): (sudo dnf install, or sudo yum install)
-openssl-devel libplist-devel avahi-compat-libdns_sd-devel (some from the
-“CodeReady” add-on repository, called “PowerTools” by clones)
-(+libX11-devel for fullscreen X11, and “ZOOMFIX” if needed). The
-required GStreamer packages are: gstreamer1-devel
-gstreamer1-plugins-base-devel gstreamer1-libav
-gstreamer1-plugins-bad-free (+ gstreamer1-vaapi for intel graphics); you
-may need to get some of them (in particular gstreamer1-libav) from rpmfusion.org (which provides packages
-including plugins that RedHat does not ship for license reasons).
-[In recent Fedora, the libav plugin package is
-renamed to “gstreamer1-plugin-libav”, which now needs the RPM Fusion
-package ffmpeg-libs for the patent-encumbered code which RedHat does not
-provide: check with “rpm -qi ffmpeg-libs” that it lists
-“Packager” as RPM Fusion; if this is not installed, uxplay will fail to
-start, with error: no element “avdec_aac”
-].
-OpenSUSE: (sudo zypper install) libopenssl-devel
-libplist-devel avahi-compat-mDNSResponder-devel (+ libX11-devel for
-fullscreen X11, and ZOOMFIX if needed). The required GStreamer packages
-are: gstreamer-devel gstreamer-plugins-base-devel
-gstreamer-plugins-libav gstreamer-plugins-bad (+ gstreamer-plugins-vaapi
-for Intel graphics); in some cases, you may need to use gstreamer
-packages for OpenSUSE from Packman
-“Essentials” (which provides packages including plugins that OpenSUSE
-does not ship for license reasons).
-Arch Linux (sudo pacman -Syu) openssl libplist
-avahi gst-plugins-base gst-plugins-good gst-plugins-bad gst-libav (+
-gstreamer-vaapi for Intel graphics). (Also available as a
-package in AUR).
-FreeBSD: (sudo pkg install) libplist gstreamer1,
-gstreamer1-libav, gstreamer1-plugins, gstreamer1-plugins-* (* = core,
-good, bad, x, gtk, gl, vulkan, pulse, v4l2, …), (+ gstreamer1-vaapi for
-Intel graphics). Either avahi-libdns or mDNSResponder must also be
-installed to provide the dns_sd library. OpenSSL is already installed as
-a System Library.
-
+FILE (which can be /dev/null to discard it)
Building
UxPlay on macOS: (Intel X86_64 and “Apple Silicon” M1/M2
@@ -466,8 +490,8 @@ it, but compiled to use X11).
For the “official” release: install both the macOS
runtime and development installer packages. Assuming that the latest
release is 1.20.4. install
-gstreamer-1.0-1.20.4-universal.pkg and
-gstreamer-1.0-devel-1.20.4-universal.pkg. (If you have an
+gstreamer-1.0-1.20.5-universal.pkg and
+gstreamer-1.0-devel-1.20.5-universal.pkg. (If you have an
Intel-architecture Mac, and have problems with the “universal” packages,
you can also use gstreamer-1.0-1.18.6-x86_64.pkg and
gstreamer-1.0-devel-1.18.6-x86_64.pkg.) Click on them to
@@ -490,11 +514,10 @@ available seem to be glimagesink (default choice made by autovideosink)
and osxvideosink. The window title does not show the Airplay server
name, but the window is visible to screen-sharing apps (e.g., Zoom). The
only available audiosink seems to be osxaudiosink.
-The option -t timeout is currently suppressed, and the
-option -nc is always used, whether or not it is selected. This is a
-workaround for a problem with GStreamer videosinks on macOS: if the
-GStreamer pipeline is destroyed while the mirror window is still open, a
-segfault occurs.
+The option -nc is always used, whether or not it is selected.
+This is a workaround for a problem with GStreamer videosinks on macOS:
+if the GStreamer pipeline is destroyed while the mirror window is still
+open, a segfault occurs.
In the case of glimagesink, the resolution settings “-s wxh” do
not affect the (small) initial OpenGL mirror window size, but the window
can be expanded using the mouse or trackpad. In contrast, a window
@@ -1202,9 +1225,11 @@ time. Here is an attempt at listing the various authors and the
components they created:
UxPlay was initially created by antimof from
RPiPlay, by replacing its Raspberry-Pi-adapted OpenMAX video and audio
-rendering system with GStreamer rendering for desktop Linux systems
-(antimof’s work on code in renderers/ was later backported
-to RPiPlay).
+rendering system with GStreamer rendering for desktop Linux systems;
+antimof’s work on code in renderers/ was later backported
+to RPiPlay, and the antimof project became dormant, but was later
+revived at the current GitHub site to serve a wider community of
+users.
The previous authors of code included in UxPlay by inheritance from
RPiPlay include:
diff --git a/README.md b/README.md
index de0c6cd..64ff495 100644
--- a/README.md
+++ b/README.md
@@ -2,9 +2,7 @@
### Now developed at the GitHub site [https://github.com/FDH2/UxPlay](https://github.com/FDH2/UxPlay) (where all user issues should be posted).
-### Linux distributions providing prebuilt uxplay packages include Debian "testing" (Bookworm), Ubuntu (since 22.04), and Ubuntu derivatives (install with "`sudo apt install uxplay`"). To easily build latest UxPlay from source, or for guidance on required GStreamer plugins, see [Getting UxPlay](#getting-uxplay) below. Raspberry Pi users see [here](https://github.com/FDH2/UxPlay/wiki/Gstreamer-Video4Linux2-plugin-patches).
-
-Highlights:
+## Highlights:
* GPLv3, open source.
* Originally supported only AirPlay Mirror protocol, now has added support
@@ -21,19 +19,35 @@ Highlights:
to select different hardware-appropriate output "videosinks" and
"audiosinks", and a fully-user-configurable video streaming pipeline).
* Support for server behind a firewall.
- * **New**: Support for Raspberry Pi, with hardware video acceleration using
- Video4Linux2 (v4l2), which supports both 32- and 64-bit systems: this is the replacement for
- 32-bit-only OpenMAX (omx), no longer actively supported by RPi distributions. (Until GStreamer 1.22
- is released, a backport of changes from the GStreamer development branch is needed: this has now been done
- by Raspberry Pi OS (Bullseye); for other distributions
- a [patch](https://github.com/FDH2/UxPlay/wiki/Gstreamer-Video4Linux2-plugin-patches)
- to the GStreamer Video4Linux2 plugin, available in the
- [UxPlay Wiki](https://github.com/FDH2/UxPlay/wiki), is required.)
- See [success reports](https://github.com/FDH2/UxPlay/wiki/UxPlay-on-Raspberry-Pi:-success-reports:).
+ * Support for Raspberry Pi, with hardware video acceleration using the GStreamer
+ Video4Linux2 (v4l2) plugin, which supports both 32- and 64-bit systems, as the replacement for unmaintained 32-bit OpenMAX (omx).
+ See [success reports](https://github.com/FDH2/UxPlay/wiki/UxPlay-on-Raspberry-Pi:-success-reports:), so far limited to
+ distributions available through Raspberry-Pi Imager.
* **New**: Support for running on Microsoft Windows (builds with the MinGW-64 compiler in the
unix-like MSYS2 environment).
+## Packaging status (Linux and \*BSD distributions)
+
+[](https://repology.org/project/uxplay/versions).
+
+* Install uxplay on Debian-based Linux systems with "`sudo apt install uxplay`"; on FreeBSD with "``sudo pkg install uxplay``".
+
+* On Linux and \*BSD the mDNS/DNS-SD (Bonjour/ZeroConf) local network services needed by UxPlay are usually provided by Avahi: **if
+there is a firewall on the server that will host UxPlay, make sure the default network port for mDNS queries (UDP 5353) is open**. (Uxplay can work without this port by using
+only the host's loopback interface, but its visibility to clients will be degraded.) See the [Troubleshooting](#troubleshooting) section below for more details.
+
+* Even if you install your distribution's pre-compiled uxplay binary package, you may need to read the instructions below
+for [running UxPlay](#running-uxplay) to see which of your distribution's **GStreamer plugin packages** you should also install.
+
+* For Raspbery Pi (tested on RPi 4 model B, reported to work on RPi 3 model B+), only Raspberry Pi OS, plus the Debian and Manjaro ARM-RPi4 Images made available through the Raspberry Pi Imager, are known to provide the (out-of-mainline-kernel)
+kernel-module **bcm2835-codec.ko** maintained by Rasperry Pi, and needed for hardware-accelerated video decoding by the Broadcom GPU on the Pi, accessed using the GStreamer Video4Linux (v4l2) plugin. In addition,
+for Ubuntu and Manjaro, the v4l2 plugin needs a [patch](https://github.com/FDH2/UxPlay/wiki/Gstreamer-Video4Linux2-plugin-patches) forGStreamer < 1.22.
+
+* To (easily) compile UxPlay from source, see the section [building UxPlay](#building-uxplay).
+
+# Detailed description of UxPlay
+
This project is a GPLv3 open source unix AirPlay2 Mirror server for Linux, macOS, and \*BSD.
It was initially developed by
[antimof](http://github.com/antimof/Uxplay) using code
@@ -149,13 +163,6 @@ with OpenSSL-3.0.0 or later.
# Getting UxPlay
-* Your distribution may already provide a pre-built uxplay package. It will be included in the
-next Debian release "Bookworm" (currently in "testing" phase) and Ubuntu-22.04 already provides a uxplay-1.46
-package based on this. Arch-based distributions also have AUR self-building packages for both the latest UxPlay
-release and the current GitHub version. (If you install a uxplay package, you may also need to install
-some needed GStreamer plugin packages which might not get installed as "requirements" : see below.) To build
-the latest version yourself, follow the instructions below.
-
Either download and unzip [UxPlay-master.zip](https://github.com/FDH2/UxPlay/archive/refs/heads/master.zip),
or (if git is installed): "git clone https://github.com/FDH2/UxPlay". You
can also download a recent or earlier version listed
@@ -223,6 +230,29 @@ The uxplay executable can also be found in the build directory after the build
process, if you wish to test before installing (in which case
the GStreamer plugins must already be installed)
+### Building on non-Debian Linux and \*BSD
+
+* **Red Hat, or clones like CentOS (now continued as Rocky Linux or Alma Linux):**
+(sudo dnf instal, or sudo yum install) openssl-devel libplist-devel avahi-compat-libdns_sd-devel (some
+from the "CodeReady" add-on repository, called "PowerTools" by clones)
+(+libX11-devel for fullscreen X11 and "ZOOMFIX" if needed).
+
+ * **OpenSUSE:**
+(sudo zypper install) libopenssl-devel libplist-devel
+avahi-compat-mDNSResponder-devel (+ libX11-devel for fullscreen X11, and ZOOMFIX if needed).
+
+* **Arch Linux** (_Also available as a package in AUR_):
+(sudo pacman -Syu) openssl libplist avahi gst-plugins-base.
+
+* **FreeBSD:** (sudo pkg install) libplist gstreamer1.
+Either avahi-libdns or mDNSResponder must also be installed to provide the dns_sd library.
+OpenSSL is already installed as a System Library.
+
+
+## Running UxPlay
+
+### Debian-based systems
+
Next install the GStreamer plugins that are needed with `sudo apt-get install gstreamer1.0-`.
Values of `` required are:
@@ -273,6 +303,38 @@ then try to fix accelerated hardware video decoding if you need it, or just unin
your system uses the Wayland compositor for graphics, use "`uxplay -vs waylandsink`".**
See [Usage](#usage) for more run-time options.
+
+### Running uxplay Non-Debian-based Linux or \*BSD
+
+* **Red Hat, or clones like CentOS (now continued as Rocky Linux or Alma Linux):**
+(sudo dnf install, or sudo yum install) The required GStreamer packages are:
+gstreamer1-devel gstreamer1-plugins-base-devel gstreamer1-libav gstreamer1-plugins-bad-free (+ gstreamer1-vaapi
+for intel graphics);
+you may need to get some of them (in particular gstreamer1-libav) from [rpmfusion.org](https://rpmfusion.org)
+(which provides packages including plugins that RedHat does not ship for license reasons).
+_[In recent **Fedora**, the libav plugin package is renamed to "gstreamer1-plugin-libav",
+which now needs the RPM Fusion package ffmpeg-libs for the
+patent-encumbered code which RedHat does not provide: check with "`rpm -qi ffmpeg-libs`" that it lists
+"Packager" as RPM Fusion; if this is not installed, uxplay will fail to start, with
+error: **no element "avdec_aac"** ]_.
+
+ * **OpenSUSE:**
+(sudo zypper install)
+The required GStreamer packages are: gstreamer-devel
+gstreamer-plugins-base-devel gstreamer-plugins-libav gstreamer-plugins-bad (+ gstreamer-plugins-vaapi
+for Intel graphics); in some cases, you may need to use gstreamer packages for OpenSUSE
+from [Packman](https://ftp.gwdg.de/pub/linux/misc/packman/suse/) "Essentials"
+(which provides packages including plugins that OpenSUSE does not ship for license reasons).
+
+* **Arch Linux**
+(sudo pacman -Syu) gst-plugins-good gst-plugins-bad gst-libav (+ gstreamer-vaapi
+for Intel graphics).
+
+ * **FreeBSD:** (sudo pkg install) gstreamer1-libav, gstreamer1-plugins, gstreamer1-plugins-*
+(\* = core, good, bad, x, gtk, gl, vulkan, pulse, v4l2, ...), (+ gstreamer1-vaapi for Intel graphics).
+
+
+
### **Special instructions for Raspberry Pi (only tested on model 4B)**:
* For good performance, the Raspberry Pi needs the GStreamer Video4linux2 plugin to use its Broadcom GPU hardware
@@ -317,41 +379,8 @@ cause a crash if the client screen is rotated**. (This does not occur when the
nohup uxplay [options] > FILE &
```
Sound and video will play on the remote host; "nohup" will keep uxplay running if the ssh session is
- closed. Terminal output is saved to FILE (which can be /dev/null to discard it).
+ closed. Terminal output is saved to FILE (which can be /dev/null to discard it)
-### Non-Debian-based Linux or \*BSD
-
-* **Red Hat, or clones like CentOS (now continued as Rocky Linux or Alma Linux):**
-(sudo dnf install, or sudo yum install) openssl-devel libplist-devel avahi-compat-libdns_sd-devel (some
-from the "CodeReady" add-on repository, called "PowerTools" by clones)
-(+libX11-devel for fullscreen X11, and "ZOOMFIX" if needed). The required GStreamer packages are:
-gstreamer1-devel gstreamer1-plugins-base-devel gstreamer1-libav gstreamer1-plugins-bad-free (+ gstreamer1-vaapi
-for intel graphics);
-you may need to get some of them (in particular gstreamer1-libav) from [rpmfusion.org](https://rpmfusion.org)
-(which provides packages including plugins that RedHat does not ship for license reasons).
-_[In recent **Fedora**, the libav plugin package is renamed to "gstreamer1-plugin-libav",
-which now needs the RPM Fusion package ffmpeg-libs for the
-patent-encumbered code which RedHat does not provide: check with "`rpm -qi ffmpeg-libs`" that it lists
-"Packager" as RPM Fusion; if this is not installed, uxplay will fail to start, with
-error: **no element "avdec_aac"** ]_.
-
- * **OpenSUSE:**
-(sudo zypper install) libopenssl-devel libplist-devel
-avahi-compat-mDNSResponder-devel (+ libX11-devel for fullscreen X11, and ZOOMFIX if needed). The required GStreamer packages are: gstreamer-devel
-gstreamer-plugins-base-devel gstreamer-plugins-libav gstreamer-plugins-bad (+ gstreamer-plugins-vaapi
-for Intel graphics); in some cases, you may need to use gstreamer packages for OpenSUSE
-from [Packman](https://ftp.gwdg.de/pub/linux/misc/packman/suse/) "Essentials"
-(which provides packages including plugins that OpenSUSE does not ship for license reasons).
-
-
-* **Arch Linux**
-(sudo pacman -Syu) openssl libplist avahi gst-plugins-base gst-plugins-good gst-plugins-bad gst-libav (+ gstreamer-vaapi
-for Intel graphics). (**Also available as a package in AUR**).
-
- * **FreeBSD:** (sudo pkg install) libplist gstreamer1, gstreamer1-libav, gstreamer1-plugins, gstreamer1-plugins-*
-(\* = core, good, bad, x, gtk, gl, vulkan, pulse, v4l2, ...), (+ gstreamer1-vaapi for Intel graphics).
-Either avahi-libdns or mDNSResponder must also be installed to provide the dns_sd library.
-OpenSSL is already installed as a System Library.
## Building UxPlay on macOS: **(Intel X86_64 and "Apple Silicon" M1/M2 Macs)**
@@ -379,7 +408,7 @@ from [https://gstreamer.freedesktop.org/download/](https://gstreamer.freedesktop
(MacPorts also supplies it, but compiled to use X11).
**For the "official" release**: install both the macOS runtime and development installer packages. Assuming that the latest release is 1.20.4.
-install `gstreamer-1.0-1.20.4-universal.pkg` and ``gstreamer-1.0-devel-1.20.4-universal.pkg``. (If
+install `gstreamer-1.0-1.20.5-universal.pkg` and ``gstreamer-1.0-devel-1.20.5-universal.pkg``. (If
you have an Intel-architecture Mac, and have problems with the "universal" packages, you can also
use `gstreamer-1.0-1.18.6-x86_64.pkg` and ``gstreamer-1.0-devel-1.18.6-x86_64.pkg``.) Click on them to
install (they install to /Library/FrameWorks/GStreamer.framework).
@@ -401,7 +430,7 @@ Finally, build and install uxplay: open a terminal and change into the UxPlay so
autovideosink) and osxvideosink. The window title does not show the Airplay server name, but the window is visible to
screen-sharing apps (e.g., Zoom). The only available audiosink seems to be osxaudiosink.
- * The option -t _timeout_ is currently suppressed, and the option -nc is always used, whether or not it is selected.
+ * The option -nc is always used, whether or not it is selected.
This is a workaround for a problem with GStreamer videosinks on macOS:
if the GStreamer pipeline is destroyed while the mirror window is still open, a segfault occurs.
@@ -1030,7 +1059,8 @@ is an attempt at listing the various authors and the components they created:
UxPlay was initially created by **antimof** from RPiPlay, by replacing its Raspberry-Pi-adapted OpenMAX video
and audio rendering system with GStreamer rendering for
-desktop Linux systems (antimof's work on code in `renderers/` was later backported to RPiPlay).
+desktop Linux systems; antimof's work on code in `renderers/` was later backported to RPiPlay, and the antimof project became dormant, but was later revived
+at the current GitHub site to serve a wider community of users.
The previous authors of code included in UxPlay by inheritance from RPiPlay include:
diff --git a/README.txt b/README.txt
index b33aab6..4eaa163 100644
--- a/README.txt
+++ b/README.txt
@@ -2,9 +2,7 @@
### Now developed at the GitHub site (where all user issues should be posted).
-### Linux distributions providing prebuilt uxplay packages include Debian "testing" (Bookworm), Ubuntu (since 22.04), and Ubuntu derivatives (install with "`sudo apt install uxplay`"). To easily build latest UxPlay from source, or for guidance on required GStreamer plugins, see [Getting UxPlay](#getting-uxplay) below. Raspberry Pi users see [here](https://github.com/FDH2/UxPlay/wiki/Gstreamer-Video4Linux2-plugin-patches).
-
-Highlights:
+## Highlights:
- GPLv3, open source.
@@ -29,22 +27,55 @@ Highlights:
- Support for server behind a firewall.
-- **New**: Support for Raspberry Pi, with hardware video acceleration
- using Video4Linux2 (v4l2), which supports both 32- and 64-bit
- systems: this is the replacement for 32-bit-only OpenMAX (omx), no
- longer actively supported by RPi distributions. (Until GStreamer
- 1.22 is released, a backport of changes from the GStreamer
- development branch is needed: this has now been done by Raspberry Pi
- OS (Bullseye); for other distributions a
- [patch](https://github.com/FDH2/UxPlay/wiki/Gstreamer-Video4Linux2-plugin-patches)
- to the GStreamer Video4Linux2 plugin, available in the [UxPlay
- Wiki](https://github.com/FDH2/UxPlay/wiki), is required.) See
- [success
- reports](https://github.com/FDH2/UxPlay/wiki/UxPlay-on-Raspberry-Pi:-success-reports:).
+- Support for Raspberry Pi, with hardware video acceleration using the
+ GStreamer Video4Linux2 (v4l2) plugin, which supports both 32- and
+ 64-bit systems, as the replacement for unmaintained 32-bit OpenMAX
+ (omx). See [success
+ reports](https://github.com/FDH2/UxPlay/wiki/UxPlay-on-Raspberry-Pi:-success-reports:),
+ so far limited to distributions available through Raspberry-Pi
+ Imager.
- **New**: Support for running on Microsoft Windows (builds with the
MinGW-64 compiler in the unix-like MSYS2 environment).
+## Packaging status (Linux and \*BSD distributions)
+
+[](https://repology.org/project/uxplay/versions).
+
+- Install uxplay on Debian-based Linux systems with
+ "`sudo apt install uxplay`"; on FreeBSD with
+ "`sudo pkg install uxplay`".
+
+- On Linux and \*BSD the mDNS/DNS-SD (Bonjour/ZeroConf) local network
+ services needed by UxPlay are usually provided by Avahi: **if there
+ is a firewall on the server that will host UxPlay, make sure the
+ default network port for mDNS queries (UDP 5353) is open**. (Uxplay
+ can work without this port by using only the host's loopback
+ interface, but its visibility to clients will be degraded.) See the
+ [Troubleshooting](#troubleshooting) section below for more details.
+
+- Even if you install your distribution's pre-compiled uxplay binary
+ package, you may need to read the instructions below for [running
+ UxPlay](#running-uxplay) to see which of your distribution's
+ **GStreamer plugin packages** you should also install.
+
+- For Raspbery Pi (tested on RPi 4 model B, reported to work on RPi 3
+ model B+), only Raspberry Pi OS, plus the Debian and Manjaro
+ ARM-RPi4 Images made available through the Raspberry Pi Imager, are
+ known to provide the (out-of-mainline-kernel) kernel-module
+ **bcm2835-codec.ko** maintained by Rasperry Pi, and needed for
+ hardware-accelerated video decoding by the Broadcom GPU on the Pi,
+ accessed using the GStreamer Video4Linux (v4l2) plugin. In addition,
+ for Ubuntu and Manjaro, the v4l2 plugin needs a
+ [patch](https://github.com/FDH2/UxPlay/wiki/Gstreamer-Video4Linux2-plugin-patches)
+ forGStreamer \< 1.22.
+
+- To (easily) compile UxPlay from source, see the section [building
+ UxPlay](#building-uxplay).
+
+# Detailed description of UxPlay
+
This project is a GPLv3 open source unix AirPlay2 Mirror server for
Linux, macOS, and \*BSD. It was initially developed by
[antimof](http://github.com/antimof/Uxplay) using code from
@@ -175,16 +206,6 @@ case, the issue is solved by linking with OpenSSL-3.0.0 or later.
# Getting UxPlay
-- Your distribution may already provide a pre-built uxplay package. It
- will be included in the next Debian release "Bookworm" (currently in
- "testing" phase) and Ubuntu-22.04 already provides a uxplay-1.46
- package based on this. Arch-based distributions also have AUR
- self-building packages for both the latest UxPlay release and the
- current GitHub version. (If you install a uxplay package, you may
- also need to install some needed GStreamer plugin packages which
- might not get installed as "requirements" : see below.) To build the
- latest version yourself, follow the instructions below.
-
Either download and unzip
[UxPlay-master.zip](https://github.com/FDH2/UxPlay/archive/refs/heads/master.zip),
or (if git is installed): "git clone https://github.com/FDH2/UxPlay".
@@ -265,6 +286,29 @@ in the build directory after the build process, if you wish to test
before installing (in which case the GStreamer plugins must already be
installed)
+### Building on non-Debian Linux and \*BSD
+
+- **Red Hat, or clones like CentOS (now continued as Rocky Linux or
+ Alma Linux):** (sudo dnf instal, or sudo yum install) openssl-devel
+ libplist-devel avahi-compat-libdns_sd-devel (some from the
+ "CodeReady" add-on repository, called "PowerTools" by clones)
+ (+libX11-devel for fullscreen X11 and "ZOOMFIX" if needed).
+
+- **OpenSUSE:** (sudo zypper install) libopenssl-devel libplist-devel
+ avahi-compat-mDNSResponder-devel (+ libX11-devel for fullscreen X11,
+ and ZOOMFIX if needed).
+
+- **Arch Linux** (*Also available as a package in AUR*): (sudo pacman
+ -Syu) openssl libplist avahi gst-plugins-base.
+
+- **FreeBSD:** (sudo pkg install) libplist gstreamer1. Either
+ avahi-libdns or mDNSResponder must also be installed to provide the
+ dns_sd library. OpenSSL is already installed as a System Library.
+
+## Running UxPlay
+
+### Debian-based systems
+
Next install the GStreamer plugins that are needed with
`sudo apt-get install gstreamer1.0-`. Values of ``
required are:
@@ -321,6 +365,40 @@ plugin. If your system uses the Wayland compositor for graphics, use
"`uxplay -vs waylandsink`".** See [Usage](#usage) for more run-time
options.
+### Running uxplay Non-Debian-based Linux or \*BSD
+
+- **Red Hat, or clones like CentOS (now continued as Rocky Linux or
+ Alma Linux):** (sudo dnf install, or sudo yum install) The required
+ GStreamer packages are: gstreamer1-devel
+ gstreamer1-plugins-base-devel gstreamer1-libav
+ gstreamer1-plugins-bad-free (+ gstreamer1-vaapi for intel graphics);
+ you may need to get some of them (in particular gstreamer1-libav)
+ from [rpmfusion.org](https://rpmfusion.org) (which provides packages
+ including plugins that RedHat does not ship for license reasons).
+ *\[In recent **Fedora**, the libav plugin package is renamed to
+ "gstreamer1-plugin-libav", which now needs the RPM Fusion package
+ ffmpeg-libs for the patent-encumbered code which RedHat does not
+ provide: check with "`rpm -qi ffmpeg-libs`" that it lists "Packager"
+ as RPM Fusion; if this is not installed, uxplay will fail to start,
+ with error: **no element "avdec_aac"** \]*.
+
+- **OpenSUSE:** (sudo zypper install) The required GStreamer packages
+ are: gstreamer-devel gstreamer-plugins-base-devel
+ gstreamer-plugins-libav gstreamer-plugins-bad (+
+ gstreamer-plugins-vaapi for Intel graphics); in some cases, you may
+ need to use gstreamer packages for OpenSUSE from
+ [Packman](https://ftp.gwdg.de/pub/linux/misc/packman/suse/)
+ "Essentials" (which provides packages including plugins that
+ OpenSUSE does not ship for license reasons).
+
+- **Arch Linux** (sudo pacman -Syu) gst-plugins-good gst-plugins-bad
+ gst-libav (+ gstreamer-vaapi for Intel graphics).
+
+- **FreeBSD:** (sudo pkg install) gstreamer1-libav,
+ gstreamer1-plugins, gstreamer1-plugins-\* (\* = core, good, bad, x,
+ gtk, gl, vulkan, pulse, v4l2, ...), (+ gstreamer1-vaapi for Intel
+ graphics).
+
### **Special instructions for Raspberry Pi (only tested on model 4B)**:
- For good performance, the Raspberry Pi needs the GStreamer
@@ -382,50 +460,7 @@ results.
Sound and video will play on the remote host; "nohup" will keep uxplay
running if the ssh session is closed. Terminal output is saved to FILE
-(which can be /dev/null to discard it).
-
-### Non-Debian-based Linux or \*BSD
-
-- **Red Hat, or clones like CentOS (now continued as Rocky Linux or
- Alma Linux):** (sudo dnf install, or sudo yum install) openssl-devel
- libplist-devel avahi-compat-libdns_sd-devel (some from the
- "CodeReady" add-on repository, called "PowerTools" by clones)
- (+libX11-devel for fullscreen X11, and "ZOOMFIX" if needed). The
- required GStreamer packages are: gstreamer1-devel
- gstreamer1-plugins-base-devel gstreamer1-libav
- gstreamer1-plugins-bad-free (+ gstreamer1-vaapi for intel graphics);
- you may need to get some of them (in particular gstreamer1-libav)
- from [rpmfusion.org](https://rpmfusion.org) (which provides packages
- including plugins that RedHat does not ship for license reasons).
- *\[In recent **Fedora**, the libav plugin package is renamed to
- "gstreamer1-plugin-libav", which now needs the RPM Fusion package
- ffmpeg-libs for the patent-encumbered code which RedHat does not
- provide: check with "`rpm -qi ffmpeg-libs`" that it lists "Packager"
- as RPM Fusion; if this is not installed, uxplay will fail to start,
- with error: **no element "avdec_aac"** \]*.
-
-- **OpenSUSE:** (sudo zypper install) libopenssl-devel libplist-devel
- avahi-compat-mDNSResponder-devel (+ libX11-devel for fullscreen X11,
- and ZOOMFIX if needed). The required GStreamer packages are:
- gstreamer-devel gstreamer-plugins-base-devel gstreamer-plugins-libav
- gstreamer-plugins-bad (+ gstreamer-plugins-vaapi for Intel
- graphics); in some cases, you may need to use gstreamer packages for
- OpenSUSE from
- [Packman](https://ftp.gwdg.de/pub/linux/misc/packman/suse/)
- "Essentials" (which provides packages including plugins that
- OpenSUSE does not ship for license reasons).
-
-- **Arch Linux** (sudo pacman -Syu) openssl libplist avahi
- gst-plugins-base gst-plugins-good gst-plugins-bad gst-libav (+
- gstreamer-vaapi for Intel graphics). (**Also available as a package
- in AUR**).
-
-- **FreeBSD:** (sudo pkg install) libplist gstreamer1,
- gstreamer1-libav, gstreamer1-plugins, gstreamer1-plugins-\* (\* =
- core, good, bad, x, gtk, gl, vulkan, pulse, v4l2, ...), (+
- gstreamer1-vaapi for Intel graphics). Either avahi-libdns or
- mDNSResponder must also be installed to provide the dns_sd library.
- OpenSSL is already installed as a System Library.
+(which can be /dev/null to discard it)
## Building UxPlay on macOS: **(Intel X86_64 and "Apple Silicon" M1/M2 Macs)**
@@ -459,8 +494,8 @@ Next get the latest macOS release of GStreamer-1.0.
**For the "official" release**: install both the macOS runtime and
development installer packages. Assuming that the latest release is
-1.20.4. install `gstreamer-1.0-1.20.4-universal.pkg` and
-`gstreamer-1.0-devel-1.20.4-universal.pkg`. (If you have an
+1.20.4. install `gstreamer-1.0-1.20.5-universal.pkg` and
+`gstreamer-1.0-devel-1.20.5-universal.pkg`. (If you have an
Intel-architecture Mac, and have problems with the "universal" packages,
you can also use `gstreamer-1.0-1.18.6-x86_64.pkg` and
`gstreamer-1.0-devel-1.18.6-x86_64.pkg`.) Click on them to install (they
@@ -486,11 +521,10 @@ make install" (same as for Linux).
apps (e.g., Zoom). The only available audiosink seems to be
osxaudiosink.
-- The option -t *timeout* is currently suppressed, and the option -nc
- is always used, whether or not it is selected. This is a workaround
- for a problem with GStreamer videosinks on macOS: if the GStreamer
- pipeline is destroyed while the mirror window is still open, a
- segfault occurs.
+- The option -nc is always used, whether or not it is selected. This
+ is a workaround for a problem with GStreamer videosinks on macOS: if
+ the GStreamer pipeline is destroyed while the mirror window is still
+ open, a segfault occurs.
- In the case of glimagesink, the resolution settings "-s wxh" do not
affect the (small) initial OpenGL mirror window size, but the window
@@ -1262,8 +1296,10 @@ they created:
UxPlay was initially created by **antimof** from RPiPlay, by replacing
its Raspberry-Pi-adapted OpenMAX video and audio rendering system with
-GStreamer rendering for desktop Linux systems (antimof's work on code in
-`renderers/` was later backported to RPiPlay).
+GStreamer rendering for desktop Linux systems; antimof's work on code in
+`renderers/` was later backported to RPiPlay, and the antimof project
+became dormant, but was later revived at the current GitHub site to
+serve a wider community of users.
The previous authors of code included in UxPlay by inheritance from
RPiPlay include: