Code Monkey home page Code Monkey logo

rpiplay's Introduction

Introduction

An open-source implementation of an AirPlay mirroring server for the Raspberry Pi. The goal is to make it run smoothly even on a Raspberry Pi Zero.

State

Screen mirroring and audio works for iOS 9 or newer. Recent macOS versions also seem to be compatible. The GPU is used for decoding the h264 video stream. The Pi has no hardware acceleration for audio (AirPlay mirroring uses AAC), so the FDK-AAC decoder is used for that.

Both audio and video work fine on a Raspberry Pi 3B+ and a Raspberry Pi Zero, though playback is a bit smoother on the 3B+.

For best performance:

  • Use a wired network connection
  • Compile with -O3 (cmake --DCMAKE_CXX_FLAGS="-O3" --DCMAKE_C_FLAGS="-O3" ..)
  • Make sure the DUMP flags are not active
  • Make sure you don't use the -d debug log flag
  • Make sure no other demanding tasks are running (this is particularly important for audio on the Pi Zero)

By using OpenSSL for AES decryption, I was able to speed up the decryption of video packets from up to 0.2 seconds to up to 0.007 seconds for large packets (On the Pi Zero). Average is now more like 0.002 seconds.

There still are some minor issues. Have a look at the TODO list below.

RPiPlay might not be suitable for remote video playback, as it lacks a dedicated component for that: It seems like AirPlay on an AppleTV effectively runs a web server on the device and sends the URL to the AppleTV, thus avoiding the re-encoding of the video. For rough details, refer to the (mostly obsolete) inofficial AirPlay specification.

Building

The following packages are required for building on Raspbian:

  • cmake (for the build system)
  • libavahi-compat-libdnssd-dev (for the bonjour registration)
  • libplist-dev (for plist handling)
  • libssl-dev (for crypto primitives)
  • ilclient and Broadcom's OpenMAX stack as present in /opt/vc in Raspbian.

For downloading the code, use these commands:

git clone https://github.com/FD-/RPiPlay.git
cd RPiPlay

For building on a fresh Raspbian Stretch or Buster install, these steps should be run:

sudo apt-get install cmake
sudo apt-get install libavahi-compat-libdnssd-dev
sudo apt-get install libplist-dev
sudo apt-get install libssl-dev
mkdir build
cd build
cmake ..
make -j

GCC 5 or later is required.

Building on desktop Linux:

For building on desktop linux, follow these steps as per your distribution:

Ubuntu 18.04 or 20.04

sudo apt-get install cmake libavahi-compat-libdnssd-dev libplist-dev libssl-dev \
    libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-libav \
    gstreamer1.0-vaapi gstreamer1.0-plugins-bad
mkdir build
cd build
cmake ..
make

Fedora 33

sudo dnf install cmake avahi-compat-libdns_sd-devel libplist-devel openssl-devel \
    gstreamer1-plugins-base-devel gstreamer1-libav gstreamer1-vaapi \
    gstreamer1-plugins-bad-free
mkdir build
cd build
cmake ..
make

Note: The -b, -r, -l, and -a options are not supported with the gstreamer renderer.

Global installation

After building, to install the executable on the system permanently (so it can be run from anywhere), simply run the following command:

sudo make install

Usage

Start the rpiplay executable and an AirPlay mirror target device will appear in the network. At the moment, these options are implemented:

-n name: Specify the network name of the AirPlay server.

-b (on|auto|off): Show black background always, only during active connection, or never.

-r (90|180|270): Specify image rotation in multiples of 90 degrees.

-f (horiz|vert|both): Specify image flipping.

-l: Enables low-latency mode. Low-latency mode reduces latency by effectively rendering audio and video frames as soon as they are received, ignoring the associated timestamps. As a side effect, playback will be choppy and audio-video sync will be noticably off.

-a (hdmi|analog|off): Set audio output device

-vr renderer: Select a video renderer to use (rpi, gstreamer, or dummy)

-ar renderer: Select an audio renderer to use (rpi, gstreamer, or dummy)

-d: Enables debug logging. Will lead to choppy playback due to heavy console output.

-v/-h: Displays short help and version information.

Disclaimer

All the resources in this repository are written using only freely available information from the internet. The code and related resources are meant for educational purposes only. It is the responsibility of the user to make sure all local laws are adhered to.

This project makes use of a third-party GPL library for handling FairPlay. The legal status of that library is unclear. Should you be a representative of Apple and have any objections against the legality of the library and its use in this project, please contact me and I'll take the appropriate steps.

Given the large number of third-party AirPlay receivers (mostly closed-source) available for purchase, it is my understanding that an open source implementation of the same functionality wouldn't violate any of Apple's rights either.

Authors

The code in this repository accumulated from various sources over time. Here is my attempt at listing the various authors and the components they created:

  • dsafa22: Created an AirPlay 2 mirroring server(seems gone now) for Android based on ShairPlay. This project is basically a port of dsafa22's code to the Raspberry Pi, utilizing OpenMAX and OpenSSL for better performance on the Pi. All code in lib/ concerning mirroring is dsafa22's work. License: GNU LGPLv2.1+
  • Juho Vähä-Herttua and contributors: Created an AirPlay audio server called ShairPlay, including support for Fairplay based on PlayFair. Most of the code in lib/ originally stems from this project. License: GNU LGPLv2.1+
  • EstebanKubata: Created a FairPlay library called PlayFair. Located in the lib/playfair folder. License: GNU GPL
  • Joyent, Inc and contributors: Created an http library called llhttp. Located at lib/llhttp/. License: MIT
  • Team XBMC: Managed to show a black background for OpenMAX video rendering. This code is used in the video renderer. License: GNU GPL
  • Alex Izvorski and contributors: Wrote h264bitstream, a library for manipulation h264 streams. Used for reducing delay in the Raspberry Pi video pipeline. Located in the renderers/h264-bitstream folder. License: GNU LGPLv2.1

Contributing

I'm afraid I won't have time to regularly maintain this project. Instead, I'm hoping this project can be improved in a community effort. I'll fix and add as much as I need for personal use, and I count on you to do the same!

Your contributions are more than welcome!

Todo

  • Bug: Sometimes cannot be stopped?

Changelog

Version 1.2

  • Blank screen after connection stopped

Version 1.1

  • Now audio and video work on Raspberry Pi Zero. I don't know what exactly did the trick, but static compilation seems to have helped.
  • Smoother video due to clock syncing
  • Correct lip-sync due to clock syncing
  • Lower latency due to injecting max_dec_frame_buffering into SPS NAL
  • Disabled debug logging by default
  • Added command line flag for debug logging
  • Added command line flag for unsynchronized low-latency mode
  • Bug fixes

AirPlay protocol versions

For multiple reasons, it's very difficult to clearly define the protocol names and versions of the components that make up the AirPlay streaming system. In fact, it seems like the AirPlay version number used for marketing differs from that used in the actual implementation. In order to tidy up this whole mess a bit, I did a little research that I'd like to summarize here:

The very origin of the AirPlay protocol suite was launched as AirTunes sometime around 2004. It allowed to stream audio from iTunes to an AirPort Express station. Internally, the name of the protocol that was used was RAOP, or Remote Audio Output Protocol. It seems already back then, the protocol involved AES encryption. A public key was needed for encrypting the audio sent to an AirPort Express, and the private key was needed for receiving the protocol (ie used in the AirPort Express to decrypt the stream). Already in 2004, the public key was reverse-engineered, so that third-party sender applications were developed.

Some time around 2008, the protocol was revised and named AirTunes 2. It seems the changes primarily concerned timing. By 2009, the new protocol was reverse-engineered and documented.

When the Apple TV 2nd generation was introduced in 2010, it received support for the AirTunes protocol. However, because this device allowed playback of visual content, the protocol was extended and renamed AirPlay. It was now possible to stream photo slideshows and videos. Shortly after the release of the Apple TV 2nd generation, AirPlay support for iOS was included in the iOS 4.2 update. It seems like at that point, the audio stream was still actually using the same AirTunes 2 protocol as described above. The video and photo streams were added as a whole new protocol based on HTTP, pretty much independent from the audio stream. Soon, the first curious developers began to investigate how it worked. Their conclusion was that visual content is streamed unencrypted.

In April 2011, a talented hacker extracted the AirPlay private key from an AirPort Express. This meant that finally, third-party developers were able to also build AirPlay reveiver (server) programs.

For iOS 5, released in 2011, Apple added a new protocol to the AirPlay suite: AirPlay mirroring. Initial investigators found this new protocol used encryption in order to protect the transferred video data.

By 2012, most of AirPlay's protocols had been reverse-engineered and documented. At this point, audio still used the AirTunes 2 protocol from around 2008, video, photos and mirroring still used their respective protocols in an unmodified form, so you could still speak of AirPlay 1 (building upon AirTunes 2). The Airplay server running on the Apple TV reported as version 130. The setup of AirPlay mirroring used the xml format, in particular a stream.xml file. Additionally, it seems like the actual audio data is using the ALAC codec for audio-only (AirTunes 2) streaming and AAC for mirror audio. At least these different formats were used in later iOS versions.

Sometime before iOS 9, the protocol for mirroring was slightly modified: Instead of the "stream.xml" API endpoint, the same information could also be querried in binary plist form, just by changing the API endpoint to "stream", without any extension. I wasn't able to figure out which of these was actually used by what specific client / server versions.

For iOS 9, Apple made considerable changes to the AirPlay protocol in 2015, including audio and mirroring. Apparently, the audio protocol was only slightly modified, and a minor change restored compatibility. For mirroring, an additional pairing phase was added to the connection establishment procedure, consisting of pair-setup and pair-verify calls. Seemingly, these were added in order to simplify usage with devices that are connected frequently. Pair-setup is used only the first time an iOS device connects to an AirPlay receiver. The generated cryptographic binding can be used for pair-verify in later sessions. Additionally, the stream / stream.xml endpoint was replaced with the info endpoint (only available as binary plist AFAICT). As of iOS 12, the protocol introduced with iOS 9 was still supported with only slight modifications, albeit as a legacy mode. While iOS 9 used two SETUP calls (one for general connection and mirroring video, and one for audio), iOS 12 legacy mode uses 3 SETUP calls (one for general connection (timing and events), one for mirroring video, one for audio).

The release of tvOS 10.2 broke many third-party AirPlay sender (client) programs in 2017. The reason was that it was now mandatory to perform device verification via a pin in order to stream content to an Apple TV. The functionality had been in the protocol before, but was not mandatory. Some discussion about the new scheme can be found here. A full specification of the pairing and authentication protocol was made available on GitHub. At that point, tvOS 10.2 reported as AirTunes/320.20.

In tvOS 11, the reported server version was increased to 350.92.4.

iOS 11.4 added AirPlay 2 in 2018. Although extensively covered by the media, it's not entirely clear what changes specifically Apple has made protocol-wise.

From captures of the traffic between an iOS device running iOS 12.2 and an AppleTV running tvOS 12.2.1, one can see that the communication on the main mirroring HTTP connection is encrypted after the initial handshake. This could theoretically be part of the new AirPlay 2 protocol. The AppleTV running tvOS 12.2.1 identifies as AirTunes/380.20.1. When connecting from the same iOS device to an AppleTV 3rd generation (reporting as AirTunes/220.68), the communication is still visible in plain. From the log messages that the iOS device produces when connected to an AppleTV 3rd generation, it becomes apparent that the iOS device is treating this plain protocol as the legacy protocol (as originally introduced with iOS 9). Further research showed that at the moment, all available third-party AirPlay mirroring receivers (servers) are using this legacy protocol, including the open source implementation of dsafa22, which is the base for RPiPlay. Given Apple considers this a legacy protocol, it can be expected to be removed entirely in the future. This means that all third-party AirPlay receivers will have to be updated to the new (fully encrypted) protocol at some point.

More specifically, the encryption starts after the pair-verify handshake completed, so the fp-setup handshake is already happening encrypted. Judging from the encryption scheme for AirPlay video (aka HLS Relay), likely two AES GCM 128 ciphers are used on the socket communication (one for sending, one for receiving). However, I have no idea how the keys are derived from the handshake data.

rpiplay's People

Contributors

antimof avatar bedrin avatar dougg3 avatar dsafa22 avatar fd- avatar fduncanh avatar jaslogic avatar ninjaz5736 avatar pallas avatar soapgentoo avatar stevenhickson avatar taoyuan avatar tripplet avatar ysdoho avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rpiplay's Issues

aacDecoder DecodeFrame error

Hi, I build it on raspberry 3B+, but when I play music from iphone X (iOS 13 beta), it got this error

Accepted IPv4 client on socket 15
Local: 192.168.11.151
Remote: 192.168.11.235
Accepted IPv4 client on socket 17
Local: 192.168.11.151
Remote: 192.168.11.235
raop_rtp starting audio
Got image data of 87061 bytes
raop_ntp receive timeout
raop_rtp starting audio
Got image data of 87061 bytes
Got metadata of 162 bytes
Got metadata of 141 bytes
aacDecoder_DecodeFrame error : 0x4002
aacDecoder_DecodeFrame error : 0x400c
aacDecoder_DecodeFrame error : 0x400c
aacDecoder_DecodeFrame error : 0x400c
aacDecoder_DecodeFrame error : 0x400c
Got image data of 87061 bytes
Got metadata of 162 bytes
aacDecoder_DecodeFrame error : 0x4002
Got metadata of 129 bytes
Got metadata of 129 bytes

and when I using iphone 6s (iOS 12.4), it got this error

Initialized server socket(s)
*** WARNING *** The program 'rpiplay' uses the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see http://0pointer.de/blog/projects/avahi-compat.html
Accepted IPv4 client on socket 15
Local: 192.168.11.151
Remote: 192.168.11.131
Accepted IPv4 client on socket 17
Local: 192.168.11.151
Remote: 192.168.11.131
raop_rtp starting audio
aacDecoder_DecodeFrame error : 0x5
rpiplay: malloc.c:2385: sysmalloc: Assertion `(old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)' failed.
[1] 5147 abort ./rpiplay

DAC support

Hi, I'm using a DAC (HiFiBerry+) and it looks like it doesn't work with RPiPlay. I would have guessed that RPiPlay uses ALSA as default audio device but it looks like it uses the internal hardware directly. Any chance to add ALSA support?

After stop mirroring it still show the last frame

After stoping mirroring, the last frame is still displayed, until a new connection is established or the the program is closed. I used the latest version.

Expectet behavior:
Don't show the last frame.

Devices:
iPhone(IOS 12.4 and 12.3)
raspberry pi 3b+

Log:
....
Handling request TEARDOWN with URL rtsp://192.168.0.67/4282327910622381556
httpd receiving on socket 15
Connection closed for socket 15
Destroying connection
httpd receiving on socket 18
Connection closed for socket 18
Destroying connection

Mirroring won't show up on Raspbian Desktop

Hi!

I have built the project and it starts as it should, but the output is not appering on my output monitor when I start mirroring.
I'm using Raspbian Desktop, should it work there or only works without a desktop environment?

ISO Image and Autoupdate

First of all, I would like to say a very cool project.
And thank you for closing this open source market gap.

It would be very cool to be able to download an ISO image of the current version that is preconfigured and, like many other projects, just need to be loaded onto an SD card to boot the RPi, also a service that runs in the background and to the Checking version and executing Updates if needed would also be desirable.

Thanks for the good work and keep it up.

Cmake error

Hello!
Thanks for this awesome work! I just discovered your tool and I wanted to use it with OSMC on my Pi 3B+. I use the OSMC 1st November update (I have just updated it before to know I was going to need your tool) and after followed your tuto on GitHub, this is the output I have after the cmake command:

root@osmc-Prentis:/home/osmc/RPiPlay/build# cmake ..
CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!

Am I missing something? Or is this because I use OSMC?

Thanks a lot!

Unable to configure options

I have followed all the instructions and I have been able to run the rpiplay executable. The only issue that I'm facing is the inability to provide the arguments to the executable.

No video with iOS13 / iPadOs (pi0w)

Hi

First let me say that it's an amazing project!

I'm currently trying to cast screen from an iPad Pro (v2) (iOS 12.3) but without success.
Also tried my iPhone 7+ (iOS 13.1) and iPad 2018 (13.1) without success.

But I've been able to cast from my macbook air (Mojave 10.14.6) and it works great. So i guess my install of RPiPlay is alright.

Console doesn't give much info, but the Airplay menu on the device say : "iPad -> RPiPlay" Music and show the Apple Music icon even if i never use that app (I'm a Spotify user).

I tried with and without the hdmi audio output as my usecase would actually not require any sound just screen mirror.

Here's the log when running with debug (Spotify playing on my iPhone) :

Any idea ?

pi@raspberrypi:~/RPiPlay/build $ ./rpiplay -b -a hdmi -d
> stream info: channel = 2	sample_rate = 44100	frame_size = 480	aot = 39	bitrate = 0
Initialized server socket(s)
*** WARNING *** The program 'rpiplay' uses the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see <http://0pointer.de/blog/projects/avahi-compat.html>
Accepted IPv4 client on socket 15
Local: 192.168.12.24
Remote: 192.168.12.36
httpd receiving on socket 15
conn_request
Handling request GET with URL /info
INFO len = -1286620972
httpd receiving on socket 15
conn_request
Handling request POST with URL /pair-setup
httpd receiving on socket 15
conn_request
Handling request POST with URL /pair-verify
httpd receiving on socket 15
conn_request
Handling request POST with URL /pair-verify
httpd receiving on socket 15
conn_request
Handling request POST with URL /fp-setup
httpd receiving on socket 15
conn_request
Handling request POST with URL /fp-setup
httpd receiving on socket 15
conn_request
Handling request SETUP with URL rtsp://192.168.12.24/11464370087663912438
DACP-ID: 2AA641442BB321A
Active-Remote: 2716497495
Transport: null
SETUP 1
eiv_len = 16
ekey_len = 72
fairplay_decrypt ret = 0
timing_rport = 62322
raop_ntp parse remote ip = 192.168.12.36
raop_ntp starting time
raop_rtp parse remote ip = 192.168.12.36
raop_rtp_mirror parse remote ip = 192.168.12.36
eport = 33759, tport = 55594
raop_ntp send_len = 32
raop_ntp receive time type_t packetlen = 32
raop_ntp sync correction = -1569863837653087
Accepted IPv4 client on socket 17
Local: 192.168.12.24
Remote: 192.168.12.36
httpd receiving on socket 15
conn_request
Handling request GET with URL /info
INFO len = -1286620972
httpd receiving on socket 15
conn_request
Handling request GET_PARAMETER with URL rtsp://192.168.12.24/11464370087663912438
httpd receiving on socket 15
conn_request
Handling request RECORD with URL rtsp://192.168.12.24/11464370087663912438
raop_handler_record
httpd receiving on socket 15
conn_request
Handling request SET_PARAMETER with URL rtsp://192.168.12.24/11464370087663912438
httpd receiving on socket 15
conn_request
Handling request SET_PARAMETER with URL rtsp://192.168.12.24/11464370087663912438
httpd receiving on socket 15
conn_request
Handling request SETUP with URL rtsp://192.168.12.24/11464370087663912438
DACP-ID: 2AA641442BB321A
Active-Remote: 2716497495
Transport: null
type = 96
raop_rtp starting audio
RAOP initialized success
httpd receiving on socket 15
conn_request
Handling request SET_PARAMETER with URL rtsp://192.168.12.24/11464370087663912438
raop_rtp type_c 0x54, packetlen = 20
raop_rtp sync: ntp=82513537801, local ntp: 1569946351190888, rtp=1941524933, rtp_next=1941613133
raop_rtp sync correction=-1569902325682204
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
raop_rtp type_c 0x54, packetlen = 20
raop_rtp sync: ntp=82513567594, local ntp: 1569946351220681, rtp=1941526247, rtp_next=1941614447
raop_rtp sync correction=2
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
raop_rtp audio: ntp = 1569946353220682, now = 1569946351257629, latency=-1963053, rtp=1941614447
Got AAC data of 32 bytes
raop_rtp audio: ntp = 1569946353228664, now = 1569946351264768, latency=-1963896, rtp=1941614799
Got AAC data of 32 bytes
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
raop_rtp audio: ntp = 1569946353236646, now = 1569946351288053, latency=-1948593, rtp=1941615151
Got AAC data of 32 bytes
raop_rtp audio: ntp = 1569946353244628, now = 1569946351291829, latency=-1952799, rtp=1941615503
Got AAC data of 32 bytes
raop_rtp audio: ntp = 1569946353252610, now = 1569946351298844, latency=-1953766, rtp=1941615855
Got AAC data of 32 bytes
raop_rtp audio: ntp = 1569946353260592, now = 1569946351318818, latency=-1941774, rtp=1941616207
Got AAC data of 32 bytes
raop_rtp audio: ntp = 1569946353268573, now = 1569946351322799, latency=-1945774, rtp=1941616559
Got AAC data of 32 bytes
raop_rtp audio: ntp = 1569946353276555, now = 1569946351330007, latency=-1946548, rtp=1941616911
Got AAC data of 32 bytes
raop_rtp audio: ntp = 1569946353284537, now = 1569946351335549, latency=-1948988, rtp=1941617263
Got AAC data of 32 bytes
raop_rtp audio: ntp = 1569946353292519, now = 1569946351343309, latency=-1949210, rtp=1941617615
Got AAC data of 32 bytes
raop_rtp audio: ntp = 1569946353300501, now = 1569946351349967, latency=-1950534, rtp=1941617967
Got AAC data of 32 bytes
raop_rtp audio: ntp = 1569946353308483, now = 1569946351360587, latency=-1947896, rtp=1941618319
Got AAC data of 32 bytes
raop_rtp audio: ntp = 1569946353316465, now = 1569946351365481, latency=-1950984, rtp=1941618671
Got AAC data of 32 bytes
raop_rtp audio: ntp = 1569946353324446, now = 1569946351369793, latency=-1954653, rtp=1941619023
Got AAC data of 32 bytes
raop_rtp audio: ntp = 1569946353332428, now = 1569946351378660, latency=-1953768, rtp=1941619375
Got AAC data of 32 bytes
raop_rtp audio: ntp = 1569946353340410, now = 1569946351382878, latency=-1957532, rtp=1941619727
Got AAC data of 32 bytes
raop_rtp audio: ntp = 1569946353348392, now = 1569946351387168, latency=-1961224, rtp=1941620079
Got AAC data of 32 bytes
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
conn_request
Handling request SET_PARAMETER with URL rtsp://192.168.12.24/11464370087663912438
Got image data of 214763 bytes
httpd receiving on socket 15
conn_request
Handling request FLUSH with URL rtsp://192.168.12.24/11464370087663912438
Flush with RTP-Info: seq=55574;rtptime=1941619957
httpd receiving on socket 15
conn_request
Handling request SET_PARAMETER with URL rtsp://192.168.12.24/11464370087663912438
httpd receiving on socket 15
conn_request
Handling request SET_PARAMETER with URL rtsp://192.168.12.24/11464370087663912438
Got metadata of 173 bytes
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
Request not complete, waiting for more data...
httpd receiving on socket 15
conn_request
Handling request SET_PARAMETER with URL rtsp://192.168.12.24/11464370087663912438
Got image data of 214763 bytes
httpd receiving on socket 15
conn_request
Handling request SET_PARAMETER with URL rtsp://192.168.12.24/11464370087663912438
httpd receiving on socket 15
conn_request
Handling request SET_PARAMETER with URL rtsp://192.168.12.24/11464370087663912438
Got metadata of 173 bytes
httpd receiving on socket 15
conn_request
Handling request POST with URL /feedback
raop_handler_feedback
raop_ntp send_len = 32
raop_ntp receive timeout
raop_ntp exiting thread
httpd receiving on socket 15
conn_request
Handling request POST with URL /feedback
raop_handler_feedback
httpd receiving on socket 15
conn_request
Handling request POST with URL /feedback
raop_handler_feedback
httpd receiving on socket 15
conn_request
Handling request POST with URL /feedback
raop_handler_feedback
httpd receiving on socket 15
conn_request
Handling request POST with URL /feedback
raop_handler_feedback
httpd receiving on socket 15
conn_request
Handling request POST with URL /feedback
raop_handler_feedback
httpd receiving on socket 15
conn_request
Handling request POST with URL /feedback
raop_handler_feedback

Can not make

Безымянный
Invalid format libbrcmglesv2.so . Help please. Try it on raspberry (raspbian) and ubuntu 18.04 on my PC.

RPiPlay doesn't show in Screen Mirroring on iOS 13.1.1

Hello,

I've built RPiPlay with the recommended cmake flags in your README and started it. It works pretty well on my MBP with macOS Mojave, but my iPhone XS with the latest iOS version (13.1.1) doesn't find any screen mirroring target (I go through the Control Center).

Is there any known issue on that version of iOS?
My launch command is : rpiplay -a hdmi and it's plugged to a TV.
They're on the same wifi network as well.

Thanks!

Could not init video renderer

Error: Could not init video renderer.

On latest Raspbian Buster and Raspberry Pi 4.
How should I try and debug this ?

Great job. Everything just worked.

I don't have an issue at all, but I didn't know what the best way to thank you was.

I just built this on my Rasberry Pi 3B+. Installation was easy. Hooked it up to my TV and it just worked.

I tried with my iPhone XR and my MacBook Pro, and both just worked extremely fast with barely any lag at all. I could run both video and audio. Honestly blew my mind.

I'm so glad I discovered this. Keep up the good work!

( Feel free to close this as resolved ;-) )

Custom resolution for ultra wide monitor

Thanks a lot @FD- for your efforts! I'm trying to use RPiPlay with an ultra wide monitor but I'm unable to set a desired resolution.

Device: RPi 4
GPU memory: 256MB
Casting device: 2019 MBP 13
Monitor: LG Ultrawide @2560x1080

The resolution remains locked at 1080p regardless of the RPi HDMI port. The only difference being HDMI port 1 introduces black bars on the side and HDMI port 2 stretches the stream to fill the whole screen.

Unfortunately updating the variables plist_t displays_0_width_node and plist_t displays_0_width_pixels_node to 2560 under the file lib/raop_handlers.h didn't help, please advice.

The program 'rpiplay' uses the Apple Bonjour compatibility layer of Avahi.

Initialized server socket(s)
*** WARNING *** The program 'rpiplay' uses the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see http://0pointer.de/avahi-compat?s=libdns_sd&e=rpiplay

How to resolve this? The link doesn't work. I did follow the build instructions and run all from my Raspberry Pi 3.

Furthermore when mirroring my Apple Macbook (Catalina) it only mirrors the video. The audio doesn't work somehow. I'm happy to provide any info required to resolve that.

My audio is using the hdmi connection to my television. This works for Kodi which also runs on my raspberry pi.

I also tried from my iphone 6 to mirror the screen but it doesn't detect this airplay device. Any thoughts on that?

As soon something hangs, only way to recover is a kill -9. Same as someone else mentions in a another issue.

Error in setup phase

i follow the readme.md file for first setup but i receive this error

Found OpenSSL: /usr/lib/arm-linux-gnueabihf/libcrypto.so (found version "1.1.1d")
-- Configuring done
CMake Error at renderers/CMakeLists.txt:26 (add_library):
No SOURCES given to target: ilclient

-- Build files have been written to: /home/pirate/RPiPlay/build

YouTube not streaming video

If i want to stream a video from YouTube from my iPhone to thé raspberry, the loading screen remains. I can't see a video on the Raspberry pi 3

Any airplay 2 support in the works?

This has worked beautifully and perfectly will mirror videos via my plex server. Is there any known info on getting appleTV, netflix, etc. working through the raspberry pi?

Disconnecting Airplay hangs after playing a video

Hi,

I use my iPhone to connect to AirPlay from the control center. After I play any video (for example from yahoo.com) and try to stop screen mirroring from the iPhone, rpiplay hangs. I narrowed it down to this function in raop_rtp.c

void
raop_rtp_stop(raop_rtp_t *raop_rtp)
{
    assert(raop_rtp);

    /* Check that we are running and thread is not
     * joined (should never be while still running) */
    MUTEX_LOCK(raop_rtp->run_mutex);
    if (!raop_rtp->running || raop_rtp->joined) {
        MUTEX_UNLOCK(raop_rtp->run_mutex);
        return;
    }
    raop_rtp->running = 0;
    MUTEX_UNLOCK(raop_rtp->run_mutex);

    /* Join the thread */
    THREAD_JOIN(raop_rtp->thread);

    if (raop_rtp->csock != -1) closesocket(raop_rtp->csock);
    if (raop_rtp->dsock != -1) closesocket(raop_rtp->dsock);

    /* Flush buffer into initial state */
    raop_buffer_flush(raop_rtp->buffer, -1);

    /* Mark thread as joined */
    MUTEX_LOCK(raop_rtp->run_mutex);
    raop_rtp->joined = 1;
    MUTEX_UNLOCK(raop_rtp->run_mutex);
}

it waits on this line;

THREAD_JOIN(raop_rtp->thread);

If I comment out all the synchronization code as below, it works fine but I am not sure if there are any other impact because of that.

void
raop_rtp_stop(raop_rtp_t *raop_rtp)
{
    assert(raop_rtp);

    /* Check that we are running and thread is not
     * joined (should never be while still running) */
//    MUTEX_LOCK(raop_rtp->run_mutex);
//    if (!raop_rtp->running || raop_rtp->joined) {
//        MUTEX_UNLOCK(raop_rtp->run_mutex);
//        return;
//    }
    raop_rtp->running = 0;
//    MUTEX_UNLOCK(raop_rtp->run_mutex);
//
//    /* Join the thread */
//    THREAD_JOIN(raop_rtp->thread);

    if (raop_rtp->csock != -1) closesocket(raop_rtp->csock);
    if (raop_rtp->dsock != -1) closesocket(raop_rtp->dsock);

    /* Flush buffer into initial state */
    raop_buffer_flush(raop_rtp->buffer, -1);

    /* Mark thread as joined */
//    MUTEX_LOCK(raop_rtp->run_mutex);
//    raop_rtp->joined = 1;
//    MUTEX_UNLOCK(raop_rtp->run_mutex);
}

Video in Powerpoint Presentation not playing

I plan to use RPiPlay for presentations whereby my iPhone would stream Powerpoint presentations (using Microsoft's Powerpoint iOS app - https://apps.apple.com/us/app/microsoft-powerpoint/id586449534) over Airplay. It's a pretty interesting use case because then I wouldn't need to bring a laptop along to all my presentations and would be able to hold my phone and control the presentation without having to stand behind a laptop.

I've generally gotten it to work, slides and transitions between slides look great - but playing videos embedded in the presentation doesn't work. When pushing the play button of a video within a Powerpoint slide the playback doesn't start (the video stays at 00:00).
When not connected over Airplay the the video plays fine on the phone's screen.

I see that there is another issue regarding video streaming (https://github.com/FD-/RPiPlay/issues/7) but it doesn't seem connected because when streaming a video from Powerpoint the video has to stream from the iPhone directly (i.e not from a URL).

My setup is:

  1. iPhone 8
  2. iOS 13.1.3
  3. Raspberry Pi 3 Model B+
  4. Raspbian Buster Lite (https://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2019-09-30/2019-09-26-raspbian-buster-lite.zip)

I'd also like to give you whatever other info you'd need (logs etc.). If so, some guidance would be needed to get that info.

osx screen mirror stream width & height issue (rpi4)

Hi, GREAT WORK there!
Although is it normal that i try to stream a 1080p picture (or larger) from osx, the debug said:
width_source = 1804
height_source = 1016
width = 1804
height = 1016

even if i try with 720p:
width_source = 1280
height_source = 720
width = 1804
height = 1016

Thanks in advance!
Cheers

any android/windows client that works ?

hello,

don't have a iOS device. I would like to mirror my android device and windows PC.

but everything i try on android brings a "connection error" (for example https://play.google.com/store/apps/details?id=com.splashtop.m360.tx&hl=en)

on windows i tried 5kplayer. But the 5kplayer does not even find the RPiPlay.

So it there any android/windows program you know of, that works with RPiPlay ?

or is the problem related to the waring i get, when i start:
pi@raspberrypi:~/RPiPlay/build $ ./rpiplay -d

stream info: channel = 2 sample_rate = 44100 frame_size = 480 aot = 39 bitrate = 0
Initialized server socket(s)
*** WARNING *** The program 'rpiplay' uses the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see http://0pointer.de/blog/projects/avahi-compat.html

Not working for MacOS Catalina

Hi guys!

I've been trying to setup the RPiPlay on Raspberry PI 3, for my home Mac with the new version of macOS Catalina (10.15). I've built the project with no problem, but when I run the rpiplay command, my Mac sees the AirPlay server, but it cannot connect.

Output from my console:

./rpiplay -n RPI -a hdmi -b
Initialized server socket(s)
*** WARNING *** The program 'rpiplay' uses the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see <http://0pointer.de/blog/projects/avahi-compat.html>

If I try to connect over AirPlay, nothing happens, and my Mac gives me a Could not connect to... message.

Thanks,
Blaz

Error after make command

Hello!
I enter these commands
sudo apt-get install cmake
sudo apt-get install libavahi-compat-libdnssd-dev
sudo apt-get install libssl-dev
mkdir build
cd build
cmake ..
make

And after make command I see this:

renderers/h264-bitstream/CMakeFiles/h264-bitstream.dir/build.make:62: recipe for target 'renderers/h264-bitstream/CMakeFiles/h264-bitstream.dir/h264_stream.c.o' failed
make[2]: *** [renderers/h264-bitstream/CMakeFiles/h264-bitstream.dir/h264_stream.c.o] Error 1
CMakeFiles/Makefile2:569: recipe for target 'renderers/h264-bitstream/CMakeFiles/h264-bitstream.dir/all' failed
make[1]: *** [renderers/h264-bitstream/CMakeFiles/h264-bitstream.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

And RPiPlay not starting! What I need to do to fix it?

Unable to connect to "RPiPlay"

First of all, thanks a lot for this repository and your work!

But unfortunately I can't connect my Mac Book (MacBook Pro (Retina, 13-inch, Mid 2014), 10.14.6 (18G1012)) nor my iPhone (iPhone 6 Plus, 12.4.3) to the Apple TV service. E.g.

Screenshot 2019-11-23 at 11 26 47

Steps to reproduce:

  • flashing and setting up a new Raspberry Pi 3 Model B Version 1.2
  • add the raspberry to the wifi
  • build the service as described https://github.com/FD-/RPiPlay#building
  • execute ./rpiplay -d
  • wait a few minutes (only to make sure the service is running properly)
  • try to connect to the Apple TV

The debug output when I try to connect:

root@raspberrypi:/home/pi/RPiPlay/build# ./rpiplay -d
> stream info: channel = 2	sample_rate = 44100	frame_size = 480	aot = 39	bitrate = 0
Initialized server socket(s)
*** WARNING *** The program 'rpiplay' uses the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see <http://0pointer.de/blog/projects/avahi-compat.html>

Problem with iOS - Photos App

Hi,
I recently used rpiplay to show photos on my TV using the iOS Photos app.
I'm using iOS 13.2.3.
After some time it just stops working, the TV image just hangs, trying to reconnect also does not work.
It seems to be triggered by showing video from the photos app or displaying live photos but not always.
After rpiplay hangs stopping with Ctrl+C also does not work.
Only "kill -9" seems to work then.
After restarting RPiPlay and connection again everything is fine again.

Aside from this problem, thanks for the awesome work.

Full log here, last lines:

...
Got h264 data of 43056 bytes
Video delay is -20839
raop_rtp_mirror video ntp = 1574506718580821, now = 1574506718513865, latency = -66956
Got h264 data of 3353 bytes
Video delay is -66480
raop_rtp_mirror video ntp = 1574506718597487, now = 1574506718583738, latency = -13749
Got h264 data of 49743 bytes
Video delay is -11904
raop_rtp_mirror video ntp = 1574506718614154, now = 1574506718586835, latency = -27319
Got h264 data of 41264 bytes
Video delay is -25962
raop_rtp_mirror video ntp = 1574506718630821, now = 1574506718601092, latency = -29729
Got h264 data of 49183 bytes
Video delay is -28102
raop_rtp_mirror video ntp = 1574506718747487, now = 1574506718707646, latency = -39841
Got h264 data of 50959 bytes
Video delay is -36800
raop_rtp_mirror video ntp = 1574506718764154, now = 1574506718725078, latency = -39076
Got h264 data of 58212 bytes
Video delay is -37502
raop_rtp_mirror video ntp = 1574506718764154, now = 1574506718726773, latency = -37381
Got h264 data of 10565 bytes
Video delay is -36957
raop_rtp_mirror width_source = 1920.000000 height_source = 1080.000000 width = 1920.000000 height = 1080.000000
raop_rtp_mirror sps size = 18
raop_rtp_mirror pps size = 4
Got h264 data of 30 bytes
Injecting max_dec_frame_buffering
Video delay is 1574506718777595
raop_rtp_mirror tcp socket closed
^CStopping...
^C^C^C

YouTube steaming

If i want to stream a video from YouTube from my iPhone to thé raspberry, the loading screen remains. I can't see a video on the Raspberry pi 3

RPI 4 Video is not started after connection

I can start connection on RPI4 (clean newest Raspbian) and I can connect using iPhone X (12.4.1) But video frame is not showed.

./rpiplay -n RPI -a hdmi
Initialized server socket(s)
*** WARNING *** The program 'rpiplay' uses the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see http://0pointer.de/blog/projects/avahi-compat.html
Accepted IPv4 client on socket 15
Local: 192.168.2.108
Remote: 192.168.2.100
Accepted IPv4 client on socket 17
Local: 192.168.2.108
Remote: 192.168.2.100
raop_rtp_mirror starting mirroring
raop_ntp receive timeout
raop_rtp starting audio

But when I run it with debug I can see that is is receiving video:
raop_rtp_mirror video ntp = 1565522316639287, now = 1565522316634159, latency = -5128
Got h264 data of 7205 bytes
Video delay is -4705

build: Cannot determine link language for target "ilclient"

First: Great project!

Second: you also need:
sudo apt-get install build-essential

Third:
I am stuck with

CMake Error: Cannot determine link language for target "ilclient".
CMake Error: CMake can not determine linker language for target: ilclient

... and subsequently
make[2]: *** No rule to make target 'renderers/CMakeFiles/ilclient.dir/build'. Stop.

I am trying to compile on a raspberry with OSMC. What can I do to make it happen?

payload_type == 5 frames are not processed

I am seeing few frames with payload_type == 5 in

static THREAD_RETVAL
raop_rtp_mirror_thread(void *arg)

we process only of types 0 and 1. As a result, iPhone screens are not fully rendered at the end. Particularly when we scroll horizontally between home screens.

In one of the home screens, there are few payload_type==55 frames and then one or two payload_type==0 frames come in. I have attached a file with a couple of decrypted frames of type 5 if that helps to debug.
out5_h264.txt

Idle screen support instead of pitch black screen

Hey. First of all, I'm really enjoying your project. It's working so well and smoothly as a screen mirroring server :)

This is not for a reporting issue, but for a feature request.

It will be awesome If you can add idle screen support with useful information, Something like Airplay server name, Connected Wi-Fi name, or even time and date.

Current pitch black idle screen is okay, but sometimes it makes be confused that I turned off my TV or not...

Error with cmake: library ilclient without any source files

I get this when using cmake.
Any help?
Thanks

- The C compiler identification is GNU 6.3.0
-- The CXX compiler identification is GNU 6.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found OpenSSL: /usr/lib/arm-linux-gnueabihf/libssl.so;/usr/lib/arm-linux-gnueabihf/libcrypto.so (found version "1.1.0k") 
You have called ADD_LIBRARY for library ilclient without any source files. This typically indicates a problem with your CMakeLists.txt file
-- Configuring done
CMake Error: Cannot determine link language for target "ilclient".
CMake Error: CMake can not determine linker language for target: ilclient
-- Generating done

Casting audio only doesn't work

Whenever i try to play locally stored music on my iPad with the music app via Airplay to my TV i get no sound.

Could you please point me to the right direction - any help would be appreciated !!!

The details:
iPad 6th Generation, 32 GB, iOS 12.4
Raspberry Pi 3+, Raspbian Buster - Patchlevel as of July 27th 2019
RPiPlay v 1.1 - with edited raop_rtp_mirror.c as stated on https://github.com/FD-/RPiPlay/issues/1
logfile.txt

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.

I have an error when running cMake,
I am running this on a docker container of stretch. here is the console output :

You have called ADD_LIBRARY for library ilclient without any source files. This typically indicates a problem with your CMakeLists.txt file
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
BCM_HOST
    linked by target "ilclient" in directory /home/RPPLAY/RPiPlay/renderers
BRCM_EGL
    linked by target "ilclient" in directory /home/RPPLAY/RPiPlay/renderers
BRCM_GLES_V2
    linked by target "ilclient" in directory /home/RPPLAY/RPiPlay/renderers
OPENMAXIL
    linked by target "ilclient" in directory /home/RPPLAY/RPiPlay/renderers
VCHIQ_ARM
    linked by target "ilclient" in directory /home/RPPLAY/RPiPlay/renderers
VCOS
    linked by target "ilclient" in directory /home/RPPLAY/RPiPlay/renderers

-- Configuring incomplete, errors occurred!
See also "/home/RPPLAY/RPiPlay/build/CMakeFiles/CMakeOutput.log".
See also "/home/RPPLAY/RPiPlay/build/CMakeFiles/CMakeError.log".

doesn't Iclient come with raspbian integrated ?

3rd party Airplay streamers do not work

Have successfully compiled and installed RPiPlay on my raspberry pi 3b+ using a fresh install of buster off the raspberry pi website. It works great from my iPhone on iOS 13 and my MacBook Pro using Mojave, but the program fails when I try to stream using Airparrot 2 on my Windows 10 laptop. Here is the output log:
Initialized server socket(s)
*** WARNING *** The program 'rpiplay' uses the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see <http://0pointer.de/blog/projects/avahi-compat.html>
Accepted IPv4 client on socket 15
Local: 100.72.41.47
Remote: 100.72.41.41
raop_rtp_mirror starting mirroring
Accepted IPv4 client on socket 18
Local: 100.72.41.47
Remote: 100.72.41.41
rpiplay: /home/pi/RPiPlay/lib/raop_rtp_mirror.c:303: raop_rtp_mirror_thread: Assertion `nc_len > 0' failed.
after that the program exits.

Multiple devices

if I try to connect 2 raspberry with rpi play on the same network, with different names, one of the two stops working, but only if started at boot.
if they are started manualmente work correctly

Problem with start

Hello,
I've an RPI 4 with 2GB RAM
I've done all that, which was written in the README but after when I start with "./rpiplay -n RPI"
Only this comes:
Initialized server socket(s)
*** WARNING *** The program 'rpiplay' uses the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see http://0pointer.de/blog/projects/avahi-compat.html

Thank you for your support

RTSP H264 feed to ffmpeg

Thanks for this amazing opensource project. I was wondering if instead of rendering the feed locally on the pi, the h264 rtsp video feed that is negotiated during the mirroring is available to something like ffmpeg to send to a remote RTMP/RTSP server .

Thoughts?

Password in airplay

Hello!

Is this possible insert a password in rpiplay? Only who knows the password mirroring to rpiplay.

You should add a PayPal donate!!!

Thanks by your job!

crash under 4K resolution

First I would like to thank you for making this great project!

The server works great under 1080p resolution. When I tried to set the output of my raspberry Pi 3 to be 4K, the raspbian gui runs fine, and the rpiplay server can start. But when I tried to cast the screen to the RPiPlay, the system crashed.

Is it because 4K is not support on rpi 3B, or RPiPlay does not support 4K mirroring?

Thanks

Generic linux support?

Thanks for showing that it's getting possible to mirror my ipad to linux device. Yeah I have an unused rbpi 2, but I already have a x86 linux server permanently attached to my TV. I hope I can use the server, instead of finding a SD card, and grab a set of keyboard and mouse, and setup the pi, just for rpiplay.

It's obvious the linux server does not have required hardware/firmware/libraries. There is only a dummy renderer as I edited the renderers/CMakeLists.txt. Any solution to that?

Can't reconnect

I can only connect and mirror screen one time (works great!).
Connecting the second time only shows black screen.

if I want to reconnect I have to restart RPiPlay to be able to mirror again.

Don't know where and how to debug, but please provide directions and I will try my best.

aacDecoder_DecodeFrame error : 0x400c

Hello,
thank you for the great software, it works perfect in screen mirroring mode.
I've got only some issues trying to mirror spotify app to the AirPlay.
In the console I'm getting this output:
aacDecoder_DecodeFrame error : 0x400c
The sound's not playing.

Zrzut ekranu 2019-09-18 o 22 16 36

BR,
Pawel

Mirror stop

After building this project, i mirror from my iphone (iOS 12.4) desktop to raspberry pi 3b+, but the picture is stuck at the image below.

Is there something i am doing wrong,thanks.

微信图片_20190725163341

Output only while casting

Hi !

I was wondering if there was any way to be able to launch in background in a way that it would only output an image if there is something casting/connected
I don't know the underlying of using the HDMI output, but what if I want to have my KODI running but RPiPlay taking over when casting ?

Cheers for your awesome work!

Wrong aspect ratio when no monitor is plugged in

I have noticed that when I launch RPiPlay without any monitor plugged into my rpi the aspect ratio isn't right (see picture below). I know it's not a big issue because there are basically no reasons to use this software without a monitor, but I just wanted to tell you about that.

Keep your hard work, what you are doing is awesome !

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.