UxPlay icon indicating copy to clipboard operation
UxPlay copied to clipboard

Not working with pipewire streamed audio (raop)

Open micartey opened this issue 10 months ago • 5 comments

UxPlay is working fine with my IPhone, but not with my linux computer that uses pipewire.

I tried to enable raop support and set it as a sink (that part is working) but I receive no sound... https://wiki.nixos.org/wiki/PipeWire#AirPlay/RAOP_configuration

The ports are open and I tested with disabled firewall as well

This is the debug log:

UxPlay 1.62: An Open-Source AirPlay mirroring and audio-streaming server.
Audio format 1: AAC-ELD 44100/2
GStreamer audio pipeline 1: "appsrc name=audio_source ! queue ! avdec_aac ! audioconvert ! audioresample ! volume name=volume ! level ! autoaudiosink sync=false"
Audio format 2: ALAC 44100/16/2
GStreamer audio pipeline 2: "appsrc name=audio_source ! queue ! avdec_alac ! audioconvert ! audioresample ! volume name=volume ! level ! autoaudiosink sync=false"
GStreamer video pipeline will be:
"appsrc name=video_source ! queue ! h264parse ! avdec_h264 ! videoconvert ! autovideosink name=video_sink sync=false"
Initialized GStreamer video renderer
using system MAC address d8:3a:dd:92:53:6f
Initialized server socket(s)
Accepted IPv4 client on socket 29
Local: 192.168.188.34
Remote: 192.168.188.46
httpd receiving on socket 29
conn_request

OPTIONS rtsp://192.168.188.46/1761028662 RTSP/1.0
CSeq: 1
Client-Instance: CA6B369195C4934E
DACP-ID: CA6B369195C4934E
User-Agent: PipeWire/1.2.7

Handling request OPTIONS with URL rtsp://192.168.188.46/1761028662

RTSP/1.0 200 OK 
CSeq: 1 
Server: AirTunes/220.68 
Public: SETUP, RECORD, PAUSE, FLUSH, TEARDOWN, OPTIONS, GET_PARAMETER, SET_PARAMETER 

httpd receiving on socket 29
conn_request

ANNOUNCE rtsp://192.168.188.46/1761028662 RTSP/1.0
CSeq: 2
Client-Instance: CA6B369195C4934E
DACP-ID: CA6B369195C4934E
User-Agent: PipeWire/1.2.7
Content-Type: application/sdp
Content-Length: 186

76 3d 30 0d 0a 6f 3d 69 54 75 6e 65 73 20 31 37 
36 31 30 32 38 36 36 32 20 30 20 49 4e 20 49 50 
34 20 31 39 32 2e 31 36 38 2e 31 38 38 2e 34 36 
0d 0a 73 3d 69 54 75 6e 65 73 0d 0a 63 3d 49 4e 
20 49 50 34 20 31 39 32 2e 31 36 38 2e 31 38 38 
2e 33 34 0d 0a 74 3d 30 20 30 0d 0a 6d 3d 61 75 
64 69 6f 20 30 20 52 54 50 2f 41 56 50 20 39 36 
0d 0a 61 3d 72 74 70 6d 61 70 3a 39 36 20 41 70 
70 6c 65 4c 6f 73 73 6c 65 73 73 0d 0a 61 3d 66 
6d 74 70 3a 39 36 20 33 35 32 20 30 20 31 36 20 
34 30 20 31 30 20 31 34 20 32 20 32 35 35 20 30 
20 30 20 34 34 31 30 30 0d 0a 

Handling request ANNOUNCE with URL rtsp://192.168.188.46/1761028662

RTSP/1.0 200 OK 
CSeq: 2 
Server: AirTunes/220.68 

httpd receiving on socket 29
conn_request

SETUP rtsp://192.168.188.46/1761028662 RTSP/1.0
CSeq: 3
Client-Instance: CA6B369195C4934E
DACP-ID: CA6B369195C4934E
User-Agent: PipeWire/1.2.7
Transport: RTP/AVP/UDP;unicast;interleaved=0-1;mode=record;control_port=6001;timing_port=6002

Handling request SETUP with URL rtsp://192.168.188.46/1761028662
Transport: RTP/AVP/UDP;unicast;interleaved=0-1;mode=record;control_port=6001;timing_port=6002

RTSP/1.0 200 OK 
CSeq: 3 
Server: AirTunes/220.68 
Content-Type: application/x-apple-binary-plist 
Content-Length: 42 
 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict/>
</plist>

micartey avatar Apr 19 '25 00:04 micartey

See #170 (post issues not here, but at https://github.com/FDH2/UxPlay

You seem to be using a non-Apple client with uxplay. UxPlay doesnt support multiroom audio, etc., (and does not (or should not) handle ANNOUNCE RTSP requests)

Form UxPlay's main page:

Note: AirPlay2 multi-room audio streaming is not supported: use shairport-sync for that.

fduncanh avatar Apr 28 '25 19:04 fduncanh

@micartey UxPlay has been updated to send a "501 Not Implemented" response to RTSP requests (such as ANNOUNCE) that it does not support. This will help to avoid future confusion about what it can do.

UxPlay works fine with pipewire . post any issues at the current development site http://github.com/FDH2/UxPlay

fduncanh avatar Apr 28 '25 23:04 fduncanh

try "uxplay -as pipewiresink" to output audio to pipewire

from the README: GStreamer also searches for the best "audiosink"; override its choice with -as . Choices on Linux include pulsesink, alsasink, pipewiresink, oss4sink; see what is available with gst-inspect-1.0 | grep sink | grep -e audio -e Audio.

fduncanh avatar Apr 29 '25 00:04 fduncanh

Maybe my issues is somewhat confusing. I tried to use wireplump to stream the audio to another device that was using UxPlay but it only outputted sound when I used my IPhone and not my other Linux device that streamed audio via wireplump

micartey avatar Apr 30 '25 20:04 micartey

Uxplay is designed to accept encrypted airplay audio/video from iOS or macOS clients, decrypt them, and render them on the server (It also accepts from a windows client called AirMyPc that emulates a iOS client) So it works with your iphone, but not wireplump. The current development version on http://github.com/FDH2/UxPlay will now respond to wireplump "ANNOUNCE" RTSP requests with the correct "not supported" response, which was missing when you tried it.

An audio-only Airplay server that can be used for multi-room audio (no video) is https://github.com/mikebrady/shairport-sync That could probably (?) handle your "wireplump" (?) audio stream

fduncanh avatar Apr 30 '25 20:04 fduncanh