Plex’s New Video Player for iOS and tvOS

Introduction

Plex recently released new versions of its iPhone, iPad (iOS) and Apple TV (tvOS) apps, which contain a new, “enhanced” video engine based on the open source MPV video player. For now, Plex has disabled this engine by default, describing it as “experimental.” Previously, the Plex iOS and tvOS apps exclusively used Apple’s native AVPlayer. Because the Apple TV (and, by extension, AVPlayer) is primarily intended for the playback of streamed content, AVPlayer’s codec support is comparatively limited (e.g. h.265 or h.264 for video and AC3 and AAC for audio).

As a practical matter, this meant that if you wanted to watch live or recorded broadcast video (MPEG2 format) or Blu-ray videos with either video in VC1 format or audio in a variety of lossless Dolby or DTS formats, then the Plex Media Server had to first transcode those video files to a compatible format for playback on the iPhone, iPad, or Apple TV.

Direct Play Most Videos

Due to it supporting more video, audio, subtitle codecs, the first benefit of the Plex+MPV is that you can now directly play most videos on your Apple TV 4K.1 This reduces load on your Plex Media Server, improves video quality, and reduces latency in video playback.

Higher Quality 4K Upscaling

I previously covered upscaling lower resolution video to 4K and, more specifically, using MPV’s prescalers and scalers. For the current generation of iOS and tvOS devices, the full potential of Plex’s transition to the MPV video engine will be realized when a complete Metal 2 backend is written for MPV.2 Currently, Plex leverages the basic OpenGL backend, not opengl-hq, due to performance reasons.3 Moreover, this backend does not support HDR video playback. Plex is working on a Metal ‘bridge’ renderer for HDR video playback. But that is not expected to be as performant as a complete Metal 2 backend.4 And, because it is invoked after the MPV render process, the bridge renderer will not be able to support RAVU prescalers.

Advanced Deinterlacing

If you watch broadcast video on CBS, NBC, PBS, or the CW networks, then you are likely watching a 1080i broadcast. In contrast, ABC and FOX both broadcast in 720p resolution. 1080i is higher resolution than 720p video, but it sequentially presents the odd and even lines of the original video. Therefore, a sophisticated deinterlacer is required to recompose the scene that the camera sensor originally captured. This is particularly true for content with a lot of fast, lateral motion, like sports.

In February 2019, Plex updated the tvOS app to include support for Live TV including MPEG2 decoding and deinterlacing of 1080i video.

In summary, Plex’s transition of its iOS and tvOS apps to the MPV video engine means that home theater enthusiasts can now enjoy superior video playback of live and stored video content on the iPhone, iPad and Apple TV.



Updated on February 19th, 2019


  1. For a comprehensive list of containers, video codecs, audio codecs, and subtitles, see here.

  2. The Apple TV 4K contains the Apple A10X CPU, which runs approximately 2X x faster than the 4th generation Apple TV. Additionally, the 4th gen Apple TV supported a maximum resolution of 1080p.

  3. By default, MPV uses the spline36 scaling filter for mid quality and speed. For the best quality video output, where RAVU prescaling is not an option, you should use ewa_lanczossharp for luma and chroma upscaling.

  4. Or the current Vulkan backend for non Apple devices