diff --git a/README.html b/README.html index f1587c1..bba924c 100644 --- a/README.html +++ b/README.html @@ -3,8 +3,8 @@

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 12 or later are supported, as is a (non-free) Windows-based AirPlay-client software emulator, AirMyPC. Older (32-bit) client devices that can only run iOS 9.3 or iOS 10.3 are currently partially supported by UxPlay: reports indicate that screen-mirroring video works, audio is a work-in-progress, but is correctly decrypted. (Details of what is publically known about Apple’s AirPlay2 protocol can be found here and here).

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 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, through the avahi-daemon service, and is included in most Linux distributions (this service can also be provided by macOS, iOS or Windows servers).

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 uses GStreamer Plugins for rendering audio and video, and does not offer the alternative Raspberry-Pi-specific audio and video renderers available in RPiPlay. It is tested on a number of systems, including (among others) Debian 11.2, Ubuntu 20.04 and 21.10, Linux Mint 20.2, OpenSUSE 15.3, macOS 10.15.7, 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 available. For Intel integrated graphics, the VAAPI plugin is preferable, (but don’t use it with nVidia).

+

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. It is tested on a number of systems, including (among others) Debian 11.2, Ubuntu 20.04 and 21.10, Linux Mint 20.2, Pop!_OS 21.10 (NVIDIA edition), OpenSUSE 15.3, macOS 10.15.7, 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 available. For Intel integrated graphics, the VAAPI plugin is preferable, (but don’t use it with NVIDIA).

Note to packagers: OpenSSL-3.0.0 solves GPL v3 license issues.

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.

For “GPL-strict” distributions, UxPlay can be built using OpenSSL- 3.0.0, which has a new GPLv3-compatible license.

@@ -17,7 +17,7 @@

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

  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. -
  3. sudo apt-get install gstreamer1.0-vaapi (For hardware-accelerated Intel graphics, but not nVidia graphics)
  4. +
  5. sudo apt-get install gstreamer1.0-vaapi (For hardware-accelerated Intel graphics, but not NVIDIA)
  6. sudo apt-get install libx11-dev (for the “ZOOMFIX” X11_display name fix for screen-sharing with e.g., ZOOM)
  7. cmake . (or “cmake -DZOOMFIX=ON .” to get a screen-sharing fix to make X11 mirror display windows visible to screen-sharing applications such as Zoom, see below).
  8. make
  9. @@ -76,7 +76,7 @@

    This shows that a DNS-SD service is working, but a firewall on the server is probably blocking the connection request from the client. (One user who insisted that the firewall had been turned off turned out to have had two active firewalls (firewalld and ufw) both running on the server!) If possible, either turn off the firewall to see if that is the problem, or get three consecutive network ports, starting at port n, all three in the range 1024-65535, opened for both tcp and udp, and use “uxplay -p n” (or open UDP 6000, 6001, 6011 TCP 7000,7001,7100 and use “uxplay -p”).

    3. Problems after the client-server connection has been made:

    For such problems, use “uxplay -d” (debug log option) to see what is happening: it will show how far the connection process gets before the failure occurs.

    -

    Most such problems are due to a GStreamer plugin that doesn’t work on your system: (by default, GStreamer uses an algorithm to guess what is the “best” plugin to use on your system). A common case is that the GStreamer VAAPI plugin (for hardware-accelerated intel graphics) is being used on a system with nVidia graphics, If you use an nVidia graphics card, make sure that the gstreamer1.0-vaapi plugin for Intel graphics is NOT installed (uninstall it if it is installed!). (You can test for this by explicitly choosing the GStreamer videosink with option “-vs ximagesink” or “-vs xvimagesink”, to see if this fixes the problem, or “-vs vaapisink” to see if this reproduces the problem.)

    +

    Most such problems are due to a GStreamer plugin that doesn’t work on your system: (by default, GStreamer uses an algorithm to guess what is the “best” plugin to use on your system). A common case is that the GStreamer VAAPI plugin (for hardware-accelerated intel graphics) is being used on a system with NVIDIA graphics, If you use an NVIDIA graphics card, make sure that the gstreamer1.0-vaapi plugin for Intel graphics is NOT installed (uninstall it if it is installed!). (You can test for this by explicitly choosing the GStreamer videosink with option “-vs ximagesink” or “-vs xvimagesink”, to see if this fixes the problem, or “-vs vaapisink” to see if this reproduces the problem.)

    There are some reports of other GStreamer problems with hardware-accelerated Intel graphics. One user (on Debian) solved this with “sudo apt install intel-media-va-driver-non-free”. This is a driver for 8’th (or later) generation "*-lake" Intel chips, that seems to be related to VAAPI accelerated graphics.

    You can try to fix audio problems by using the “-as audiosink” option to choose the GStreamer audiosink , rather than have autoaudiosink pick one for you. The command “gst_inspect-1.0 | grep Sink | grep Audio” " will show you which audiosinks are available on your system. (Replace “Audio” by “Video” to see videosinks). Some possible audiosinks are pulsesink, alsasink, osssink, oss4sink, and osxaudiosink (macOS).

    If you ran cmake with “-DZOOMFIX=ON”, check if the problem is still there without ZOOMFIX. ZOOMFIX is only applied to the default videosink choice (“autovideosink”) and the two X11 videosinks “ximagesink” and “xvimagesink”. ZOOMFIX is only designed for these last two; if autovideosink chooses a different videosink, ZOOMFIX is now ignored. If you are using the X11 windowing system (standard on Linux), and have trouble with screen-sharing on Zoom, use ZOOMFIX and “-vs xvimagesink” (or “-vs ximagesink” if the previous choice doesn’t work).

    diff --git a/README.md b/README.md index 50aa903..2845b25 100644 --- a/README.md +++ b/README.md @@ -44,11 +44,11 @@ instead of streaming content from one on the client.** 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) Debian 11.2, Ubuntu 20.04 and 21.10, Linux Mint 20.2, OpenSUSE 15.3, macOS 10.15.7, FreeBSD 13.0. +It is tested on a number of systems, including (among others) Debian 11.2, Ubuntu 20.04 and 21.10, Linux Mint 20.2, Pop!\_OS 21.10 (NVIDIA edition), OpenSUSE 15.3, macOS 10.15.7, 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 -available. For Intel integrated graphics, the VAAPI plugin is preferable, (but don't use it with nVidia). +available. For Intel integrated graphics, the VAAPI plugin is preferable, (but don't use it with NVIDIA). ### Note to packagers: OpenSSL-3.0.0 solves GPL v3 license issues. @@ -83,7 +83,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 hardware-accelerated Intel graphics, but not nVidia graphics) +2. `sudo apt-get install gstreamer1.0-vaapi` (For hardware-accelerated Intel graphics, but not NVIDIA) 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 @@ -347,9 +347,9 @@ the failure occurs. **Most such problems are due to a GStreamer plugin that doesn't work on your system**: (by default, GStreamer uses an algorithm to guess what is the "best" plugin to use on your system). A common case is that the GStreamer VAAPI plugin -(for hardware-accelerated intel graphics) is being used on a system with nVidia graphics, +(for hardware-accelerated intel graphics) is being used on a system with NVIDIA graphics, If you use an -nVidia graphics card, make sure that the gstreamer1.0-vaapi +NVIDIA graphics card, make sure that the gstreamer1.0-vaapi plugin for Intel graphics is *NOT* installed (**uninstall it** if it is installed!). (You can test for this by explicitly choosing the GStreamer videosink with option "-vs ximagesink" or "-vs xvimagesink", to see if this fixes the problem, or "-vs vaapisink" to see if this diff --git a/README.txt b/README.txt index af496f8..2476967 100644 --- a/README.txt +++ b/README.txt @@ -54,14 +54,14 @@ 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) Debian 11.2, -Ubuntu 20.04 and 21.10, Linux Mint 20.2, OpenSUSE 15.3, macOS 10.15.7, -FreeBSD 13.0. +Ubuntu 20.04 and 21.10, Linux Mint 20.2, Pop!\_OS 21.10 (NVIDIA +edition), OpenSUSE 15.3, macOS 10.15.7, 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 available. For Intel integrated graphics, the VAAPI plugin is preferable, (but don't use it with -nVidia). +NVIDIA). ### Note to packagers: OpenSSL-3.0.0 solves GPL v3 license issues. @@ -106,7 +106,7 @@ 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 hardware-accelerated - Intel graphics, but not nVidia graphics) + Intel graphics, but not NVIDIA) 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 @@ -439,7 +439,7 @@ failure occurs. your system**: (by default, GStreamer uses an algorithm to guess what is the "best" plugin to use on your system). A common case is that the GStreamer VAAPI plugin (for hardware-accelerated intel graphics) is -being used on a system with nVidia graphics, If you use an nVidia +being used on a system with NVIDIA graphics, If you use an NVIDIA graphics card, make sure that the gstreamer1.0-vaapi plugin for Intel graphics is *NOT* installed (**uninstall it** if it is installed!). (You can test for this by explicitly choosing the GStreamer videosink with