Support for Apple Spatial Audio

With Apple supporting Spatial Audio with iOS 14 and AirPods Pro, I would hope that Plex would also support this feature for its iOS apps.

Looks like it has an API and it works with basically any surround format so i’m not sure why they can’t add support to the app.

Other apps like Disney+ use this function!
I hope than Plex is able to use this function.

It seems when you view the movie in PIP mode, spatial audio kicks in.

1 Like

You have to set it to use the “old player” in preferences which is actually the standard iOS player. Then you will have Spatial Audio even without PiP.

4 Likes

That’s interesting - so basically it doesn’t really look like apps need to specifically program for this API - it just needs to send the right “sort” of DD or DTS signal? The new player is obviously doing something different with the audio that maybe the devs can now change to support SA.

As far as I understand the new Plex player does not use the iOS “engine” to playback the video. So there is no spatial audio if you use the new player (hopefully only because the API is not yet implemented).
The old player = iOS standard video player does not need any modification to play It back (as its from Apple)

3 Likes

Do you know if the older player has disadvantages on iOS?

I think it’s not direct playing as much codecs as the new player (so you maybe get more stuff to transcode on server side) and fewer options of showing subtitles.

1 Like

The newer player has improvements related to subtitles, especially the ability to adjust offsets. It has better seeking & thumbnails, and audio stream selection during playback. I don’t use the DVR but I think it also supports (or improves) playback of live TV.

In the past I think they’ve said the plan was to drop support for the old player. I wonder if they can support Spatial Audio in the new player or if this will change those plans.

Edit:

1 Like

So let’s hope they can implement spatial audio for the new player (since i use a lot of the subtitle functionalities). But using the old player is a decent workaround.

1 Like

Maybe something I’m doing (or not doing) but spatial audio does not work at all in plex on ios 14 for me (in either the old or new player). Tried on both the ipad pro and Iphone XS. Works great with the native apple content purchased via Itunes (Mission Impossible 5 with Dolby Atmos is fantastic). But swiping down from the top right to get to the ios control centre with Plex running and checking spatial audio. It says it enabled but not active (https://support.apple.com/en-us/HT211775)

Be sure to use custom iOS profile xml on your server which enables Plex to stream multi channel to iPhone. Without the profile Plex will transcode it to stereo and you will not have spatial audio.

Do you have any info on how to do that?

1 Like

Create a folder in your Plex data folder called Profiles.
Create a file and Insert this code into the file and name it iOS.xml.
Save the file in the created Profile folder.
Restart your server.

<?xml version="1.0" encoding="utf-8"?>
<Client name="iOS">
  <!-- Author: Plex Inc. -->
  <!-- This profile is used by A5 and higher devices (starting with iPhone 4S and iPad 3) -->
  <Settings>
    <Setting name="DirectPlayStreamSelection" value="true" />
    <Setting name="StreamUnselectedIncompatibleAudioStreams" value="true" />
  </Settings>
  <TranscodeTargets>
    <VideoProfile container="mp4" codec="h264" audioCodec="aac" subtitleCodec="mov_text" context="static" />
	<VideoProfile protocol="hls" container="mp4" codec="h264" audioCodec="aac,ac3,eac3" subtitleCodec="eia_608_embedded" context="streaming" />
	<VideoProfile protocol="hls" container="mp4" codec="hevc" audioCodec="aac,ac3,eac3" subtitleCodec="eia_608_embedded" context="streaming" />
    <MusicProfile container="mp4" codec="aac" />
    <PhotoProfile container="jpeg" />
    <SubtitleProfile protocol="hls" container="webvtt" subtitleCodec="webvtt"/>
  </TranscodeTargets>
  <DirectPlayProfiles>
    <VideoProfile container="mp4" codec="h264" audioCodec="aac,ac3,eac3,mp3" subtitleCodec="mov_text,tx3g,ttxt,text" />
    <VideoProfile container="mp4" codec="hevc" audioCodec="aac,ac3,eac3,mp3" subtitleCodec="mov_text,tx3g,ttxt,text" />
    <VideoProfile container="mov" codec="h264" audioCodec="aac,ac3,eac3,mp3" subtitleCodec="mov_text,tx3g,ttxt,text" />
    <!-- Allow Direct Play of HLS content  -->
	<VideoProfile protocol="hls" container="mpegts" codec="h264" audioCodec="aac,ac3,eac3,mp3" />
	<VideoProfile protocol="hls" container="mp4" codec="h264" audioCodec="aac,ac3,eac3,mp3" />
	<VideoProfile protocol="hls" container="mp4" codec="hevc" audioCodec="aac,ac3,eac3,mp3" />
    <MusicProfile container="mp3" codec="mp3" />
    <MusicProfile container="mp4" codec="aac" />
    <MusicProfile container="mp4" codec="alac" />
	<MusicProfile container="flac" codec="flac" />
    <PhotoProfile container="jpeg,gif,bmp,png" />
  </DirectPlayProfiles>
  <CodecProfiles>
    <VideoCodec name="h264">
      <Limitations>
        <UpperBound name="video.width" value="3840" isRequired="true" />
        <UpperBound name="video.height" value="2160" isRequired="true" />
        <UpperBound name="video.bitDepth" value="8" />
        <NotMatch name="video.separateFields" value="1" />
      </Limitations>
    </VideoCodec>
    <VideoCodec name="hevc">
      <Limitations>
        <UpperBound name="video.width" value="3840" isRequired="true" />
        <UpperBound name="video.height" value="2160" isRequired="true" />
        <UpperBound name="video.bitDepth" value="10" />
        <NotMatch name="video.separateFields" value="1" />
        <UpperBound name="video.width" value="1920" onlyTranscodes="true" />
        <UpperBound name="video.height" value="1080" onlyTranscodes="true" />
        <UpperBound name="video.bitDepth" value="8" onlyTranscodes="true" />
      </Limitations>
    </VideoCodec>
    <VideoAudioCodec name="*">
      <Limitations>
        <UpperBound name="audio.channels" value="2" onlyTranscodes="true" />
      </Limitations>
    </VideoAudioCodec>
  </CodecProfiles>
</Client>
13 Likes

Just to confirm if using PMS on macOS this folder would be /Users/Library/Application Support/Plex Media Server/ right?

The folder that contains Codecs, Crash Reports, Diagnostics, Plug-ins, Updates etc?

Thank you @AgentMax! It works!

I can confirm this as well:

Ah yes it works - obviously with EAC-3 or AC-3 content.

Just imagine if we could steam DTS-HD and Dolby HD and convert.

Thank you so much for this! It worked! And as a bonus, when it goes to PIP there is no pause in the transition.

2 Likes

Please could we have the option to sync content to the device with AC3 rather than AAC so Spatial Audio might work with offline media.