mirror of
https://github.com/morgan9e/UxPlay
synced 2026-04-14 16:24:29 +09:00
rewites of parts of README for UxPlay 1.44
This commit is contained in:
15
README.html
15
README.html
@@ -1,8 +1,9 @@
|
||||
<h1 id="uxplay-1.44-airplayairplay-mirror-server-for-linux-macos-and-unix.">UxPlay 1.44: AirPlay/AirPlay-Mirror server for Linux, macOS, and Unix.</h1>
|
||||
<p>This project is a GPLv3 unix AirPlay2 server which now also works on macOS. Its main use is to act like an AppleTV for screen-mirroring (with audio) of iOS/macOS clients (iPads, iPhones, 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, using Apple’s AirPlay Mirror protocol first available in iOS 5. (Details of what is known about the 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>). <strong>Note that Apple DRM (as in Apple TV app content) cannot be decrypted by UxPlay.</strong></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 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><em>Since v1.38, UxPlay now also supports the Airplay audio-only protocol as well as AirPlay Mirror protocol, and (when the client screen is not being mirrored) can play Apple Lossless (ALAC) audio streamed from the client without video (the accompanying cover-art and metadata is not displayed). The initial connection to the client can be either AirPlay audio or Airplay Mirror mode. An Airplay Mirror connection (with “Advanced Audio Coding” AAC-ELD lossy-compression audio) switches to ALAC if the mirrow window is closed and an AirPlay audio connection is started, and back again to AAC if a new Airplay Mirror connection is made</em>.</p>
|
||||
<p>UxPlay is based on https://github.com/FD-/RPiPlay, with GStreamer integration from https://github.com/antimof/UxPlay. (UxPlay only uses GStreamer, and does not contain the alternative Raspberry-Pi-specific audio and video renderers also found in RPiPlay.) Tested on a number of systems, including Ubuntu 20.04, Linux Mint 20.2, OpenSUSE 15.3, macOS 10.15, FreeBSD 13.0.</p>
|
||||
<p>This project is a GPLv3 open source unix AirPlay2 Mirror server for Linux, macOS, and *BSD. It is now hosted at the github site <a href="https://github.com/FDH2/UxPlay">https://github.com/FDH2/UxPlay</a> (where development and user-assistance now takes place), although it initially was 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 mainly inactive, but periodically posts updates pulled from the <a href="https://github.com/FDH2/UxPlay">main UxPlay site</a>).</p>
|
||||
<p>Its main use is to act like an AppleTV for screen-mirroring (with audio) of iOS/macOS clients (iPads, iPhones, MacBooks, as well as certain third-party AirPlay-emulator clients on Windows, such as <em>AirMyPC</em>) 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, using Apple’s AirPlay Mirror protocol first available in iOS 5. (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 metadata and cover art in this mode is not displayed). <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 in Apple TV app content on the client) cannot be decrypted by UxPlay, and (unlike with a true AppleTV), the client cannot run a http connection on the server instead of streaming content from one on the client.</strong></p>
|
||||
<p>UxPlay uses GStreamer Plugins for rendering audio and video, and does not offer the alternative Raspberry-Pi-specific audio and video renderers available in <a href="https://github.com/FD-/RPiPlay">RPiPlay</a>. It is tested on a number of systems, including (among others) Ubuntu 20.04, Linux Mint 20.2, OpenSUSE 15.3, macOS 10.15, FreeBSD 13.0.</p>
|
||||
<p>Using Gstreamer means that video and audio are supported “out of the box”, using a choice of plugins. Gstreamer decoding is plugin agnostic, and uses accelerated decoders if available. For Intel integrated graphics, the VAAPI plugin is preferable, (but don’t use it with nVidia).</p>
|
||||
<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 OpenSLL-1.1.1 because its “dual OpenSSL/SSLeay” license has some incompatibilites 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>
|
||||
@@ -16,14 +17,14 @@
|
||||
<p>Make sure that cmake>=3.4.1 and pkg-config are also installed: “sudo apt-get install cmake pkg-config”. In a terminal window, change directories to the source directory of the downloaded source code (“UxPlay-master” for zipfile downloads, “UxPlay” for “git clone” downloads), then do</p>
|
||||
<ol type="1">
|
||||
<li><code>sudo apt-get install libssl-dev libplist-dev libavahi-compat-libdnssd-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-libav gstreamer1.0-plugins-bad</code></li>
|
||||
<li><code>sudo apt-get install gstreamer1.0-vaapi</code> (For Intel graphics, but not nVidia graphics)</li>
|
||||
<li><code>sudo apt-get install gstreamer1.0-vaapi</code> (For hardware-accelerated Intel graphics, but not nVidia graphics)</li>
|
||||
<li><code>sudo apt-get install libx11-dev</code> (for the “ZOOMFIX” X11_display name fix for screen-sharing with e.g., ZOOM)</li>
|
||||
<li><code>cmake .</code> (or “<code>cmake -DZOOMFIX=ON .</code>” to get a screen-sharing fix to make X11 mirror display windows visible to screen-sharing applications such as Zoom, see below).</li>
|
||||
<li><code>make</code></li>
|
||||
<li><code>sudo make install</code> (you can afterwards uninstall with <code>sudo make uninstall</code> in the same directory in which this was run)</li>
|
||||
</ol>
|
||||
<p><em>If you intend to modify the code, use a separate “build” directory: replace</em> “<code>cmake [ ] .</code>” <em>by</em> “<code>mkdir build ; cd build ; cmake [ ] ..</code>”; <em>you can then clean the build directory with</em> “<code>rm -rf build/*</code>” <em>(run from within the UxPlay source directory) without affecting the source directories which contain your modifications</em>.</p>
|
||||
<p>The above script installs the executable file “<code>uxplay</code>” to <code>/usr/local/bin</code>, (and installs a manpage to <code>/usr/local/man/man1</code> and README files to <code>/usr/local/share/doc/uxplay</code>). It can also be found in the build directory after the build processs. Run uxplay in a terminal window.</p>
|
||||
<p>The above script installs the executable file “<code>uxplay</code>” to <code>/usr/local/bin</code>, (and installs a manpage to somewhere like <code>/usr/local/share/man/man1</code> and README files to somewhere like <code>/usr/local/share/doc/uxplay</code>). It can also be found in the build directory after the build processs. Run uxplay in a terminal window.</p>
|
||||
<p><strong>Note libplist-dev (version 2.0 or greater) is a new dependency (the original antimof version UxPlay-1.2 supplied it). Older Linux distributions may only supply libplist 1.x, which is too old. [Installing libplist-dev (with libplist3) from ubuntu 18.04 solves this problem on ubuntu 16.04.]</strong> If you cannot find a libplist-2.x package that installs on your older distribution, you can get it at <a href="https://github.com/libimobiledevice/libplist">https://github.com/libimobiledevice/libplist</a> and build it from source. _(You will need build tools autoconf, automake, libtool, and may need to also install some libpython*-dev package). By default, libplist installs in /usr/local/lib. If this is not in the library path (as in ubuntu), create a file /etc/ld.so.conf.d/libplist.conf containing the text “/usr/local/lib”, and run “sudo ldconfig” to permanently add /usr/local/lib to the library path._</p>
|
||||
<p><strong>Red Hat, Fedora, CentOS:</strong> (sudo yum install) openssl-devel libplist-devel avahi-compat-libdns_sd-devel (+libX11-devel for ZOOMFIX). The required GStreamer packages are: gstreamer1-devel gstreamer1-plugins-base-devel gstreamer1-libav gstreamer1-plugins-bad-free ( + gstreamer1-vaapi for intel graphics).</p>
|
||||
<p><strong>OpenSUSE:</strong> (sudo zypper install) libopenssl-devel libplist-devel avahi-compat-mDNSResponder-devel (+ libX11-devel for ZOOMFIX). The required GStreamer packages are: gstreamer-devel gstreamer-plugins-base-devel gstreamer-plugins-libav gstreamer-plugins-bad (+ gstreamer-plugins-vaapi for Intel graphics).</p>
|
||||
@@ -77,7 +78,7 @@
|
||||
<p><strong>-as 0</strong> (or just <strong>-a</strong>) suppresses playing of streamed audio, but displays streamed video.</p>
|
||||
<p><strong>-t <em>timeout</em></strong> will cause the server to relaunch (without stopping uxplay) if no connections have been present during the previous <em>timeout</em> seconds. (You may wish to use this because the Server may not be visible to new Clients that were inactive when the Server was launched, and an idle Bonjour registration also eventually becomes unavailable for new connections.) The timer only starts once a Client has first made a mirror connection and then has disconnected with “Stop Mirrroring”. <em>This option should <strong>not</strong> be used if the display window is an OpenGL window on macOS, as such an OpenGL window created by GStreamer does not terminate correctly (it causes a segfault) if it is still open when the GStreamer pipeline is closed.</em></p>
|
||||
<h1 id="changelog">ChangeLog</h1>
|
||||
<p>1.44 2021-12-13 no hash of aeskey with ecdh_secret if sourceVersion <= 280.33 (now supports AirMyPC)</p>
|
||||
<p>1.44 2021-12-13 Omit hash of aeskey with ecdh_secret if sourceVersion <= 280.33 (this supports AirMyPC); internal rearrangement of where this hash is done. Replace decodebin by h264-specific elements in the GStreamer video pipeline. Fully report initial communications between client and server in -d debug mode.</p>
|
||||
<p>1.43 2021-12-07 Various internal changes, such as tests for successful decryption, uniform treatment of informational/debug messages, etc., updated README.</p>
|
||||
<p>1.42 2021-11-20 Fix MAC detection to work with modern Linux interface naming practices, MacOS and *BSD.</p>
|
||||
<p>1.41 2021-11-11 Further cleanups of multiple audio format support (internal changes, separated RAOP and GStreamer audio/video startup)</p>
|
||||
|
||||
57
README.md
57
README.md
@@ -1,33 +1,47 @@
|
||||
|
||||
# UxPlay 1.44: AirPlay/AirPlay-Mirror server for Linux, macOS, and Unix.
|
||||
|
||||
This project is a GPLv3 unix AirPlay2 server which now also works on macOS.
|
||||
|
||||
This project is a GPLv3 open source unix AirPlay2 Mirror server for Linux, macOS, and \*BSD.
|
||||
It is now hosted at the
|
||||
github site [https://github.com/FDH2/UxPlay](https://github.com/FDH2/UxPlay) (where development and user-assistance now takes place), although it initially was developed by
|
||||
[antimof](http://github.com/antimof/Uxplay) using code
|
||||
from [RPiPlay](https://github.com/FD-/RPiPlay), which in turn derives from
|
||||
[AirplayServer](https://github.com/KqsMea8/AirplayServer),
|
||||
[shairplay](https://github.com/juhovh/shairplay), and [playfair](https://github.com/EstebanKubata/playfair). (The antimof site is
|
||||
mainly inactive, but periodically posts updates pulled from the [main UxPlay site](https://github.com/FDH2/UxPlay)).
|
||||
|
||||
|
||||
Its main use is to act like an AppleTV for screen-mirroring (with audio) of iOS/macOS clients
|
||||
(iPads, iPhones, MacBooks) in a window on the server display (with the possibility of
|
||||
(iPads, iPhones, MacBooks, as well as certain third-party AirPlay-emulator clients on Windows, such as _AirMyPC_) 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, using Apple's AirPlay Mirror protocol first available in iOS 5.
|
||||
(Details of what is known about the AirPlay2 protocol can be found [here](https://github.com/SteeBono/airplayreceiver/wiki/AirPlay2-Protocol) and
|
||||
[here](https://emanuelecozzi.net/docs/airplay2)). **Note that Apple DRM (as in Apple TV app content) cannot be decrypted by UxPlay.**
|
||||
(Details of what is publically known about Apple's AirPlay2 protocol can be found [here](https://github.com/SteeBono/airplayreceiver/wiki/AirPlay2-Protocol) and
|
||||
[here](https://emanuelecozzi.net/docs/airplay2)).
|
||||
|
||||
The UxPlay server and its client must be on the same local area network,
|
||||
on which a **Bonjour/Zeroconf mDNS/DNS-SD server** is also running
|
||||
(only DNS-SD "Service Discovery" service is necessary, it is not necessary that the local network also be of the ".local" mDNS-based type).
|
||||
(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 [Avahi](https://www.avahi.org),
|
||||
through the avahi-daemon service, and is included in most Linux distributions (this
|
||||
service can also be provided by macOS, iOS or Windows servers).
|
||||
|
||||
_Since v1.38, UxPlay now also supports the Airplay audio-only protocol as well as AirPlay Mirror protocol, and
|
||||
(when the client screen is not being mirrored)
|
||||
can play Apple Lossless (ALAC) audio streamed from the client without video (the accompanying cover-art and metadata is not displayed).
|
||||
The initial connection to the client can be either AirPlay audio or Airplay Mirror mode. An Airplay Mirror connection (with "Advanced Audio Coding" AAC-ELD lossy-compression audio)
|
||||
switches to ALAC if the mirrow window is closed and an AirPlay audio connection is started, and back again to AAC if a new
|
||||
Airplay Mirror connection is made_.
|
||||
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 metadata and cover art in
|
||||
this mode is not displayed). _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._ **Note that Apple DRM
|
||||
(as in Apple TV app content on the client) cannot be decrypted by UxPlay,
|
||||
and (unlike with a true AppleTV), the client cannot run a http connection on the server
|
||||
instead of streaming content from one on the client.**
|
||||
|
||||
UxPlay is based on https://github.com/FD-/RPiPlay, with GStreamer integration from
|
||||
https://github.com/antimof/UxPlay.
|
||||
(UxPlay only uses GStreamer, and does not contain the alternative Raspberry-Pi-specific
|
||||
audio and video renderers also found in RPiPlay.)
|
||||
Tested on a number of systems, including Ubuntu 20.04, Linux Mint 20.2, OpenSUSE 15.3, macOS 10.15, FreeBSD 13.0.
|
||||
UxPlay uses GStreamer Plugins for rendering audio and video,
|
||||
and does not offer the alternative Raspberry-Pi-specific
|
||||
audio and video renderers available in [RPiPlay](https://github.com/FD-/RPiPlay).
|
||||
It is tested on a number of systems, including (among others) Ubuntu 20.04, Linux Mint 20.2, OpenSUSE 15.3, macOS 10.15, FreeBSD 13.0.
|
||||
|
||||
Using Gstreamer means that video and audio are supported "out of the box", using a choice of plugins.
|
||||
Gstreamer decoding is plugin agnostic, and uses accelerated decoders if
|
||||
@@ -66,7 +80,7 @@ In a terminal window, change directories to the source directory of the
|
||||
downloaded source code ("UxPlay-master" for zipfile downloads, "UxPlay" for "git clone" downloads), then do
|
||||
|
||||
1. `sudo apt-get install libssl-dev libplist-dev libavahi-compat-libdnssd-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-libav gstreamer1.0-plugins-bad`
|
||||
2. `sudo apt-get install gstreamer1.0-vaapi` (For Intel graphics, but not nVidia graphics)
|
||||
2. `sudo apt-get install gstreamer1.0-vaapi` (For hardware-accelerated Intel graphics, but not nVidia graphics)
|
||||
3. `sudo apt-get install libx11-dev` (for the "ZOOMFIX" X11_display name fix for screen-sharing with e.g., ZOOM)
|
||||
4. `cmake .` (or "`cmake -DZOOMFIX=ON .`" to get a screen-sharing fix to
|
||||
make X11 mirror display windows visible to screen-sharing applications such as
|
||||
@@ -77,8 +91,8 @@ Zoom, see below).
|
||||
_If you intend to modify the code, use a separate "build" directory: replace_ "```cmake [ ] . ```" _by_ "```mkdir build ; cd build ; cmake [ ] ..```"; _you can then clean
|
||||
the build directory with_ "```rm -rf build/* ```" _(run from within the UxPlay source directory) without affecting the source directories which contain your modifications_.
|
||||
|
||||
The above script installs the executable file "`uxplay`" to `/usr/local/bin`, (and installs a manpage to `/usr/local/man/man1` and README
|
||||
files to `/usr/local/share/doc/uxplay`).
|
||||
The above script installs the executable file "`uxplay`" to `/usr/local/bin`, (and installs a manpage to somewhere like `/usr/local/share/man/man1` and README
|
||||
files to somewhere like `/usr/local/share/doc/uxplay`).
|
||||
It can also be found in the build directory after the build
|
||||
processs. Run uxplay in a terminal window.
|
||||
|
||||
@@ -363,7 +377,10 @@ Also: image transforms that had been added to RPiPlay have been ported to UxPlay
|
||||
|
||||
|
||||
# ChangeLog
|
||||
1.44 2021-12-13 no hash of aeskey with ecdh_secret if sourceVersion <= 280.33 (now supports AirMyPC)
|
||||
1.44 2021-12-13 Omit hash of aeskey with ecdh_secret if sourceVersion <= 280.33 (this supports AirMyPC);
|
||||
internal rearrangement of where this hash is done. Replace decodebin by h264-specific
|
||||
elements in the GStreamer video pipeline. Fully report initial communications between
|
||||
client and server in -d debug mode.
|
||||
|
||||
1.43 2021-12-07 Various internal changes, such as tests for successful decryption, uniform treatment
|
||||
of informational/debug messages, etc., updated README.
|
||||
|
||||
89
README.txt
89
README.txt
@@ -1,44 +1,56 @@
|
||||
UxPlay 1.44: AirPlay/AirPlay-Mirror server for Linux, macOS, and Unix.
|
||||
======================================================================
|
||||
|
||||
This project is a GPLv3 unix AirPlay2 server which now also works on
|
||||
macOS. Its main use is to act like an AppleTV for screen-mirroring (with
|
||||
audio) of iOS/macOS clients (iPads, iPhones, 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, using Apple's AirPlay Mirror protocol first
|
||||
available in iOS 5. (Details of what is known about the AirPlay2
|
||||
protocol can be found
|
||||
This project is a GPLv3 open source unix AirPlay2 Mirror server for
|
||||
Linux, macOS, and \*BSD. It is now hosted at the github site
|
||||
<https://github.com/FDH2/UxPlay> (where development and user-assistance
|
||||
now takes place), although it initially was developed by
|
||||
[antimof](http://github.com/antimof/Uxplay) using code from
|
||||
[RPiPlay](https://github.com/FD-/RPiPlay), which in turn derives from
|
||||
[AirplayServer](https://github.com/KqsMea8/AirplayServer),
|
||||
[shairplay](https://github.com/juhovh/shairplay), and
|
||||
[playfair](https://github.com/EstebanKubata/playfair). (The antimof site
|
||||
is mainly inactive, but periodically posts updates pulled from the [main
|
||||
UxPlay site](https://github.com/FDH2/UxPlay)).
|
||||
|
||||
Its main use is to act like an AppleTV for screen-mirroring (with audio)
|
||||
of iOS/macOS clients (iPads, iPhones, MacBooks, as well as certain
|
||||
third-party AirPlay-emulator clients on Windows, such as *AirMyPC*) 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, using Apple's AirPlay Mirror protocol first
|
||||
available in iOS 5. (Details of what is publically known about Apple's
|
||||
AirPlay2 protocol can be found
|
||||
[here](https://github.com/SteeBono/airplayreceiver/wiki/AirPlay2-Protocol)
|
||||
and [here](https://emanuelecozzi.net/docs/airplay2)). **Note that Apple
|
||||
DRM (as in Apple TV app content) cannot be decrypted by UxPlay.**
|
||||
and [here](https://emanuelecozzi.net/docs/airplay2)).
|
||||
|
||||
The UxPlay server and its client must be on the same local area network,
|
||||
on which a **Bonjour/Zeroconf mDNS/DNS-SD server** is also running (only
|
||||
DNS-SD "Service Discovery" service is 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
|
||||
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
|
||||
[Avahi](https://www.avahi.org), through the avahi-daemon service, and is
|
||||
included in most Linux distributions (this service can also be provided
|
||||
by macOS, iOS or Windows servers).
|
||||
|
||||
*Since v1.38, UxPlay now also supports the Airplay audio-only protocol
|
||||
as well as AirPlay Mirror protocol, and (when the client screen is not
|
||||
being mirrored) can play Apple Lossless (ALAC) audio streamed from the
|
||||
client without video (the accompanying cover-art and metadata is not
|
||||
displayed). The initial connection to the client can be either AirPlay
|
||||
audio or Airplay Mirror mode. An Airplay Mirror connection (with
|
||||
"Advanced Audio Coding" AAC-ELD lossy-compression audio) switches to
|
||||
ALAC if the mirrow window is closed and an AirPlay audio connection is
|
||||
started, and back again to AAC if a new Airplay Mirror connection is
|
||||
made*.
|
||||
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 metadata and cover art in this mode is not displayed).
|
||||
*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.*
|
||||
**Note that Apple DRM (as in Apple TV app content on the client) cannot
|
||||
be decrypted by UxPlay, and (unlike with a true AppleTV), the client
|
||||
cannot run a http connection on the server instead of streaming content
|
||||
from one on the client.**
|
||||
|
||||
UxPlay is based on https://github.com/FD-/RPiPlay, with GStreamer
|
||||
integration from https://github.com/antimof/UxPlay. (UxPlay only uses
|
||||
GStreamer, and does not contain the alternative Raspberry-Pi-specific
|
||||
audio and video renderers also found in RPiPlay.) Tested on a number of
|
||||
systems, including Ubuntu 20.04, Linux Mint 20.2, OpenSUSE 15.3, macOS
|
||||
10.15, FreeBSD 13.0.
|
||||
UxPlay uses GStreamer Plugins for rendering audio and video, and does
|
||||
not offer the alternative Raspberry-Pi-specific audio and video
|
||||
renderers available in [RPiPlay](https://github.com/FD-/RPiPlay). It is
|
||||
tested on a number of systems, including (among others) Ubuntu 20.04,
|
||||
Linux Mint 20.2, OpenSUSE 15.3, macOS 10.15, FreeBSD 13.0.
|
||||
|
||||
Using Gstreamer means that video and audio are supported "out of the
|
||||
box", using a choice of plugins. Gstreamer decoding is plugin agnostic,
|
||||
@@ -88,8 +100,8 @@ directories to the source directory of the downloaded source code
|
||||
downloads), then do
|
||||
|
||||
1. `sudo apt-get install libssl-dev libplist-dev libavahi-compat-libdnssd-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-libav gstreamer1.0-plugins-bad`
|
||||
2. `sudo apt-get install gstreamer1.0-vaapi` (For Intel graphics, but
|
||||
not nVidia graphics)
|
||||
2. `sudo apt-get install gstreamer1.0-vaapi` (For hardware-accelerated
|
||||
Intel graphics, but not nVidia graphics)
|
||||
3. `sudo apt-get install libx11-dev` (for the "ZOOMFIX" X11\_display
|
||||
name fix for screen-sharing with e.g., ZOOM)
|
||||
4. `cmake .` (or "`cmake -DZOOMFIX=ON .`" to get a screen-sharing fix
|
||||
@@ -107,10 +119,10 @@ directory) without affecting the source directories which contain your
|
||||
modifications*.
|
||||
|
||||
The above script installs the executable file "`uxplay`" to
|
||||
`/usr/local/bin`, (and installs a manpage to `/usr/local/man/man1` and
|
||||
README files to `/usr/local/share/doc/uxplay`). It can also be found in
|
||||
the build directory after the build processs. Run uxplay in a terminal
|
||||
window.
|
||||
`/usr/local/bin`, (and installs a manpage to somewhere like
|
||||
`/usr/local/share/man/man1` and README files to somewhere like
|
||||
`/usr/local/share/doc/uxplay`). It can also be found in the build
|
||||
directory after the build processs. Run uxplay in a terminal window.
|
||||
|
||||
**Note libplist-dev (version 2.0 or greater) is a new dependency (the
|
||||
original antimof version UxPlay-1.2 supplied it). Older Linux
|
||||
@@ -461,8 +473,11 @@ still open when the GStreamer pipeline is closed.*
|
||||
ChangeLog
|
||||
=========
|
||||
|
||||
1.44 2021-12-13 no hash of aeskey with ecdh\_secret if sourceVersion \<=
|
||||
280.33 (now supports AirMyPC)
|
||||
1.44 2021-12-13 Omit hash of aeskey with ecdh\_secret if sourceVersion
|
||||
\<= 280.33 (this supports AirMyPC); internal rearrangement of where this
|
||||
hash is done. Replace decodebin by h264-specific elements in the
|
||||
GStreamer video pipeline. Fully report initial communications between
|
||||
client and server in -d debug mode.
|
||||
|
||||
1.43 2021-12-07 Various internal changes, such as tests for successful
|
||||
decryption, uniform treatment of informational/debug messages, etc.,
|
||||
|
||||
Reference in New Issue
Block a user