edit README

This commit is contained in:
fduncanh
2022-05-27 17:45:25 -04:00
parent 0ab8306206
commit dba755805a
3 changed files with 86 additions and 62 deletions

View File

@@ -3,25 +3,25 @@
<p>Highlights:</p>
<ul>
<li>GPLv3, open source.</li>
<li>Support for both AirPlay Mirror and AirPlay Audio-only (Apple Lossless ALAC) protocols from current iOS/iPadOS 15.4 client devices.</li>
<li>macOS computers (2011 or later) can act either as AirPlay clients, or as the server running UxPlay (tested on macOS 10.15 Catalina and 12.3 Monterey). Using AirPlay, UxPlay can emulate a second display for macOS clients. Both Intel and “Apple Silicon” M1 Macs are now fully supported in both roles.</li>
<li>Support for older 32-bit iOS clients (such as iPad 2nd gen, iPhone 4S, when upgraded to iOS 9.3.5 or later), and a Windows AirPlay-client emulator, AirMyPC.</li>
<li>Uses GStreamer, with options to select different output “videosinks” and “audiosinks”.</li>
<li>Support for both AirPlay Mirror and AirPlay Audio-only (Apple Lossless ALAC) streaming protocols from current iOS/iPadOS 15.4 clients.</li>
<li>macOS computers (2011 or later, both Intel and “Apple Silicon” M1 systems) can act either as AirPlay clients, or as the server running UxPlay. Using AirPlay, UxPlay can emulate a second display for macOS clients.</li>
<li>Support for older iOS clients (such as 32-bit iPad 2nd gen. and iPhone 4S, when upgraded to iOS 9.3.5 or later), and a Windows AirPlay-client emulator, AirMyPC.</li>
<li>Uses GStreamer, with options to select different output “videosinks” and “audiosinks”, and fully-configurable streaming pipelines.</li>
<li>Support for server behind a firewall.</li>
<li><strong>New</strong>: Support for Raspberry Pi, with hardware video acceleration by Video4Linux2 (replacement for 32-bit-only OpenMAX, which is no longer supplied in Raspberry Pi OS). (For GStreamer &lt; 1.22, a <a href="https://github.com/FDH2/UxPlay/wiki/Gstreamer-Video4Linux2-plugin-patches">patch</a> to the GStreamer Video4Linux2 plugin (available in the <a href="https://github.com/FDH2/UxPlay/wiki">UxPlay Wiki</a>) is required, unless your distribution has made a backport of changes from the development version.) See <a href="https://github.com/FDH2/UxPlay/wiki/UxPlay-on-Raspberry-Pi:-success-reports:">success reports</a>.</li>
<li><strong>New</strong>: Support for Raspberry Pi, with hardware video acceleration by Video4Linux2 (replacement for 32-bit-only OpenMAX, which is no longer supported by Raspberry Pi OS). (For GStreamer &lt; 1.22, a <a href="https://github.com/FDH2/UxPlay/wiki/Gstreamer-Video4Linux2-plugin-patches">patch</a> to the GStreamer Video4Linux2 plugin, available in the <a href="https://github.com/FDH2/UxPlay/wiki">UxPlay Wiki</a>, is required, unless your distribution has made a backport of changes from the development version.) See <a href="https://github.com/FDH2/UxPlay/wiki/UxPlay-on-Raspberry-Pi:-success-reports:">success reports</a>.</li>
</ul>
<p>This project is a GPLv3 open source unix AirPlay2 Mirror server for Linux, macOS, and *BSD. It was initially developed by <a href="http://github.com/antimof/Uxplay">antimof</a> using code from <a href="https://github.com/FD-/RPiPlay">RPiPlay</a>, which in turn derives from <a href="https://github.com/KqsMea8/AirplayServer">AirplayServer</a>, <a href="https://github.com/juhovh/shairplay">shairplay</a>, and <a href="https://github.com/EstebanKubata/playfair">playfair</a>. (The antimof site is no longer involved in development, but periodically posts updates pulled from the new main <a href="https://github.com/FDH2/UxPlay">UxPlay site</a>).</p>
<p>UxPlay is tested on a number of systems, including (among others) Debian 10.11 “Buster” and 11.2 “Bullseye”, Ubuntu 20.04 and 22.04, Linux Mint 20.3, Pop!_OS 21.10 (NVIDIA edition), Rocky Linux 8.5 (a CentOS successor), OpenSUSE 15.3, Arch Linux 5.16.8, macOS 12.3 (Intel and M1), FreeBSD 13.0.</p>
<p>Its main use is to act like an AppleTV for screen-mirroring (with audio) of iOS/iPadOS/macOS clients (iPhones, iPads, MacBooks) in a window on the server display (with the possibility of sharing that window on screen-sharing applications such as Zoom) on a host running Linux, macOS, or other unix. UxPlay supports a “legacy” form of Apples AirPlay Mirror protocol introduced in iOS 12; client devices running iOS/iPadOS 9.3.5 or later are supported, as is a (non-free) Windows-based AirPlay-client software emulator, AirMyPC. (Details of what is publically known about Apples AirPlay2 protocol can be found <a href="https://github.com/SteeBono/airplayreceiver/wiki/AirPlay2-Protocol">here</a> and <a href="https://emanuelecozzi.net/docs/airplay2">here</a>).</p>
<p>The UxPlay server and its client must be on the same local area network, on which a <strong>Bonjour/Zeroconf mDNS/DNS-SD server</strong> is also running (only DNS-SD “Service Discovery” service is strictly necessary, it is not necessary that the local network also be of the “.local” mDNS-based type). On Linux and BSD Unix servers, this is usually provided by <a href="https://www.avahi.org">Avahi</a>, through the avahi-daemon service, and is included in most Linux distributions (this service can also be provided by macOS, iOS or Windows servers).</p>
<p>Connections to the UxPlay server by iOS/MacOS clients can be initiated both in AirPlay Mirror mode (which streams lossily-compressed AAC audio while mirroring the client screen, or in the alternative AirPlay Audio mode which streams Apple Lossless (ALAC) audio without screen mirroring (the accompanying cover art in this mode is not displayed, but metadata is displayed in the terminal). <em>Switching between these two modes during an active connection is possible: in Mirror mode, close the mirror window and start an Audio mode connection, switch back by initiating a Mirror mode connection.</em> <strong>Note that Apple DRM (as found in Apple TV app content on the client) cannot be decrypted by UxPlay, and (unlike a true AppleTV), the UxPlay server does not allow the Apple client to directly run a http connection on the server instead of streaming content from the http conection on the client.</strong></p>
<p>Connections to the UxPlay server by iOS/MacOS clients can be initiated both in AirPlay Mirror mode (which streams lossily-compressed AAC audio while mirroring the client screen, or in the alternative AirPlay Audio mode which streams Apple Lossless (ALAC) audio without screen mirroring (the accompanying cover art in this mode is not displayed, but metadata is displayed in the terminal). <em>Switching between these two modes during an active connection is possible: in Mirror mode, close the mirror window and start an Audio mode connection, switch back by initiating a Mirror mode connection.</em> <strong>Note that Apple DRM (as found in Apple TV app content on the client) cannot be decrypted by UxPlay, and (unlike a true AppleTV), the UxPlay server does not allow the Apple client to run a http connection on the server that directly streams content from the internet to the server, instead of streaming it to the client, and then re-streaming to the server.</strong></p>
<h3 id="possibility-for-using-hardware-accelerated-h264-video-decoding-if-available.">Possibility for using hardware-accelerated h264 video-decoding, if available.</h3>
<p>UxPlay uses <a href="https://gstreamer.freedesktop.org">GStreamer</a> Plugins for rendering audio and video, This means that video and audio are supported “out of the box”, using a choice of plugins. AirPlay streams video in h264 format: gstreamer decoding is plugin agnostic, and uses accelerated GPU hardware h264 decoders if available; if not, software decoding is used.</p>
<p>For systems with Intel or AMD integrated graphics, hardware GPU decoding with the gstreamer VAAPI plugin is preferable. VAAPI is open-source, and in addition to Intel and AMD graphics, the open-source “Nouveau” drivers for NVIDIA graphics are also in principle supported: see <a href="https://nouveau.freedesktop.org/VideoAcceleration.html">here</a>, which requires VAAPI to be supplemented with firmware extracted from the proprietary NVIDIA drivers.</p>
<p>For NVIDIA graphics with the proprietary drivers, the <code>nvh264dec</code> plugin (included in gstreamer1.0-plugins-bad since GStreamer-1.18.0) can be used for accelerated video decoding on the NVIDIA GPU after NVIDIAs CUDA driver <code>libcuda.so</code> is installed. This plugin should be used with options <code>uxplay -vd nvh264dec -vs glimagesink</code>. For GStreamer-1.16.3 or earlier, the plugin is called <code>nvdec</code>, and must be built by the user: see <a href="https://github.com/FDH2/UxPlay/wiki/NVIDIA-nvdec-and-nvenc-plugins">these instructions</a>. This older form of the NVIDIA plugin should be used with the <code>-vd nvdec -vs glimagesink</code> uxplay options.</p>
<ul>
<li><p><strong>GPU Support for Raspberry Pi</strong></p>
<p>Raspberry Pi (RPi) computers can run UxPlay with software decoding of h264 video (by adding <code>-avdec</code> to the uxplay options) but this usually has unacceptable latency, and hardware-accelerated decoding by the Pis built-in Broadcom GPU should be used. RPi OS (Bullseye) has abandoned the omx (OpenMAX) driver used till now for this by <a href="http://github.com/FD-/RPiPlay">RPiPlay</a>, in favor of v4l2 (Video4Linux2). A GStreamer Video4Linux2 plugin that works with UxPlay is now in the GStreamer-1.21.0.0 development branch, and will only be available in the forthcoming GStreamer-1.22 release ,but a (partial) backport (as <code>gstreamer1.0-plugins-good-1.18.4-2+~rpt1</code>) for RPi OS (Bullseye) has already appeared in its current updates. Until the promised full update appears, or if you are using a different distribution, you can find <a href="https://github.com/FDH2/UxPlay/wiki/Gstreamer-Video4Linux2-plugin-patches">patching instructions</a> in the <a href="https://github.com/FDH2/UxPlay/wiki">UxPlay Wiki</a>. Patches for GStreamer-1.18.5 (used in Ubuntu 21.10 for RPi) and GStreamer-1.20.1 (used in Ubuntu 22.04 and Manjaro for RPi) are also available. On “Desktop” operating systems with X11, if just using <code>uxplay</code> does not work well, use <code>uxplay -v4l2</code> (or use <code>-rpi</code> as a synonym), and optionally specify a videosink with “<code>-vs ..</code>”); use <code>uxplay -rpiwl</code> as a synonym for “<code>-v4l2 -vs waylandsink</code>” on a Desktop system with Wayland (this applies to Ubuntu). On a system without X11 that uses framebuffer video (such as RPi OS Bullseye “Lite”) use <code>uxplay -rpifb</code> as a synonym for “<code>uxplay -v4l2 -vs kmssink</code>”.</p></li>
<p>Raspberry Pi (RPi) computers can run UxPlay with software decoding of h264 video (by adding <code>-avdec</code> to the uxplay options) but this usually has unacceptable latency, and hardware-accelerated decoding by the Pis built-in Broadcom GPU should be used. RPi OS (Bullseye) has abandoned the unmaintained 32-bit-only omx (OpenMAX) driver used for this by <a href="http://github.com/FD-/RPiPlay">RPiPlay</a>, in favor of v4l2 (Video4Linux2). A GStreamer Video4Linux2 plugin that works with UxPlay is now in the GStreamer-1.21.0.0 development branch, and will only be available in the forthcoming GStreamer-1.22 release, but a (partial) backport (as <code>gstreamer1.0-plugins-good-1.18.4-2+~rpt1</code>) for RPi OS (Bullseye) has already appeared in its current updates. Until the promised full update appears, or if you are using a different distribution, you can find <a href="https://github.com/FDH2/UxPlay/wiki/Gstreamer-Video4Linux2-plugin-patches">patching instructions</a> in the <a href="https://github.com/FDH2/UxPlay/wiki">UxPlay Wiki</a>. Patches for GStreamer-1.18.5 (for Ubuntu 21.10) and GStreamer-1.20.1 (for Ubuntu 22.04 and Manjaro) are also available. If <code>uxplay</code> by itself does not work on your RPi system, use <code>uxplay -v4l2</code> (or use <code>-rpi</code> as a synonym), on your RPi Desktop X11 system, and optionally specify a videosink with “<code>-vs ..</code>”); use <code>uxplay -rpiwl</code> as a synonym for “<code>-v4l2 -vs waylandsink</code>” on a Desktop system with Wayland (this applies to Ubuntu). On a system without X11 that uses framebuffer video (such as RPi OS Bullseye “Lite”) use <code>uxplay -rpifb</code> as a synonym for “<code>uxplay -v4l2 -vs kmssink</code>”.</p></li>
</ul>
<h3 id="note-to-packagers-openssl-3.0.0-solves-gpl-v3-license-issues.">Note to packagers: OpenSSL-3.0.0 solves GPL v3 license issues.</h3>
<p>Some Linux distributions such as Debian do not allow distribution of compiled GPL code linked to OpenSSL-1.1.1 because its “dual OpenSSL/SSLeay” license has some incompatibilities with GPL, unless all code authors have explicitly given an “exception” to allow such linking (the historical origins of UxPlay make this impossible to obtain). Other distributions treat OpenSSL as a “System Library” which the GPL allows linking to.</p>
@@ -133,6 +133,9 @@
<h3 id="gstreamer-issues-missing-plugins-etc.">4. GStreamer issues (missing plugins, etc.):</h3>
<p>To troubleshoot GStreamer execute “export GST_DEBUG=2” to set the GStreamer debug-level environment-variable in the terminal where you will run uxplay, so that you see warning and error messages; (replace “2” by “4” to see much (much) more of what is happening inside GStreamer). Run “gst-inspect-1.0” to see which GStreamer plugins are installed on your system.</p>
<p>Some extra GStreamer packages for special plugins may need to be installed (or reinstalled: a user using a Wayland display system as an alternative to X11 reported that after reinstalling Lubuntu 18.4, UxPlay would not work until gstreamer1.0-x was installed, presumably for Waylands X11-compatibility mode). Different distributions may break up GStreamer 1.x into packages in different ways; the packages listed above in the build instructions should bring in other required GStreamer packages as dependencies, but will not install all possible plugins.</p>
<p>The GStreamer video pipeline, which is shown in the initial output from <code>uxplay -d</code>, has the default form</p>
<pre><code>appsrc name=video_source ! queue ! h264parse ! decodebin ! videoconvert ! autovideosink name=video_sink sync=false</code></pre>
<p>The pipeline is fully configurable: default elements “h264parse”, “decodebin”, “videoconvert”, and “autovideosink” can respectively be replaced by using uxplay options <code>-vp</code>, <code>-vd</code>, <code>-vc</code>, and <code>-vs</code>, if there is any need to modify it (entries can be given in quotes “…” to include options).</p>
<h3 id="mirror-screen-freezes">5. Mirror screen freezes:</h3>
<p>This can happen if the TCP video stream from the client stops arriving at the server, probably because of network problems (the UDP audio stream may continue to arrive). At 3-second intervals, UxPlay checks that the client is still connected by sending it a request for a NTP time signal. If a reply is not received from the client within a 0.3 sec time-window, an “ntp timeout” is registered. If a certain number (currently 5) of consecutive ntp timeouts occur, UxPlay assumes that the client is “dead”, and resets the connection, becoming available for connection to a new client, or reconnection to the previous one. Sometimes the connection may recover before the timeout limit is reached, and if the default limit is not right for your network, it can be modified using the option “-reset <em>n</em>”, where <em>n</em> is the desired timeout-limit value (<em>n</em> = 0 means “no limit”). If the connection starts to recover after ntp timeouts, a corrupt video packet from before the timeout may trigger a “connection reset by peer” error, which also causes UxPlay to reset the connection. When the connection is reset, the “frozen” mirror screen of the previous connection is left in place, and will be taken over by a new client connection when it is made.</p>
<h3 id="failure-to-decrypt-all-video-and-audio-streams-from-old-or-non-apple-clients">6. Failure to decrypt ALL video and audio streams from old or non-Apple clients:</h3>

View File

@@ -7,25 +7,24 @@ Highlights:
* GPLv3, open source.
* Support for both AirPlay Mirror and AirPlay Audio-only (Apple Lossless
ALAC) protocols
from current iOS/iPadOS 15.4 client devices.
* macOS computers (2011 or later) can act either as AirPlay clients, or
as the server running UxPlay (tested
on macOS 10.15 Catalina and 12.3 Monterey). Using AirPlay, UxPlay can
emulate a second display for macOS clients. Both Intel and "Apple
Silicon" M1 Macs are now fully supported in both roles.
* Support for older 32-bit iOS clients (such as iPad 2nd gen, iPhone 4S,
when upgraded to iOS 9.3.5 or later), and a Windows AirPlay-client
emulator, AirMyPC.
ALAC) streaming protocols
from current iOS/iPadOS 15.4 clients.
* macOS computers (2011 or later, both Intel and "Apple Silicon" M1
systems) can act either as AirPlay clients, or
as the server running UxPlay. Using AirPlay, UxPlay can
emulate a second display for macOS clients.
* Support for older iOS clients (such as 32-bit iPad 2nd gen. and
iPhone 4S, when upgraded to iOS 9.3.5 or later), and a
Windows AirPlay-client emulator, AirMyPC.
* Uses GStreamer, with options to select different output "videosinks"
and "audiosinks".
and "audiosinks", and fully-configurable streaming pipelines.
* Support for server behind a firewall.
* **New**: Support for Raspberry Pi, with hardware video acceleration by
Video4Linux2 (replacement for 32-bit-only OpenMAX, which is no longer
supplied in Raspberry Pi OS). (For GStreamer < 1.22,
supported by Raspberry Pi OS). (For GStreamer < 1.22,
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, unless
to the GStreamer Video4Linux2 plugin, available in the
[UxPlay Wiki](https://github.com/FDH2/UxPlay/wiki), is required, unless
your distribution has made a backport of changes from the
development version.)
See [success reports](https://github.com/FDH2/UxPlay/wiki/UxPlay-on-Raspberry-Pi:-success-reports:).
@@ -73,8 +72,9 @@ possible: in Mirror mode, close the mirror window and start an Audio mode connec
switch back by initiating a Mirror mode connection._ **Note that Apple DRM
(as found in Apple TV app content on the client) cannot be decrypted by UxPlay,
and (unlike a true AppleTV), the UxPlay server does not allow the Apple
client to directly run a http connection on the server instead of
streaming content from the http conection on the client.**
client to run a http connection on the server that directly streams
content from the internet to the server, instead of
streaming it to the client, and then re-streaming to the server.**
### Possibility for using hardware-accelerated h264 video-decoding, if available.
@@ -106,23 +106,23 @@ the `-vd nvdec -vs glimagesink` uxplay options.
of h264 video (by adding `-avdec` to the uxplay options) but this
usually has unacceptable latency, and hardware-accelerated decoding by
the Pi's built-in Broadcom GPU should be used. RPi OS (Bullseye) has
abandoned the omx (OpenMAX) driver used till now for this
abandoned the unmaintained 32-bit-only omx (OpenMAX) driver used for this
by [RPiPlay](http://github.com/FD-/RPiPlay), in favor of v4l2
(Video4Linux2). A GStreamer Video4Linux2 plugin that works with UxPlay
is now in the GStreamer-1.21.0.0 development branch, and will only be
available in the forthcoming GStreamer-1.22 release ,but a (partial)
available in the forthcoming GStreamer-1.22 release, but a (partial)
backport (as `gstreamer1.0-plugins-good-1.18.4-2+~rpt1`) for RPi OS
(Bullseye) has already appeared in its current updates. Until the
promised full update appears, or if you are using a different distribution,
you can find [patching instructions](https://github.com/FDH2/UxPlay/wiki/Gstreamer-Video4Linux2-plugin-patches)
in the [UxPlay Wiki](https://github.com/FDH2/UxPlay/wiki). Patches for
GStreamer-1.18.5 (used in Ubuntu 21.10 for RPi) and GStreamer-1.20.1
(used in Ubuntu 22.04 and Manjaro for RPi) are also available.
On "Desktop" operating systems with X11, if just using `uxplay` does not
work well, use `uxplay -v4l2` (or use ``-rpi `` as a synonym),
and optionally specify a videosink with "`-vs ..`");
use ``uxplay -rpiwl`` as a synonym for "`-v4l2 -vs waylandsink`" on a
Desktop system with Wayland (this applies to Ubuntu). On a system
GStreamer-1.18.5 (for Ubuntu 21.10) and GStreamer-1.20.1
(for Ubuntu 22.04 and Manjaro) are also available. If `uxplay` by itself
does not work on your RPi system, use `uxplay -v4l2` (or use ``-rpi ``
as a synonym), on your RPi Desktop X11 system, and optionally specify a
videosink with "`-vs ..`"); use ``uxplay -rpiwl`` as a synonym
for "`-v4l2 -vs waylandsink`" on a Desktop system with Wayland (this
applies to Ubuntu). On a system
without X11 that uses framebuffer video (such as RPi OS Bullseye "Lite")
use `uxplay -rpifb` as a synonym for "`uxplay -v4l2 -vs kmssink`".
@@ -613,6 +613,17 @@ reported that after reinstalling Lubuntu 18.4, UxPlay would not work until gstr
Different distributions may break up GStreamer 1.x into packages in different ways; the packages listed above in the build instructions should bring in
other required GStreamer packages as dependencies, but will not install all possible plugins.
The GStreamer video pipeline, which is shown in the initial output from `uxplay -d`,
has the default form
```
appsrc name=video_source ! queue ! h264parse ! decodebin ! videoconvert ! autovideosink name=video_sink sync=false
```
The pipeline is fully configurable: default elements "h264parse", "decodebin", "videoconvert", and "autovideosink" can respectively be replaced by using uxplay
options `-vp`, ``-vd``, ```-vc```, and ````-vs````, if there is any need to
modify it (entries can be given in quotes "..." to include options).
### 5. Mirror screen freezes:
This can happen if the TCP video stream from the client stops arriving at the server, probably because of network problems (the UDP audio stream may continue to arrive). At 3-second

View File

@@ -7,25 +7,24 @@ Highlights:
- GPLv3, open source.
- Support for both AirPlay Mirror and AirPlay Audio-only (Apple
Lossless ALAC) protocols from current iOS/iPadOS 15.4 client
devices.
- macOS computers (2011 or later) can act either as AirPlay clients,
or as the server running UxPlay (tested on macOS 10.15 Catalina and
12.3 Monterey). Using AirPlay, UxPlay can emulate a second display
for macOS clients. Both Intel and "Apple Silicon" M1 Macs are now
fully supported in both roles.
- Support for older 32-bit iOS clients (such as iPad 2nd gen, iPhone
4S, when upgraded to iOS 9.3.5 or later), and a Windows
Lossless ALAC) streaming protocols from current iOS/iPadOS 15.4
clients.
- macOS computers (2011 or later, both Intel and "Apple Silicon" M1
systems) can act either as AirPlay clients, or as the server running
UxPlay. Using AirPlay, UxPlay can emulate a second display for macOS
clients.
- Support for older iOS clients (such as 32-bit iPad 2nd gen. and
iPhone 4S, when upgraded to iOS 9.3.5 or later), and a Windows
AirPlay-client emulator, AirMyPC.
- Uses GStreamer, with options to select different output "videosinks"
and "audiosinks".
and "audiosinks", and fully-configurable streaming pipelines.
- Support for server behind a firewall.
- **New**: Support for Raspberry Pi, with hardware video acceleration
by Video4Linux2 (replacement for 32-bit-only OpenMAX, which is no
longer supplied in Raspberry Pi OS). (For GStreamer \< 1.22, a
longer supported by Raspberry Pi OS). (For GStreamer \< 1.22, 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, unless your
to the GStreamer Video4Linux2 plugin, available in the [UxPlay
Wiki](https://github.com/FDH2/UxPlay/wiki), is required, unless your
distribution has made a backport of changes from the development
version.) See [success
reports](https://github.com/FDH2/UxPlay/wiki/UxPlay-on-Raspberry-Pi:-success-reports:).
@@ -77,9 +76,10 @@ an active connection is possible: in Mirror mode, close the mirror
window and start an Audio mode connection, switch back by initiating a
Mirror mode connection.* **Note that Apple DRM (as found in Apple TV app
content on the client) cannot be decrypted by UxPlay, and (unlike a true
AppleTV), the UxPlay server does not allow the Apple client to directly
run a http connection on the server instead of streaming content from
the http conection on the client.**
AppleTV), the UxPlay server does not allow the Apple client to run a
http connection on the server that directly streams content from the
internet to the server, instead of streaming it to the client, and then
re-streaming to the server.**
### Possibility for using hardware-accelerated h264 video-decoding, if available.
@@ -115,27 +115,26 @@ This older form of the NVIDIA plugin should be used with the
of h264 video (by adding `-avdec` to the uxplay options) but this
usually has unacceptable latency, and hardware-accelerated decoding
by the Pi's built-in Broadcom GPU should be used. RPi OS (Bullseye)
has abandoned the omx (OpenMAX) driver used till now for this by
[RPiPlay](http://github.com/FD-/RPiPlay), in favor of v4l2
(Video4Linux2). A GStreamer Video4Linux2 plugin that works with
has abandoned the unmaintained 32-bit-only omx (OpenMAX) driver used
for this by [RPiPlay](http://github.com/FD-/RPiPlay), in favor of
v4l2 (Video4Linux2). A GStreamer Video4Linux2 plugin that works with
UxPlay is now in the GStreamer-1.21.0.0 development branch, and will
only be available in the forthcoming GStreamer-1.22 release ,but a
only be available in the forthcoming GStreamer-1.22 release, but a
(partial) backport (as `gstreamer1.0-plugins-good-1.18.4-2+~rpt1`)
for RPi OS (Bullseye) has already appeared in its current updates.
Until the promised full update appears, or if you are using a
different distribution, you can find [patching
instructions](https://github.com/FDH2/UxPlay/wiki/Gstreamer-Video4Linux2-plugin-patches)
in the [UxPlay Wiki](https://github.com/FDH2/UxPlay/wiki). Patches
for GStreamer-1.18.5 (used in Ubuntu 21.10 for RPi) and
GStreamer-1.20.1 (used in Ubuntu 22.04 and Manjaro for RPi) are also
available. On "Desktop" operating systems with X11, if just using
`uxplay` does not work well, use `uxplay -v4l2` (or use `-rpi` as a
synonym), and optionally specify a videosink with "`-vs ..`"); use
`uxplay -rpiwl` as a synonym for "`-v4l2 -vs waylandsink`" on a
Desktop system with Wayland (this applies to Ubuntu). On a system
without X11 that uses framebuffer video (such as RPi OS Bullseye
"Lite") use `uxplay -rpifb` as a synonym for
"`uxplay -v4l2 -vs kmssink`".
for GStreamer-1.18.5 (for Ubuntu 21.10) and GStreamer-1.20.1 (for
Ubuntu 22.04 and Manjaro) are also available. If `uxplay` by itself
does not work on your RPi system, use `uxplay -v4l2` (or use `-rpi`
as a synonym), on your RPi Desktop X11 system, and optionally
specify a videosink with "`-vs ..`"); use `uxplay -rpiwl` as a
synonym for "`-v4l2 -vs waylandsink`" on a Desktop system with
Wayland (this applies to Ubuntu). On a system without X11 that uses
framebuffer video (such as RPi OS Bullseye "Lite") use
`uxplay -rpifb` as a synonym for "`uxplay -v4l2 -vs kmssink`".
### Note to packagers: OpenSSL-3.0.0 solves GPL v3 license issues.
@@ -742,6 +741,17 @@ GStreamer 1.x into packages in different ways; the packages listed above
in the build instructions should bring in other required GStreamer
packages as dependencies, but will not install all possible plugins.
The GStreamer video pipeline, which is shown in the initial output from
`uxplay -d`, has the default form
appsrc name=video_source ! queue ! h264parse ! decodebin ! videoconvert ! autovideosink name=video_sink sync=false
The pipeline is fully configurable: default elements "h264parse",
"decodebin", "videoconvert", and "autovideosink" can respectively be
replaced by using uxplay options `-vp`, `-vd`, `-vc`, and `-vs`, if
there is any need to modify it (entries can be given in quotes "..." to
include options).
### 5. Mirror screen freezes:
This can happen if the TCP video stream from the client stops arriving