mirror of
https://github.com/morgan9e/UxPlay
synced 2026-04-14 00:04:13 +09:00
edit README
This commit is contained in:
17
README.html
17
README.html
@@ -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 < 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 < 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 Apple’s 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 Apple’s 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 NVIDIA’s 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 Pi’s 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 Pi’s 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 Wayland’s 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>
|
||||
|
||||
61
README.md
61
README.md
@@ -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
|
||||
|
||||
70
README.txt
70
README.txt
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user