From 05c504420594d0c718ec8ea5cfb989ad109b65ca Mon Sep 17 00:00:00 2001
From: "F. Duncanh" build-essential and pkg-config (or
pkgconf) to this if needed).
Make sure that your distribution provides OpenSSL 1.1.1 or later, and
-libplist 2.0 or later. (This means Debian 10 “Buster”, Ubuntu 18.04 or
-later.) If it does not, you may need to build and install these from
-source (see instructions at the end of this README). If you have a
-non-standard OpenSSL installation, you may need to set the environment
-variable OPENSSL_ROOT_DIR (e.g. ,
+libplist 2.0 or later. (This means Debian 10 “Buster” based systems
+(e.g, Ubuntu 18.04) or newer; on Debian 10 systems “libplist” is an
+older version, you need “libplist3”.) If it does not, you may need to
+build and install these from source (see instructions at the end of this
+README). If you have a non-standard OpenSSL installation, you may need
+to set the environment variable OPENSSL_ROOT_DIR (e.g. ,
“export OPENSSL_ROOT_DIR=/usr/local/lib64” if that is where
it is installed).
In a terminal window, change directories to the source directory of @@ -348,8 +349,8 @@ start, with error: no element “avdec_aac”
OpenSUSE: (sudo zypper install) The required GStreamer packages are: gstreamer-devel gstreamer-plugins-base-devel gstreamer-plugins-libav gstreamer-plugins-bad (+ gstreamer-plugins-vaapi -for Intel graphics); in some cases, you may need to use gstreamer -packages for OpenSUSE from Packman “Essentials” (which provides packages including plugins that OpenSUSE does not ship for license reasons).
-ao x.y adds an audio offset time in (decimal)
seconds to Audio-only (ALAC) streams to allow synchronization of sound
-playing on the UxPlay server with video on the client. In the AirPlay
-Legacy mode used by UxPlay, the client cannot obtain audio latency
-information from the server, and appears to assume a latency of about 5
-seconds. This can be corrected with offset values such as
--ao 5 or -ao 4.9. The -ao option accepts
-values of the offset between 0 and 10 seconds, as a decimal number which
-it converts to a whole number of milliseconds.
-ao 5 (but the effect of a pause in play etc., on the
+client will also be delayed). The -ao option accepts values in the range
+[0,10], which it converts to a whole number of milliseconds (-ao 1.2345
+gives 1234 msec audio delay).
-ca filename provides a file (where
filename can include a full path) used for output of “cover
art” (from Apple Music, etc.,) in audio-only ALAC mode. This
@@ -875,11 +878,13 @@ present, set the environment variable OPEN_SSL_ROOT_DIR to point to the
correct one; on 64-bit Ubuntu, this is done by running
export OPENSSL_ROOT_DIR=/usr/lib/X86_64-linux-gnu/ before
running cmake.
If UxPlay stops with the “No DNS-SD Server found” message, this means that your network does not have a running Bonjour/zeroconf DNS-SD server.
@@ -910,11 +915,21 @@ for airplay support.)If UxPlay stalls without an error message and without the server name showing on the client, this is either pre-UxPlay-1.60 behavior when no DNS-SD server was found, or a network -problem. After starting uxplay, use the utility +problem.
+This is because Avahi is only using the “loopback” network interface, +and is not receiving mDNS queries from new clients that were not +listening when UxPlay started.
+To check this, after starting uxplay, use the utility
avahi-browse -a -t in a different terminal window on the
server to verify that the UxPlay AirTunes and AirPlay services are
correctly registered (only the AirTunes service is used in the “Legacy”
-AirPlay Mirror mode used by UxPlay).
The results returned by avahi-browse should show entries for uxplay like
+ eno1 IPv6 UxPlay AirPlay Remote Video local
@@ -928,9 +943,9 @@ like
UxPlay host is probably blocking full DNS-SD service, and you need to
open the default UDP port 5353 for mDNS requests, as loopback-based
DNS-SD service is unreliable.
-If the UxPlay service is listed by avahi-browse, but is not seen by
-the client, the problem is likely to be a problem with the local
-network.
+If the UxPlay services are listed by avahi-browse as above, but are
+not seen by the client, the problem is likely to be a problem with the
+local network.
2.
uxplay starts, but stalls after “Initialized server socket(s)” appears,
@@ -1080,11 +1095,11 @@ as “SupportsLegacyPairing”) of the “features” plist code (reported to
the client by the AirPlay server) to be set. The “features” code and
other settings are set in UxPlay/lib/dnssdint.h.
Changelog
-
1.62 2023-01-14 Added Audio-only mode time offset -ao x to allow user
+
1.62 2023-01-18 Added Audio-only mode time offset -ao x to allow user
synchronization of ALAC audio playing on the server with video, song
lyrics, etc. playing on the client. x = 5.0 appears to be optimal in
many cases. Quality fixes: change default fps to 60, cleanup in volume
-changes, some bugfixes.
+changes, timestamps, some bugfixes.
1.61 2022-12-30 Removed -t option (workaround for an Avahi issue,
correctly solved by opening network port UDP 5353 in firewall). Remove
-g debug flag from CMAKE_CFLAGS. Postpend (instead of prepend) build
diff --git a/README.md b/README.md
index d5db156..ce1a43e 100644
--- a/README.md
+++ b/README.md
@@ -193,8 +193,9 @@ pkgconf. Also make sure that cmake>=3.4.1 is installed:
(or ``pkgconf``) to this if needed).
Make sure that your distribution provides OpenSSL 1.1.1 or later, and
-libplist 2.0 or later. (This means Debian 10 "Buster", Ubuntu 18.04 or
-later.) If it does not, you may need to build and install these from
+libplist 2.0 or later. (This means Debian 10 "Buster" based systems (e.g, Ubuntu 18.04) or newer;
+on Debian 10 systems "libplist" is an older version, you need "libplist3".) If it does
+not, you may need to build and install these from
source (see instructions at the end of this README). If you have a non-standard OpenSSL
installation, you may need to set the environment variable OPENSSL_ROOT_DIR
(_e.g._ , "`export OPENSSL_ROOT_DIR=/usr/local/lib64`" if that is where it is installed).
@@ -293,7 +294,7 @@ error: **no element "avdec_aac"** ]_.
(sudo zypper install)
The required GStreamer packages are: gstreamer-devel
gstreamer-plugins-base-devel gstreamer-plugins-libav gstreamer-plugins-bad (+ gstreamer-plugins-vaapi
-for Intel graphics); in some cases, you may need to use gstreamer packages for OpenSUSE
+for Intel graphics); in some cases, you may need to use gstreamer or libav* packages for OpenSUSE
from [Packman](https://ftp.gwdg.de/pub/linux/misc/packman/suse/) "Essentials"
(which provides packages including plugins that OpenSUSE does not ship for license reasons).
@@ -657,10 +658,11 @@ which will not work if a firewall is running.
**-as 0** (or just **-a**) suppresses playing of streamed audio, but displays streamed video.
**-ao x.y** adds an audio offset time in (decimal) seconds to Audio-only (ALAC) streams to allow synchronization of sound
- playing on the UxPlay server with video on the client. In the AirPlay Legacy mode used by UxPlay, the client cannot
- obtain audio latency information from the server, and appears to assume a latency of about 5 seconds. This can be corrected
- with offset values such as `-ao 5` or ``-ao 4.9``. The -ao option accepts values of the offset between 0 and 10 seconds, as
- a decimal number which it converts to a whole number of milliseconds.
+ playing on the UxPlay server with video on the client which delays playing the audio by _x.y_ seconds (a
+ decimal number). In the AirPlay Legacy mode used by UxPlay, the client cannot obtain audio latency information
+ from the server, and appears to assume a latency of about 5 seconds. This can be compensated for with offset values such
+ as `-ao 5` (but the effect of a pause in play etc., on the client will also be delayed). The -ao option accepts
+ values in the range [0,10], which it converts to a whole number of milliseconds (-ao 1.2345 gives 1234 msec audio delay).
**-ca _filename_** provides a file (where _filename_ can include a full path) used for output of "cover art"
(from Apple Music, _etc._,) in audio-only ALAC mode. This file is overwritten with the latest cover art as
@@ -744,7 +746,9 @@ Solution: when more than one installation of OpenSSL is present, set the environ
on 64-bit Ubuntu, this is done by
running `export OPENSSL_ROOT_DIR=/usr/lib/X86_64-linux-gnu/` before running cmake.
-### 1. uxplay starts, but either stalls or stops after "Initialized server socket(s)" appears (_without the server name showing on the client_).
+### 1. **Avahi/DNS_SD Bonjour/Zeroconf issues**
+
+* **uxplay starts, but either stalls or stops after "Initialized server socket(s)" appears (_without the server name showing on the client_)**.
If UxPlay stops with the "No DNS-SD Server found" message, this means that your network **does not have a running Bonjour/zeroconf DNS-SD server.**
@@ -767,9 +771,15 @@ uncomment a line for airplay support._)
If UxPlay stalls _without an error message_ and _without the server name showing on the client_, this is either pre-UxPlay-1.60
behavior when no DNS-SD server was found, or a network problem.
-After starting uxplay, use the utility ``avahi-browse -a -t`` in a different terminal window on the server to
+
+* **Avahi works at first, but new clients do not see UxPlay, or clients that initially saw it stop doing so after they disconnect**.
+
+This is because Avahi is only using the "loopback" network interface, and is not receiving mDNS queries from new clients that were not
+listening when UxPlay started.
+
+To check this, after starting uxplay, use the utility ``avahi-browse -a -t`` in a different terminal window on the server to
verify that the UxPlay AirTunes and AirPlay services are correctly registered (only the AirTunes service is
-used in the "Legacy" AirPlay Mirror mode used by UxPlay).
+used in the "Legacy" AirPlay Mirror mode used by UxPlay, bit the AirPlay service is used for the initial contact).
The results returned by avahi-browse should show entries for
uxplay like
@@ -788,7 +798,7 @@ If only the loopback ("lo") entries are shown, a firewall on the UxPlay host
is probably blocking full DNS-SD service, and you need to open the default UDP port 5353 for mDNS requests,
as loopback-based DNS-SD service is unreliable.
-If the UxPlay service is listed by avahi-browse, but is not seen by the client,
+If the UxPlay services are listed by avahi-browse as above, but are not seen by the client,
the problem is likely to be a problem with the local network.
@@ -910,10 +920,10 @@ tvOS 12.2.1); it seems that the use of "legacy" protocol just requires bit 27 (l
The "features" code and other settings are set in `UxPlay/lib/dnssdint.h`.
# Changelog
-1.62 2023-01-14 Added Audio-only mode time offset -ao x to allow user synchronization of ALAC
+1.62 2023-01-18 Added Audio-only mode time offset -ao x to allow user synchronization of ALAC
audio playing on the server with video, song lyrics, etc. playing on the client.
x = 5.0 appears to be optimal in many cases. Quality fixes: change default fps to 60,
- cleanup in volume changes, some bugfixes.
+ cleanup in volume changes, timestamps, some bugfixes.
1.61 2022-12-30 Removed -t option (workaround for an Avahi issue, correctly solved by opening network
port UDP 5353 in firewall). Remove -g debug flag from CMAKE_CFLAGS. Postpend (instead
diff --git a/README.txt b/README.txt
index 3216243..c3ad03b 100644
--- a/README.txt
+++ b/README.txt
@@ -237,11 +237,12 @@ cmake\>=3.4.1 is installed: "`sudo apt-get install cmake`" (add
`build-essential` and `pkg-config` (or `pkgconf`) to this if needed).
Make sure that your distribution provides OpenSSL 1.1.1 or later, and
-libplist 2.0 or later. (This means Debian 10 "Buster", Ubuntu 18.04 or
-later.) If it does not, you may need to build and install these from
-source (see instructions at the end of this README). If you have a
-non-standard OpenSSL installation, you may need to set the environment
-variable OPENSSL_ROOT_DIR (*e.g.* ,
+libplist 2.0 or later. (This means Debian 10 "Buster" based systems
+(e.g, Ubuntu 18.04) or newer; on Debian 10 systems "libplist" is an
+older version, you need "libplist3".) If it does not, you may need to
+build and install these from source (see instructions at the end of this
+README). If you have a non-standard OpenSSL installation, you may need
+to set the environment variable OPENSSL_ROOT_DIR (*e.g.* ,
"`export OPENSSL_ROOT_DIR=/usr/local/lib64`" if that is where it is
installed).
@@ -350,7 +351,7 @@ need to be installed, depending on how your audio is set up.
are: gstreamer-devel gstreamer-plugins-base-devel
gstreamer-plugins-libav gstreamer-plugins-bad (+
gstreamer-plugins-vaapi for Intel graphics); in some cases, you may
- need to use gstreamer packages for OpenSUSE from
+ need to use gstreamer or libav\* packages for OpenSUSE from
[Packman](https://ftp.gwdg.de/pub/linux/misc/packman/suse/)
"Essentials" (which provides packages including plugins that
OpenSUSE does not ship for license reasons).
@@ -793,12 +794,14 @@ displays streamed video.
**-ao x.y** adds an audio offset time in (decimal) seconds to Audio-only
(ALAC) streams to allow synchronization of sound playing on the UxPlay
-server with video on the client. In the AirPlay Legacy mode used by
-UxPlay, the client cannot obtain audio latency information from the
-server, and appears to assume a latency of about 5 seconds. This can be
-corrected with offset values such as `-ao 5` or `-ao 4.9`. The -ao
-option accepts values of the offset between 0 and 10 seconds, as a
-decimal number which it converts to a whole number of milliseconds.
+server with video on the client which delays playing the audio by *x.y*
+seconds (a decimal number). In the AirPlay Legacy mode used by UxPlay,
+the client cannot obtain audio latency information from the server, and
+appears to assume a latency of about 5 seconds. This can be compensated
+for with offset values such as `-ao 5` (but the effect of a pause in
+play etc., on the client will also be delayed). The -ao option accepts
+values in the range \[0,10\], which it converts to a whole number of
+milliseconds (-ao 1.2345 gives 1234 msec audio delay).
**-ca *filename*** provides a file (where *filename* can include a full
path) used for output of "cover art" (from Apple Music, *etc.*,) in
@@ -907,7 +910,11 @@ correct one; on 64-bit Ubuntu, this is done by running
`export OPENSSL_ROOT_DIR=/usr/lib/X86_64-linux-gnu/` before running
cmake.
-### 1. uxplay starts, but either stalls or stops after "Initialized server socket(s)" appears (*without the server name showing on the client*).
+### 1. **Avahi/DNS_SD Bonjour/Zeroconf issues**
+
+- **uxplay starts, but either stalls or stops after "Initialized
+ server socket(s)" appears (*without the server name showing on the
+ client*)**.
If UxPlay stops with the "No DNS-SD Server found" message, this means
that your network **does not have a running Bonjour/zeroconf DNS-SD
@@ -939,11 +946,21 @@ a line for airplay support.*)
If UxPlay stalls *without an error message* and *without the server name
showing on the client*, this is either pre-UxPlay-1.60 behavior when no
-DNS-SD server was found, or a network problem. After starting uxplay,
-use the utility `avahi-browse -a -t` in a different terminal window on
-the server to verify that the UxPlay AirTunes and AirPlay services are
-correctly registered (only the AirTunes service is used in the "Legacy"
-AirPlay Mirror mode used by UxPlay).
+DNS-SD server was found, or a network problem.
+
+- **Avahi works at first, but new clients do not see UxPlay, or
+ clients that initially saw it stop doing so after they disconnect**.
+
+This is because Avahi is only using the "loopback" network interface,
+and is not receiving mDNS queries from new clients that were not
+listening when UxPlay started.
+
+To check this, after starting uxplay, use the utility
+`avahi-browse -a -t` in a different terminal window on the server to
+verify that the UxPlay AirTunes and AirPlay services are correctly
+registered (only the AirTunes service is used in the "Legacy" AirPlay
+Mirror mode used by UxPlay, bit the AirPlay service is used for the
+initial contact).
The results returned by avahi-browse should show entries for uxplay like
@@ -959,8 +976,9 @@ host is probably blocking full DNS-SD service, and you need to open the
default UDP port 5353 for mDNS requests, as loopback-based DNS-SD
service is unreliable.
-If the UxPlay service is listed by avahi-browse, but is not seen by the
-client, the problem is likely to be a problem with the local network.
+If the UxPlay services are listed by avahi-browse as above, but are not
+seen by the client, the problem is likely to be a problem with the local
+network.
### 2. uxplay starts, but stalls after "Initialized server socket(s)" appears, *with the server name showing on the client* (but the client fails to connect when the UxPlay server is selected).
@@ -1119,11 +1137,11 @@ other settings are set in `UxPlay/lib/dnssdint.h`.
# Changelog
-1.62 2023-01-14 Added Audio-only mode time offset -ao x to allow user
+1.62 2023-01-18 Added Audio-only mode time offset -ao x to allow user
synchronization of ALAC audio playing on the server with video, song
lyrics, etc. playing on the client. x = 5.0 appears to be optimal in
many cases. Quality fixes: change default fps to 60, cleanup in volume
-changes, some bugfixes.
+changes, timestamps, some bugfixes.
1.61 2022-12-30 Removed -t option (workaround for an Avahi issue,
correctly solved by opening network port UDP 5353 in firewall). Remove