FDH2 / UxPlay

AirPlay Unix mirroring server
GNU General Public License v3.0
1.35k stars 72 forks source link

Using UxPlay to mirror Keynote Presentation on iPad #203

Closed Booth1983 closed 12 months ago

Booth1983 commented 1 year ago

Hi, it seems UxPlay has problems with Keynote presentations. It doesn't update the page every time so that the page on the iPad is newer then the page on UxPlay.

fduncanh commented 1 year ago

I tested mirroring Keynote from an iPad, and it works perfectly on uxplay for me

Tested with UxPlay-1.56 on both a linux desktop and a raspberry pi model 4B (keynote was running on an iPad)

For keynote, since its not a movie, maybe option "uxplay -vsync no" which doesn't use timestamps to synchonize audio and video is what you need. This is best for "live streaming" (which I suppose a keynote presentation is?)

Give more details about what UxPlay is running on. (e.g. hardware, operating system, etc.).
I would guess "-vsync no", would fix your issue.

The README has a section on this in Starting and running UxPlay which says:

In Mirror mode, GStreamer has a choice of two methods to play video with its accompanying audio: prior to UxPlay-1.64, the video and audio streams were both played as soon as possible after they arrived (the GStreamer "sync=false" method), with a GStreamer internal clock used to try to keep them synchronized. Starting with UxPlay-1.64, the other method (GStreamer's "sync=true" mode), which uses timestamps in the audio and video streams sent by the client, is the new default. On low-decoding-power UxPlay hosts (such as Raspberry Pi 3 models) this will drop video frames that cannot be decoded in time to play with the audio, making the video jerky, but still synchronized.

The older method which does not drop late video frames worked well on more powerful systems, and is still available with the UxPlay option "-vsync no"; this method is adapted to "live streaming", and may be better when using UxPlay as a second monitor for a Mac computer, for example, while the new default timestamp-based method is best for watching a video, to keep lip movements and voices synchronized. (Without use of timestamps, video will eventually lag behind audio if it cannot be decoded fast enough: hardware-accelerated video-decoding helped to prevent this previously when timestamps were not being used.)

Booth1983 commented 12 months ago

Problem seems to be solved. Thank you for the tipp.

fduncanh commented 12 months ago

the recent UxPlay releases support a startup configuration file (see man uxplay) e.g. "~/.uxplayrc"

The default can be switched with a line vsync no in the startup file (then starting uxplay with "uxplay -vsync" will override the startup file)