Remote video play in browser works, android app and TVs fail

I logged my mobile device onto an external network as well as my laptop. The mobile android client has a pretty neat feature for capturing the client logs. I captured a log of me trying to play a smurfs movie and getting the same error. Hopefully this will help a trained eye spot what is causing this to fail.

07-13 13:58:57.727  i: [DynamicHomeHubsDiscoveryTask] Discovered 0 hubs from provider://tv.plex.provider.music.
07-13 13:58:57.797  i: [DynamicHomeHubsDiscoveryTask] Discovered 2 hubs from server://local/tv.plex.provider.podcasts.
07-13 13:58:57.798  i: [Home] Discovered 2 hubs.
07-13 13:58:58.587  i: [OneApp] User can execute command without restrictions because he is entitled.
07-13 13:58:58.591  i: [PlaybackManager] Preparing for Smurfs: The Lost Village
07-13 13:58:58.594  i: [DefaultPlaybackManager] Initial passthrough dialog should be only displayed on ATV.
07-13 13:58:58.603  i: [DefaultPlaybackManager] No codecs being downloaded.
07-13 13:58:58.605  i: [PlayQueues] Creating delayed remote PQ.
07-13 13:58:58.619  i: [MediaBrowserAudioService] onCreate
07-13 13:58:58.620  i: [PlayerService] onCreate
07-13 13:58:58.623  i: [ConnectivityManager] Device is under a metered connection
07-13 13:58:58.624  i: [Player] Changing to use ExoPlayer for playback.
07-13 13:58:58.717  i: [MemoryOptimisationBehaviour] Reducing memory cache.
07-13 13:58:58.720  i: [MediaSessionHelper] Starting media session with tag: video
07-13 13:58:58.720  i: [MediaSessionHelper] Creating media session with tag: video
07-13 13:58:58.729  i: [RefetchCurrentItemBehaviour] Fetching current item
07-13 13:58:58.731  i: [MediaSessionBehaviour] Updating metadata for video, thumb: false
07-13 13:58:58.731  i: Fetching [method:GET] https://plex.mydomain.org:443/library/metadata/598?includeChapters=1&includeLoudnessRamps=1&includeMarkers=1&includeRelated=1&X-Plex-Token=...jZBr
07-13 13:58:58.734  i: [InteractionBehaviour] Slept, reason: Startup.
07-13 13:58:58.738  i: [Player][ExoPlayer] Using PlayQueueMediaSource
07-13 13:58:58.741  i: [MediaCodecVideoSyncRenderer] Setting block output buffer: false
07-13 13:58:58.742  i: [ExoPlayer][EventLogger] state [0.05, 0.00, window=0, true, IDLE]
07-13 13:58:58.742  i: [ExoPlayer][EventLogger] seekStarted [0.05, 0.00, window=0]
07-13 13:58:58.743  i: [ExoPlayer][EventLogger] positionDiscontinuity [0.05, 2657.13, window=0, SEEK]
07-13 13:58:58.743  i: [Player][ExoPlayer] onPositionDiscontinuity, Reason: 1 Period Transition: false
07-13 13:58:58.744  i: [ExoPlayer][EventLogger] state [0.05, 2657.13, window=0, true, BUFFERING]
07-13 13:58:58.746  i: [MediaDecisionEngine] Starting media decision for: Smurfs: The Lost Village (part index 0)
07-13 13:58:58.747  i: [MediaDecisionEngine] Transcode server selected: MitchFlix
07-13 13:58:58.760  i: [MediaSessionHelper] Releasing media session with tag: video
07-13 13:58:58.761  i: [MediaSessionHelper] Starting media session with tag: music
07-13 13:58:58.762  i: [MediaSessionHelper] Creating media session with tag: music
07-13 13:58:58.766  i: [MediaDecisionEngine] Analyzing media: 1920x1040 6968kbps (Container: mkv, Video: h264, Audio: dca)
07-13 13:58:58.768  i: [ExoPlayer][EventLogger] timelineChanged [0.08, 2657.13, window=0, periodCount=1, windowCount=1, reason=PREPARED
07-13 13:58:58.768  i: [ExoPlayer][EventLogger]   period [?]
07-13 13:58:58.768  i: [ExoPlayer][EventLogger]   window [?, false, true]
07-13 13:58:58.769  i: [ExoPlayer][EventLogger] ]
07-13 13:58:58.770  i: [Player][ExoPlayer] onTimelineChanged (Position: 2657134 ms)
07-13 13:58:58.770  i: [EngineEventManager] onBufferingStarted (isSeeking: false)
07-13 13:58:58.770  i: [Player][Timeline] Playback started (or buffering), scheduling updates
07-13 13:58:58.771  i: [TranscodeSession] Pausing...
07-13 13:58:58.771  i: [ExoPlayer][EventLogger] seekProcessed [0.08, 2657.13, window=0]
07-13 13:58:58.774  i: [ExoPlayer][EventLogger] loading [0.09, 2657.13, window=0, true]
07-13 13:58:58.780  i: Creating PlayerActivity.
07-13 13:58:58.780  i: [Activity] Resuming the application, attempting to download item and children.
07-13 13:58:58.784  i: [Boot] PlayerActivity took 4ms to run create behaviours.
07-13 13:58:58.785  i: [PlayerActivity] Creating fragment
07-13 13:58:58.789  i: [Player][DimensionsLayout] Resizing: 100 x 100
07-13 13:58:58.793  i: [PictureInPictureBehaviour] Picture-in-picture is available and can be used.
07-13 13:58:58.799  i: [MediaDecisionEngine] Resolution or bitrate exceeds maximum allowed
07-13 13:58:58.804  i: [video] User maximum h264 profile determined: 52
07-13 13:58:58.805  i: [video] Device recommended h264 profile determined: 52
07-13 13:58:58.805  i: [video] The device doesn't support the 'high' profile, only: baseline
07-13 13:58:58.862  i: [ConnectivityManager] Device is under a metered connection
07-13 13:58:58.883  i: Fetching [method:GET] https://plex.tv/api/v2/user/profile?X-Plex-Token=...jZBr&includeExternalMedia=1
07-13 13:58:58.890  i: [MediaSessionHelper] Releasing media session with tag: music
07-13 13:58:58.891  i: [MediaSessionHelper] Starting media session with tag: video
07-13 13:58:58.892  i: [MediaSessionHelper] Creating media session with tag: video
07-13 13:58:58.924  i: [BufferHelper] Assumed Bitrate: 10000, Segment Count: 1171
07-13 13:58:58.925  i: [BufferHelper] Segment count: 1171
07-13 13:58:58.931  i: Fetching [method:GET] https://plex.mydomain.org:443/video/:/transcode/universal/decision?audioBoost=100&autoAdjustQuality=0&directPlay=0&directStream=1&directStreamAudio=1&fastSeek=1&hasMDE=1&location=cellular&maxVideoBitrate=720&mediaBufferSize=74944&mediaIndex=0&partIndex=0&path=%2Flibrary%2Fmetadata%2F598&peakBitrate=720&protocol=*&session=1bafe193e9e4bbe6-com-plexapp-android&subtitleSize=100&videoBitrate=720&videoQuality=60&videoResolution=3840x2160&X-Plex-Client-Identifier=1bafe193e9e4bbe6-com-plexapp-android&X-Plex-Client-Platform=Android&X-Plex-Client-Profile-Extra=add-limitation(scope%3DvideoCodec%26scopeName%3Dh264%26type%3DupperBound%26name%3Dvideo.level%26value%3D52)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3Dh264%26type%3DMatch%26name%3Dvideo.profile%26list%3Dbaseline%26replace%3Dtrue)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DupperBound%26name%3Dvideo.width%26value%3D3840%26replace%3Dtrue)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DupperBound%26name%3Dvideo.height%26value%3D2160%26replace%3Dtrue)%2Badd-transcode-target(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26container%3Dmkv%26videoCodec%3Dh264%2Chevc%26audioCodec%3Daac%2Cdca%2Cmp3%26subtitleCodec%3Dass%2Cpgs%2Csubrip%2Cdvd_subtitle%2Cmov_text%2Cvtt%2Cdvb_subtitle%26replace%3Dtrue)%2Badd-transcode-target-settings(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26CopyMatroskaAttachments%3Dtrue)%2Badd-limitation(scope%3DvideoAudioCodec%26scopeName%3Daac%26type%3DupperBound%26name%3Daudio.channels%26value%3D8%26replace%3Dtrue)%2Badd-transcode-target-audio-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26audioCodec%3Dmp3)%2Badd-transcode-target-audio-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26audioCodec%3Ddca)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DNotMatch%26name%3Dvideo.anamorphic%26value%3D999%26replace%3Dtrue)%2Badd-transcode-target(type%3DsubtitleProfile%26context%3Dstreaming%26protocol%3Dhttp%26container%3Dmkv%26subtitleCodec%3Dsrt)%2Bappend-transcode-target-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26videoCodec%3Dhevc)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3Dhevc%26type%3DMatch%26name%3Dvideo.profile%26list%3Dmain%7Cmain%2010)%2Badd-limitation(scope%3DvideoTranscodeTarget%26scopeName%3Dhevc%26scopeType%3DvideoCodec%26context%3Dstreaming%26protocol%3Dhls%26type%3Dmatch%26name%3Dvideo.colorTrc%26list%3Dsmpte2084%7Cbt709%7Cbt470m%7Csmpte240m%7Csmpte170m%7Cbt470bg%7Cbt2020-10%26isRequired%3Dfalse)&X-Plex-Device=Pixel%203&X-Plex-Platform=Android&X-Plex-Platform-Version=10&X-Plex-Product=Plex%20for%20Android%20(Mobile)&X-Plex-Version=8.3.0.18912&X-Plex-Token=...jZBr
07-13 13:58:58.937  i: [MediaSessionBehaviour] Updating metadata for video, thumb: true
07-13 13:58:58.981  i: [MenuSheetHud] Item changed (and fetched), invalidating settings...
07-13 13:58:59.045  i: [PostPlayHud] Not showing since video did not end naturally
07-13 13:58:59.069  i: Resuming PlayerActivity.
07-13 13:58:59.100  i: [Player][View] Configuration has been changed with a size of 0 x 0.
07-13 13:58:59.133  i: [MediaDecisionEngine] Server was happy with client's original decision
07-13 13:58:59.134  i: [MediaDecisionEngine] Decision: CanPlay: true CanDirectPlay: false CanDirectStreamVideo: false CanDirectStreamAudio: false CanDirectPlaySubtitle: false CanTranscodeSubtitle: false CanDisplayVideo: true Transcode Reason: Resolution or bitrate exceeds maximum allowed 
07-13 13:58:59.135  i: [LoadControl] New bitrate: 720, Maximum: 720
07-13 13:58:59.135  i: [MediaDecisionMediaSource] Using FFMediaSource
07-13 13:58:59.136  i: [video] User maximum h264 profile determined: 52
07-13 13:58:59.137  i: [video] Device recommended h264 profile determined: 52
07-13 13:58:59.137  i: [video] The device doesn't support the 'high' profile, only: baseline
07-13 13:58:59.171  i: [Player][View] Layout has been measured with a size of 2028 x 1014 (2028 x 1014).
07-13 13:58:59.174  i: [BufferHelper] Assumed Bitrate: 10000, Segment Count: 1171
07-13 13:58:59.175  i: [BufferHelper] Segment count: 1171
07-13 13:58:59.176  i: [MediaDecisionMediaSource] onMediaDecisionRefreshed (Sources: 1)
07-13 13:58:59.185  i: [SystemUIBehaviour] Hiding the system user-interface.
07-13 13:58:59.187  i: [RefetchCurrentItemBehaviour] Fetched current item, notifying listeners
07-13 13:58:59.187  i: [MenuSheetHud] Item changed (and fetched), invalidating settings...
07-13 13:58:59.198  i: [Player][View] Layout has been measured with a size of 2160 x 1080 (2160 x 1080).
07-13 13:58:59.235  i: [video] User maximum h264 profile determined: 52
07-13 13:58:59.236  i: [video] Device recommended h264 profile determined: 52
07-13 13:58:59.236  i: [video] The device doesn't support the 'high' profile, only: baseline
07-13 13:58:59.267  i: [BufferHelper] Assumed Bitrate: 10000, Segment Count: 1171
07-13 13:58:59.268  i: [BufferHelper] Segment count: 1171
07-13 13:58:59.270  i: [video] User maximum h264 profile determined: 52
07-13 13:58:59.270  i: [video] Device recommended h264 profile determined: 52
07-13 13:58:59.270  i: [video] The device doesn't support the 'high' profile, only: baseline
07-13 13:58:59.313  i: [BufferHelper] Assumed Bitrate: 10000, Segment Count: 1171
07-13 13:58:59.314  i: [BufferHelper] Segment count: 1171
07-13 13:58:59.317  i: [FF] Creating context for playback.
07-13 13:58:59.319  i: [FF] Setting additional option: tls_verify: 1
07-13 13:58:59.325  i: [FF] Opening https://plex.mydomain.org:443/video/:/transcode/universal/start.m3u8?audioBoost=100&autoAdjustQuality=0&directPlay=0&directStream=1&directStreamAudio=1&fastSeek=1&hasMDE=1&location=cellular&maxVideoBitrate=720&mediaBufferSize=74944&mediaIndex=0&partIndex=0&path=%2Flibrary%2Fmetadata%2F598&peakBitrate=720&protocol=hls&session=1bafe193e9e4bbe6-com-plexapp-android&subtitleSize=100&videoBitrate=720&videoQuality=60&videoResolution=3840x2160&X-Plex-Client-Identifier=1bafe193e9e4bbe6-com-plexapp-android&X-Plex-Client-Platform=Android&X-Plex-Client-Profile-Extra=add-limitation(scope%3DvideoCodec%26scopeName%3Dh264%26type%3DupperBound%26name%3Dvideo.level%26value%3D52)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3Dh264%26type%3DMatch%26name%3Dvideo.profile%26list%3Dbaseline%26replace%3Dtrue)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DupperBound%26name%3Dvideo.width%26value%3D3840%26replace%3Dtrue)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DupperBound%26name%3Dvideo.height%26value%3D2160%26replace%3Dtrue)%2Badd-transcode-target(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26container%3Dmkv%26videoCodec%3Dh264%2Chevc%26audioCodec%3Daac%2Cdca%2Cmp3%26subtitleCodec%3Dass%2Cpgs%2Csubrip%2Cdvd_subtitle%2Cmov_text%2Cvtt%2Cdvb_subtitle%26replace%3Dtrue)%2Badd-transcode-target-settings(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26CopyMatroskaAttachments%3Dtrue)%2Badd-limitation(scope%3DvideoAudioCodec%26scopeName%3Daac%26type%3DupperBound%26name%3Daudio.channels%26value%3D8%26replace%3Dtrue)%2Badd-transcode-target-audio-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26audioCodec%3Dmp3)%2Badd-transcode-target-audio-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26audioCodec%3Ddca)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DNotMatch%26name%3Dvideo.anamorphic%26value%3D999%26replace%3Dtrue)%2Badd-transcode-target(type%3DsubtitleProfile%26context%3Dstreaming%26protocol%3Dhttp%26container%3Dmkv%26subtitleCodec%3Dsrt)%2Bappend-transcode-target-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26videoCodec%3Dhevc)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3Dhevc%26type%3DMatch%26name%3Dvideo.profile%26list%3Dmain%7Cmain%2010)%2Badd-limitation(scope%3DvideoTranscodeTarget%26scopeName%3Dhevc%26scopeType%3DvideoCodec%26context%3Dstreaming%26protocol%3Dhls%26type%3Dmatch%26name%3Dvideo.colorTrc%26list%3Dsmpte2084%7Cbt709%7Cbt470m%7Csmpte240m%7Csmpte170m%7Cbt470bg%7Cbt2020-10%26isRequired%3Dfalse)&X-Plex-Device=Pixel%203&X-Plex-Platform=Android&X-Plex-Platform-Version=10&X-Plex-Product=Plex%20for%20Android%20(Mobile)&X-Plex-Token=...jZBr&X-Plex-Version=8.3.0.18912.
07-13 13:58:59.328  i: [FFmpeg] [INFO] JNI environment has been loaded successfully.
07-13 13:58:59.328  i: [FFmpeg] [INFO] Updated codec path to '/data/user/0/com.plexapp.android/Plex\ Media\ Server/Codecs/5f603a2-3187-"android-aarch64"/'.
07-13 13:58:59.329  i: [FFmpeg] [INFO] Initialised AV functions.
07-13 13:58:59.329  i: [FFmpeg] [INFO] Encoder: mjpeg.
07-13 13:58:59.330  i: [FFmpeg] [INFO] Encoder: wrapped_avframe.
07-13 13:58:59.330  i: [FFmpeg] [INFO] Encoder: alac.
07-13 13:58:59.330  i: [FFmpeg] [INFO] Encoder: flac.
07-13 13:58:59.330  i: [FFmpeg] [INFO] Encoder: pcm_f32be.
07-13 13:58:59.331  i: [FFmpeg] [INFO] Encoder: pcm_f32le.
07-13 13:58:59.332  i: [FFmpeg] [INFO] Encoder: pcm_f64be.
07-13 13:58:59.333  i: [FFmpeg] [INFO] Encoder: pcm_f64le.
07-13 13:58:59.335  i: [FFmpeg] [INFO] Encoder: pcm_s8.
07-13 13:58:59.336  i: [FFmpeg] [INFO] Encoder: pcm_s8_planar.
07-13 13:58:59.339  i: [FFmpeg] [INFO] Encoder: pcm_s16be.
07-13 13:58:59.340  i: [FFmpeg] [INFO] Encoder: pcm_s16be_planar.
07-13 13:58:59.341  i: [FFmpeg] [INFO] Encoder: pcm_s16le.
07-13 13:58:59.341  i: [FFmpeg] [INFO] Encoder: pcm_s16le_planar.
07-13 13:58:59.341  i: [FFmpeg] [INFO] Encoder: pcm_s24be.
07-13 13:58:59.342  i: [FFmpeg] [INFO] Encoder: pcm_s24le.
07-13 13:58:59.344  i: [FFmpeg] [INFO] Encoder: pcm_s24le_planar.
07-13 13:58:59.347  i: [FFmpeg] [INFO] Encoder: pcm_s32be.
07-13 13:58:59.347  i: [FFmpeg] [INFO] Encoder: pcm_s32le.
07-13 13:58:59.348  i: [FFmpeg] [INFO] Encoder: pcm_s32le_planar.
07-13 13:58:59.348  i: [FFmpeg] [INFO] Encoder: pcm_u8.
07-13 13:58:59.348  i: [FFmpeg] [INFO] Encoder: pcm_u16be.
07-13 13:58:59.348  i: [FFmpeg] [INFO] Encoder: pcm_u16le.
07-13 13:58:59.348  i: [FFmpeg] [INFO] Encoder: pcm_u24be.
07-13 13:58:59.348  i: [FFmpeg] [INFO] Encoder: pcm_u24le.
07-13 13:58:59.348  i: [FFmpeg] [INFO] Encoder: pcm_u32be.
07-13 13:58:59.348  i: [FFmpeg] [INFO] Encoder: pcm_u32le.
07-13 13:58:59.348  i: [FFmpeg] [INFO] Encoder: ssa.
07-13 13:58:59.349  i: [ExoPlayer][EventLogger] timelineChanged [0.66, 2657.13, window=0, periodCount=1, windowCount=1, reason=DYNAMIC
07-13 13:58:59.349  i: [ExoPlayer][EventLogger]   period [?]
07-13 13:58:59.349  i: [ExoPlayer][EventLogger]   window [?, false, false]
07-13 13:58:59.350  i: [FFmpeg] [INFO] Encoder: ass.
07-13 13:58:59.350  i: [ExoPlayer][EventLogger] ]
07-13 13:58:59.351  i: [FFmpeg] [INFO] Encoder: dvbsub.
07-13 13:58:59.351  i: [Player][ExoPlayer] onTimelineChanged (Position: 2657134 ms)
07-13 13:58:59.351  i: [FFmpeg] [INFO] Encoder: dvdsub.
07-13 13:58:59.351  i: [FFmpeg] [INFO] Encoder: mov_text.
07-13 13:58:59.351  i: [FFmpeg] [INFO] Encoder: subrip.
07-13 13:58:59.351  i: [FFmpeg] [INFO] Encoder: text.
07-13 13:58:59.352  i: [FFmpeg] [INFO] Encoder: webvtt.
07-13 13:58:59.353  i: [FFmpeg] [INFO] Encoder: xsub.
07-13 13:58:59.353  i: [FFmpeg] [INFO] Encoder: libopus.
07-13 13:58:59.353  i: [FFmpeg] [INFO] Encoder: libvorbis.
07-13 13:58:59.353  i: [FFmpeg] [INFO] Decoder: apng.
07-13 13:58:59.355  i: [FFmpeg] [INFO] Decoder: bmp.
07-13 13:58:59.355  i: [FFmpeg] [INFO] Decoder: dirac.
07-13 13:58:59.355  i: [FFmpeg] [INFO] Decoder: ffv1.
07-13 13:58:59.356  i: [FFmpeg] [INFO] Decoder: ffvhuff.
07-13 13:58:59.356  i: [FFmpeg] [INFO] Decoder: gif.
07-13 13:58:59.356  i: [FFmpeg] [INFO] Decoder: huffyuv.
07-13 13:58:59.356  i: [FFmpeg] [INFO] Decoder: mjpeg.
07-13 13:58:59.356  i: [FFmpeg] [INFO] Decoder: png.
07-13 13:58:59.359  i: [FFmpeg] [INFO] Decoder: thp.
07-13 13:58:59.359  i: [FFmpeg] [INFO] Decoder: alac.
07-13 13:58:59.359  i: [FFmpeg] [INFO] Decoder: flac.
07-13 13:58:59.359  i: [FFmpeg] [INFO] Decoder: opus.
07-13 13:58:59.359  i: [FFmpeg] [INFO] Decoder: vorbis.
07-13 13:58:59.359  i: [FFmpeg] [INFO] Decoder: pcm_alaw.
07-13 13:58:59.359  i: [FFmpeg] [INFO] Decoder: pcm_f32be.
07-13 13:58:59.359  i: [FFmpeg] [INFO] Decoder: pcm_f32le.
07-13 13:58:59.359  i: [FFmpeg] [INFO] Decoder: pcm_f64be.
07-13 13:58:59.360  i: [FFmpeg] [INFO] Decoder: pcm_f64le.
07-13 13:58:59.360  i: [FFmpeg] [INFO] Decoder: pcm_lxf.
07-13 13:58:59.360  i: [FFmpeg] [INFO] Decoder: pcm_mulaw.
07-13 13:58:59.360  i: [FFmpeg] [INFO] Decoder: pcm_s8.
07-13 13:58:59.360  i: [FFmpeg] [INFO] Decoder: pcm_s8_planar.
07-13 13:58:59.360  i: [FFmpeg] [INFO] Decoder: pcm_s16be.
07-13 13:58:59.361  i: [FFmpeg] [INFO] Decoder: pcm_s16be_planar.
07-13 13:58:59.361  i: [FFmpeg] [INFO] Decoder: pcm_s16le.
07-13 13:58:59.361  i: [FFmpeg] [INFO] Decoder: pcm_s16le_planar.
07-13 13:58:59.361  i: [FFmpeg] [INFO] Decoder: pcm_s24be.
07-13 13:58:59.362  i: [FFmpeg] [INFO] Decoder: pcm_s24le.
07-13 13:58:59.362  i: [FFmpeg] [INFO] Decoder: pcm_s24le_planar.
07-13 13:58:59.363  i: [FFmpeg] [INFO] Decoder: pcm_s32be.
07-13 13:58:59.363  i: [FFmpeg] [INFO] Decoder: pcm_s32le.
07-13 13:58:59.363  i: [FFmpeg] [INFO] Decoder: pcm_s32le_planar.
07-13 13:58:59.363  i: [FFmpeg] [INFO] Decoder: pcm_u8.
07-13 13:58:59.364  i: [FFmpeg] [INFO] Decoder: pcm_u16be.
07-13 13:58:59.364  i: [FFmpeg] [INFO] Decoder: pcm_u16le.
07-13 13:58:59.364  i: [FFmpeg] [INFO] Decoder: pcm_u24be.
07-13 13:58:59.364  i: [FFmpeg] [INFO] Decoder: pcm_u24le.
07-13 13:58:59.364  i: [FFmpeg] [INFO] Decoder: pcm_u32be.
07-13 13:58:59.365  i: [FFmpeg] [INFO] Decoder: pcm_u32le.
07-13 13:58:59.365  i: [FFmpeg] [INFO] Adding option: ignore_chapters 1
07-13 13:58:59.366  i: [FFmpeg] [INFO] Adding option: live_start_index 0
07-13 13:58:59.366  i: [FFmpeg] [INFO] Adding option: reconnect 1
07-13 13:58:59.366  i: [FFmpeg] [INFO] Adding option: tls_verify 1
07-13 13:58:59.367  i: [FFmpeg] [INFO] Allocating format context.
07-13 13:58:59.367  i: [FFmpeg] [INFO] Opening input from https://plex.mydomain.org:443/video/:/transcode/universal/start.m3u8?audioBoost=100&autoAdjustQuality=0&directPlay=0&directStream=1&directStreamAudio=1&fastSeek=1&hasMDE=1&location=cellular&maxVideoBitrate=720&mediaBufferSize=74944&mediaIndex=0&partIndex=0&path=%2Flibrary%2Fmetadata%2F598&peakBitrate=720&protocol=hls&session=1bafe193e9e4bbe6-com-plexapp-android&subtitleSize=100&videoBitrate=720&videoQuality=60&videoResolution=3840x2160&X-Plex-Client-Identifier=1bafe193e9e4bbe6-com-plexapp-android&X-Plex-Client-Platform=Android&X-Plex-Client-Profile-Extra=add-limitation(scope%3DvideoCodec%26scopeName%3Dh264%26type%3DupperBound%26name%3Dvideo.level%26value%3D52)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3Dh264%26type%3DMatch%26name%3Dvideo.profile%26list%3Dbaseline%26replace%3Dtrue)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DupperBound%26name%3Dvideo.width%26value%3D3840%26replace%3Dtrue)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DupperBound%26name%3Dvideo.height%26value%3D2160%26replace%3Dtrue)%2Badd-transcode-target(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26container%3Dmkv%26videoCodec%3Dh264%2Chevc%26audioCodec%3Daac%2Cdca%2Cmp3%26subtitleCodec%3Dass%2Cpgs%2Csubrip%2Cdvd_subtitle%2Cmov_text%2Cvtt%2Cdvb_subtitle%26replace%3Dtrue)%2Badd-transcode-target-settings(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26CopyMatroskaAttachments%3Dtrue)%2Badd-limitation(scope%3DvideoAudioCodec%26scopeName%3Daac%26type%3DupperBound%26name%3Daudio.channels%26value%3D8%26replace%3Dtrue)%2Badd-transcode-target-audio-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26audioCodec%3Dmp3)%2Badd-transcode-target-audio-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26audioCodec%3Ddca)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DNotMatch%26name%3Dvideo.anamorphic%26value%3D999%26replace%3Dtrue)%2Badd-transcode-target(type%3DsubtitleProfile%26context%3Dstreaming%26protocol%3Dhttp%26container%3Dmkv%26subtitleCodec%3Dsrt)%2Bappend-transcode-target-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26videoCodec%3Dhevc)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3Dhevc%26type%3DMatch%26name%3Dvideo.profile%26list%3Dmain%7Cmain%2010)%2Badd-limitation(scope%3DvideoTranscodeTarget%26scopeName%3Dhevc%26scopeType%3DvideoCodec%26context%3Dstreaming%26protocol%3Dhls%26type%3Dmatch%26name%3Dvideo.colorTrc%26list%3Dsmpte2084%7Cbt709%7Cbt470m%7Csmpte240m%7Csmpte170m%7Cbt470bg%7Cbt2020-10%26isRequired%3Dfalse)&X-Plex-Device=Pixel%203&X-Plex-Platform=Android&X-Plex-Platform-Version=10&X-Plex-Product=Plex%20for%20Android%20(Mobile)&X-Plex-Token=...jZBr&X-Plex-Version=8.3.0.18912.
07-13 13:58:59.368  i: [FFmpeg] [INFO] [Cache] Close requested, terminating.
07-13 13:58:59.369  i: [FFmpeg] [INFO] [Cache] Opening source from https://plex.mydomain.org:443/video/:/transcode/universal/start.m3u8?audioBoost=100&autoAdjustQuality=0&directPlay=0&directStream=1&directStreamAudio=1&fastSeek=1&hasMDE=1&location=cellular&maxVideoBitrate=720&mediaBufferSize=74944&mediaIndex=0&partIndex=0&path=%2Flibrary%2Fmetadata%2F598&peakBitrate=720&protocol=hls&session=1bafe193e9e4bbe6-com-plexapp-android&subtitleSize=100&videoBitrate=720&videoQuality=60&videoResolution=3840x2160&X-Plex-Client-Identifier=1bafe193e9e4bbe6-com-plexapp-android&X-Plex-Client-Platform=Android&X-Plex-Client-Profile-Extra=add-limitation(scope%3DvideoCodec%26scopeName%3Dh264%26type%3DupperBound%26name%3Dvideo.level%26value%3D52)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3Dh264%26type%3DMatch%26name%3Dvideo.profile%26list%3Dbaseline%26replace%3Dtrue)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DupperBound%26name%3Dvideo.width%26value%3D3840%26replace%3Dtrue)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DupperBound%26name%3Dvideo.height%26value%3D2160%26replace%3Dtrue)%2Badd-transcode-target(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26container%3Dmkv%26videoCodec%3Dh264%2Chevc%26audioCodec%3Daac%2Cdca%2Cmp3%26subtitleCodec%3Dass%2Cpgs%2Csubrip%2Cdvd_subtitle%2Cmov_text%2Cvtt%2Cdvb_subtitle%26replace%3Dtrue)%2Badd-transcode-target-settings(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26CopyMatroskaAttachments%3Dtrue)%2Badd-limitation(scope%3DvideoAudioCodec%26scopeName%3Daac%26type%3DupperBound%26name%3Daudio.channels%26value%3D8%26replace%3Dtrue)%2Badd-transcode-target-audio-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26audioCodec%3Dmp3)%2Badd-transcode-target-audio-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26audioCodec%3Ddca)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DNotMatch%26name%3Dvideo.anamorphic%26value%3D999%26replace%3Dtrue)%2Badd-transcode-target(type%3DsubtitleProfile%26context%3Dstreaming%26protocol%3Dhttp%26container%3Dmkv%26subtitleCodec%3Dsrt)%2Bappend-transcode-target-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26videoCodec%3Dhevc)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3Dhevc%26type%3DMatch%26name%3Dvideo.profile%26list%3Dmain%7Cmain%2010)%2Badd-limitation(scope%3DvideoTranscodeTarget%26scopeName%3Dhevc%26scopeType%3DvideoCodec%26context%3Dstreaming%26protocol%3Dhls%26type%3Dmatch%26name%3Dvideo.colorTrc%26list%3Dsmpte2084%7Cbt709%7Cbt470m%7Csmpte240m%7Csmpte170m%7Cbt470bg%7Cbt2020-10%26isRequired%3Dfalse)&X-Plex-Device=Pixel%203&X-Plex-Platform=Android&X-Plex-Platform-Version=10&X-Plex-Product=Plex%20for%20Android%20(Mobile)&X-Plex-Token=...jZBr&X-Plex-Version=8.3.0.18912.
07-13 13:58:59.379  i: [DynamicHomeHubsDiscoveryTask] Discovered 2 hubs from server://44f14e863cfde6d5706e8487c8fda6814f30250f/tv.plex.providers.epg.cloud:2.
07-13 13:58:59.379  i: [Home] Discovered 2 hubs.
07-13 13:58:59.425  i: [Home] Finished discovering Home hubs (cancelled: false)
07-13 13:58:59.426  i: [HomeHubsManager] There are new hubs. Total size: 21.
07-13 13:58:59.426  i: [HomeHubsManager] Notifying listeners with status: SUCCESS
07-13 13:58:59.426  i: [MergingHubManager] Notifying listeners with status: SUCCESS
07-13 13:58:59.796  i: [FFmpeg] [WARN] [https @ 0x76ef747800] HTTP error 503 Service Unavailable

07-13 13:58:59.802  i: [FFmpeg] [ERROR] [DemuxerPipeline] Failed to open cache.
07-13 13:58:59.802  e: [FF] Demuxer failed to open input from `https://plex.mydomain.org:443/video/:/transcode/universal/start.m3u8?audioBoost=100&autoAdjustQuality=0&directPlay=0&directStream=1&directStreamAudio=1&fastSeek=1&hasMDE=1&location=cellular&maxVideoBitrate=720&mediaBufferSize=74944&mediaIndex=0&partIndex=0&path=%2Flibrary%2Fmetadata%2F598&peakBitrate=720&protocol=hls&session=1bafe193e9e4bbe6-com-plexapp-android&subtitleSize=100&videoBitrate=720&videoQuality=60&videoResolution=3840x2160&X-Plex-Client-Identifier=1bafe193e9e4bbe6-com-plexapp-android&X-Plex-Client-Platform=Android&X-Plex-Client-Profile-Extra=add-limitation(scope%3DvideoCodec%26scopeName%3Dh264%26type%3DupperBound%26name%3Dvideo.level%26value%3D52)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3Dh264%26type%3DMatch%26name%3Dvideo.profile%26list%3Dbaseline%26replace%3Dtrue)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DupperBound%26name%3Dvideo.width%26value%3D3840%26replace%3Dtrue)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DupperBound%26name%3Dvideo.height%26value%3D2160%26replace%3Dtrue)%2Badd-transcode-target(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26container%3Dmkv%26videoCodec%3Dh264%2Chevc%26audioCodec%3Daac%2Cdca%2Cmp3%26subtitleCodec%3Dass%2Cpgs%2Csubrip%2Cdvd_subtitle%2Cmov_text%2Cvtt%2Cdvb_subtitle%26replace%3Dtrue)%2Badd-transcode-target-settings(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26CopyMatroskaAttachments%3Dtrue)%2Badd-limitation(scope%3DvideoAudioCodec%26scopeName%3Daac%26type%3DupperBound%26name%3Daudio.channels%26value%3D8%26replace%3Dtrue)%2Badd-transcode-target-audio-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26audioCodec%3Dmp3)%2Badd-transcode-target-audio-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26audioCodec%3Ddca)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DNotMatch%26name%3Dvideo.anamorphic%26value%3D999%26replace%3Dtrue)%2Badd-transcode-target(type%3DsubtitleProfile%26context%3Dstreaming%26protocol%3Dhttp%26container%3Dmkv%26subtitleCodec%3Dsrt)%2Bappend-transcode-target-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26videoCodec%3Dhevc)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3Dhevc%26type%3DMatch%26name%3Dvideo.profile%26list%3Dmain%7Cmain%2010)%2Badd-limitation(scope%3DvideoTranscodeTarget%26scopeName%3Dhevc%26scopeType%3DvideoCodec%26context%3Dstreaming%26protocol%3Dhls%26type%3Dmatch%26name%3Dvideo.colorTrc%26list%3Dsmpte2084%7Cbt709%7Cbt470m%7Csmpte240m%7Csmpte170m%7Cbt470bg%7Cbt2020-10%26isRequired%3Dfalse)&X-Plex-Device=Pixel%203&X-Plex-Platform=Android&X-Plex-Platform-Version=10&X-Plex-Product=Plex%20for%20Android%20(Mobile)&X-Plex-Token=...jZBr&X-Plex-Version=8.3.0.18912`.
07-13 13:58:59.817  i: [FFmpeg] [INFO] Adding option: ignore_chapters 1
07-13 13:58:59.817  i: [FF] Setting additional option: tls_verify: 1
07-13 13:58:59.817  i: [FFmpeg] [INFO] Adding option: live_start_index 0
07-13 13:58:59.817  i: [FFmpeg] [INFO] Adding option: reconnect 1
07-13 13:58:59.818  i: [FFmpeg] [INFO] Adding option: tls_verify 1
07-13 13:58:59.818  i: [FF] Opening https://plex.mydomain.org:443/video/:/transcode/universal/start.m3u8?audioBoost=100&autoAdjustQuality=0&directPlay=0&directStream=1&directStreamAudio=1&fastSeek=1&hasMDE=1&location=cellular&maxVideoBitrate=720&mediaBufferSize=74944&mediaIndex=0&partIndex=0&path=%2Flibrary%2Fmetadata%2F598&peakBitrate=720&protocol=hls&session=1bafe193e9e4bbe6-com-plexapp-android&subtitleSize=100&videoBitrate=720&videoQuality=60&videoResolution=3840x2160&X-Plex-Client-Identifier=1bafe193e9e4bbe6-com-plexapp-android&X-Plex-Client-Platform=Android&X-Plex-Client-Profile-Extra=add-limitation(scope%3DvideoCodec%26scopeName%3Dh264%26type%3DupperBound%26name%3Dvideo.level%26value%3D52)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3Dh264%26type%3DMatch%26name%3Dvideo.profile%26list%3Dbaseline%26replace%3Dtrue)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DupperBound%26name%3Dvideo.width%26value%3D3840%26replace%3Dtrue)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DupperBound%26name%3Dvideo.height%26value%3D2160%26replace%3Dtrue)%2Badd-transcode-target(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26container%3Dmkv%26videoCodec%3Dh264%2Chevc%26audioCodec%3Daac%2Cdca%2Cmp3%26subtitleCodec%3Dass%2Cpgs%2Csubrip%2Cdvd_subtitle%2Cmov_text%2Cvtt%2Cdvb_subtitle%26replace%3Dtrue)%2Badd-transcode-target-settings(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26CopyMatroskaAttachments%3Dtrue)%2Badd-limitation(scope%3DvideoAudioCodec%26scopeName%3Daac%26type%3DupperBound%26name%3Daudio.channels%26value%3D8%26replace%3Dtrue)%2Badd-transcode-target-audio-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26audioCodec%3Dmp3)%2Badd-transcode-target-audio-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26audioCodec%3Ddca)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DNotMatch%26name%3Dvideo.anamorphic%26value%3D999%26replace%3Dtrue)%2Badd-transcode-target(type%3DsubtitleProfile%26context%3Dstreaming%26protocol%3Dhttp%26container%3Dmkv%26subtitleCodec%3Dsrt)%2Bappend-transcode-target-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26videoCodec%3Dhevc)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3Dhevc%26type%3DMatch%26name%3Dvideo.profile%26list%3Dmain%7Cmain%2010)%2Badd-limitation(scope%3DvideoTranscodeTarget%26scopeName%3Dhevc%26scopeType%3DvideoCodec%26context%3Dstreaming%26protocol%3Dhls%26type%3Dmatch%26name%3Dvideo.colorTrc%26list%3Dsmpte2084%7Cbt709%7Cbt470m%7Csmpte240m%7Csmpte170m%7Cbt470bg%7Cbt2020-10%26isRequired%3Dfalse)&X-Plex-Device=Pixel%203&X-Plex-Platform=Android&X-Plex-Platform-Version=10&X-Plex-Product=Plex%20for%20Android%20(Mobile)&X-Plex-Token=...jZBr&X-Plex-Version=8.3.0.18912.
07-13 13:58:59.819  i: [FFmpeg] [INFO] Demuxer closing.
07-13 13:58:59.820  i: [FFmpeg] [INFO] [Cache] Close requested, terminating.
07-13 13:58:59.820  i: [FFmpeg] [INFO] [Cache] Close requested, terminating.
07-13 13:58:59.820  i: [FFmpeg] [INFO] Allocating format context.
07-13 13:58:59.820  i: [FFmpeg] [INFO] Opening input from https://plex.mydomain.org:443/video/:/transcode/universal/start.m3u8?audioBoost=100&autoAdjustQuality=0&directPlay=0&directStream=1&directStreamAudio=1&fastSeek=1&hasMDE=1&location=cellular&maxVideoBitrate=720&mediaBufferSize=74944&mediaIndex=0&partIndex=0&path=%2Flibrary%2Fmetadata%2F598&peakBitrate=720&protocol=hls&session=1bafe193e9e4bbe6-com-plexapp-android&subtitleSize=100&videoBitrate=720&videoQuality=60&videoResolution=3840x2160&X-Plex-Client-Identifier=1bafe193e9e4bbe6-com-plexapp-android&X-Plex-Client-Platform=Android&X-Plex-Client-Profile-Extra=add-limitation(scope%3DvideoCodec%26scopeName%3Dh264%26type%3DupperBound%26name%3Dvideo.level%26value%3D52)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3Dh264%26type%3DMatch%26name%3Dvideo.profile%26list%3Dbaseline%26replace%3Dtrue)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DupperBound%26name%3Dvideo.width%26value%3D3840%26replace%3Dtrue)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DupperBound%26name%3Dvideo.height%26value%3D2160%26replace%3Dtrue)%2Badd-transcode-target(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26container%3Dmkv%26videoCodec%3Dh264%2Chevc%26audioCodec%3Daac%2Cdca%2Cmp3%26subtitleCodec%3Dass%2Cpgs%2Csubrip%2Cdvd_subtitle%2Cmov_text%2Cvtt%2Cdvb_subtitle%26replace%3Dtrue)%2Badd-transcode-target-settings(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26CopyMatroskaAttachments%3Dtrue)%2Badd-limitation(scope%3DvideoAudioCodec%26scopeName%3Daac%26type%3DupperBound%26name%3Daudio.channels%26value%3D8%26replace%3Dtrue)%2Badd-transcode-target-audio-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26audioCodec%3Dmp3)%2Badd-transcode-target-audio-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26audioCodec%3Ddca)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DNotMatch%26name%3Dvideo.anamorphic%26value%3D999%26replace%3Dtrue)%2Badd-transcode-target(type%3DsubtitleProfile%26context%3Dstreaming%26protocol%3Dhttp%26container%3Dmkv%26subtitleCodec%3Dsrt)%2Bappend-transcode-target-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26videoCodec%3Dhevc)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3Dhevc%26type%3DMatch%26name%3Dvideo.profile%26list%3Dmain%7Cmain%2010)%2Badd-limitation(scope%3DvideoTranscodeTarget%26scopeName%3Dhevc%26scopeType%3DvideoCodec%26context%3Dstreaming%26protocol%3Dhls%26type%3Dmatch%26name%3Dvideo.colorTrc%26list%3Dsmpte2084%7Cbt709%7Cbt470m%7Csmpte240m%7Csmpte170m%7Cbt470bg%7Cbt2020-10%26isRequired%3Dfalse)&X-Plex-Device=Pixel%203&X-Plex-Platform=Android&X-Plex-Platform-Version=10&X-Plex-Product=Plex%20for%20Android%20(Mobile)&X-Plex-Token=...jZBr&X-Plex-Version=8.3.0.18912.
07-13 13:58:59.820  i: [FFmpeg] [INFO] [Cache] Close requested, terminating.
07-13 13:58:59.821  i: [FFmpeg] [INFO] [Cache] Opening source from https://plex.mydomain.org:443/video/:/transcode/universal/start.m3u8?audioBoost=100&autoAdjustQuality=0&directPlay=0&directStream=1&directStreamAudio=1&fastSeek=1&hasMDE=1&location=cellular&maxVideoBitrate=720&mediaBufferSize=74944&mediaIndex=0&partIndex=0&path=%2Flibrary%2Fmetadata%2F598&peakBitrate=720&protocol=hls&session=1bafe193e9e4bbe6-com-plexapp-android&subtitleSize=100&videoBitrate=720&videoQuality=60&videoResolution=3840x2160&X-Plex-Client-Identifier=1bafe193e9e4bbe6-com-plexapp-android&X-Plex-Client-Platform=Android&X-Plex-Client-Profile-Extra=add-limitation(scope%3DvideoCodec%26scopeName%3Dh264%26type%3DupperBound%26name%3Dvideo.level%26value%3D52)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3Dh264%26type%3DMatch%26name%3Dvideo.profile%26list%3Dbaseline%26replace%3Dtrue)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DupperBound%26name%3Dvideo.width%26value%3D3840%26replace%3Dtrue)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DupperBound%26name%3Dvideo.height%26value%3D2160%26replace%3Dtrue)%2Badd-transcode-target(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26container%3Dmkv%26videoCodec%3Dh264%2Chevc%26audioCodec%3Daac%2Cdca%2Cmp3%26subtitleCodec%3Dass%2Cpgs%2Csubrip%2Cdvd_subtitle%2Cmov_text%2Cvtt%2Cdvb_subtitle%26replace%3Dtrue)%2Badd-transcode-target-settings(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26CopyMatroskaAttachments%3Dtrue)%2Badd-limitation(scope%3DvideoAudioCodec%26scopeName%3Daac%26type%3DupperBound%26name%3Daudio.channels%26value%3D8%26replace%3Dtrue)%2Badd-transcode-target-audio-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26audioCodec%3Dmp3)%2Badd-transcode-target-audio-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26audioCodec%3Ddca)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DNotMatch%26name%3Dvideo.anamorphic%26value%3D999%26replace%3Dtrue)%2Badd-transcode-target(type%3DsubtitleProfile%26context%3Dstreaming%26protocol%3Dhttp%26container%3Dmkv%26subtitleCodec%3Dsrt)%2Bappend-transcode-target-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26videoCodec%3Dhevc)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3Dhevc%26type%3DMatch%26name%3Dvideo.profile%26list%3Dmain%7Cmain%2010)%2Badd-limitation(scope%3DvideoTranscodeTarget%26scopeName%3Dhevc%26scopeType%3DvideoCodec%26context%3Dstreaming%26protocol%3Dhls%26type%3Dmatch%26name%3Dvideo.colorTrc%26list%3Dsmpte2084%7Cbt709%7Cbt470m%7Csmpte240m%7Csmpte170m%7Cbt470bg%7Cbt2020-10%26isRequired%3Dfalse)&X-Plex-Device=Pixel%203&X-Plex-Platform=Android&X-Plex-Platform-Version=10&X-Plex-Product=Plex%20for%20Android%20(Mobile)&X-Plex-Token=...jZBr&X-Plex-Version=8.3.0.18912.
07-13 13:58:59.875  e: Error fetching https://sonos.plex.tv/resources?X-Plex-Token=...jZBr&X-Plex-Client-Identifier=1bafe193e9e4bbe6-com-plexapp-android:
Forbidden

transcoding seems to be working fine. Browser can play fine Android apps cannot. I also tried to use VLC as an external player in android. Same issue. Wont’ play.

That was the latest version of the Android app


So, not sure about the debate here. Had anyone proved that the player is in fact the problem?

Also, this is a screenshot of the latest mobile phone version of the Android app.

Did you examine any of the logs we uploaded?

@ChuckPa,
I found this snippit that says the IOS app is hard coded to only stream via port 32400 so it will refuse to use port 443. Is this the case with the android app? It would explain why the browser works and not the mobile app.

https://blog.lolnope.us/plex-https-and-headaches/

I use cloudflare and you can only proxy through port 443 so that is/could be a problem.

The Android OS contained an new player released last fall. It was called the ExoPlayer.
Right after it’s release a number of bugs were discovered, It would crash, freeze, force the device to reboot. A number of bugs have been fixed in it, at the same time vendors like Plex tried to fix their clients to make it work, One well know bug still exists, it cannot play interlaced video. Plex fix was to transcode the interlaced video for that bug. There are a number of others. Just a search of this forum you will find a lot of reports.

Looks like that some devices do not have the old player available so the option to disable the new one is gone.

That is a valuable clue. Odd thing is that i can play videos with my android device using my buddies server (same version) but none of us can play them from my server all of a sudden.

Also, why can all of the android devices play just fine on the LAN. Wouldn’t they still have the same issue?

They don’t

I am using the old player, only way I can get my fire stick 4k to work.
For a while that didn’t even fix it, had to use a Roku


on my LAN my phone works fine, both samsung tablets work fine, and my NVIDIA shield works fine. All have the latest version of the app and none of them are set to use an old player (most don’t have that option). Not saying I don’t believe you, but it seems like if that were my issue none of these devices would be able to play. Only issue I see is the chromebook plex app does some weird stuff with multiple audio channels so sometimes I need to use the browser version.

If I understood the logs more I feel like we could narrow this down. I have uploaded the logs for both the client and the server but haven’t seen a reply from @ChuckPa to decipher them for us.

@ChuckPa, Here is a screenshot of the android app attempting to play the video using an external player (VLC). Notice the last entry. “Cannot be Played”. So this is coming from VLC. This rules out the exoplayer theory IMO. Do you see anything else wrong with the link or the log files I have provided?

Yes, I think it’s a Linux server issue. Since in my case as well my own Android phone works just fine when on the same home network as Plex server but doesn’t work when outside.

Could it be that server started using this port 443 for streaming to Android? I only have 32400 mapped on my router. Should I try to map that one as well?

I am having the same issue!

Server Version 1.19.4.2935
Android 8.3.0.18912

I have a pfSense basic setup with 32400 forwarded and internally I can play with my Android fine, but externally it errors out. My iphone has not problems internally or externally at all, and chrome works fine inside or outside. There is something wrong either in the Android player on the phone, or something server side that is not allowing it to play. :frowning: Why would Plex be handling this different for Andoid vs iOS? As long as the client connecting is sane, why would server side external treat Android differently than iOS?

When connecting externally to the plex server, iOS shows the connection is from 127.0.0.1. When using Android, it shows the connection is from the actual IP 166.175.56.6.

What in the world are we doing server side that would show an external connection as 127.0.0.1?

I can confirm it’s server side linux. I just connected my Firestick to my phone hotspot, and I get the same error as on my phone remotely. If I go back to LAN there are no issues at all on either device.

Hopefully Plex team can get us a fix soon.

Removing this from Linux server category; not a Linux server issue.

This points to a player problem.

Supplementally, I have pfSense as well; completely flat LAN (192.168.0.x), with remote access handled by the pfSense (it is both PPPoE / routing device). No issues internally or externally (iOS) on any of the 1.19.x (or even before) versions.

That is correct, as stated above in the posts, no issues with iOS devices internally or externally.

If a player problem, we seem to have a player problem with phones and firesticks, and all at the same time when connecting externally


I posted full logs above in a reply to your request. Both client and server side logs. Can you please inspect to help give us a clue as to what is going on here. I am suspecting a pfsense+HAProxy issue. My droid apps work fine on a friend’s server with the same version and cloidflare config.

Browsers stream fine with my pfsense setup. So what do the Android devices dislike about the setup @ChuckPa we could use your help looking at the logs to give us a clue. Do you have any pfsense+HAproxy SMEs on staff? Also, I have had this working for well over a year and in the last week or 2 it has stopped so it seems reasonable that something updated. I just need a clue to go investigate.

Last night I shut my server docker down and rebuilt a new one with the same version and I get the same behavior. I wanted to rule out some kind of corrupted configuration. I also shutoff the cloidflare proxy. Still the same behavior. I verified my letsencrypt certs and all are valid. What else can I look at?

Plex support was not very impressive. Can’t even get a single response on the logs they asked for.

@ChuckPa

SOLVED
The issue deals with how the Android app handles headers.

I found an issue where folks talked about the same problem when using HAProxy reverse proxy.

thought it was weird that the GET request for stream.mkv was never hitting Emby, so I enabled some very detailed logging in HAProxy and started seeing that request turn up, it just wasn't getting to Emby. What I found is that libVLC, unlike the rest of the client, is sending the port number in the Host header, and I was matching the whole header against just the hostname in my ACL, so the ACL was returning false only when the request came from the video player (libVLC). This is unexpected, but technically not incorrect behavior. I changed the ACL to match the beginning of the header and streams started working for me again.

So in the HAProxy back end I changed the ACL rule from “host matches” to “host starts with” and Boom! It all works now. So the issue is that the Android app is sending additional info in the header that causes the rule to fail.

Link to the post that gave me the idea:
https://emby.media/community/index.php?/topic/51307-emby-via-reverse-proxy-and-internal-network-settings/page/2/

With respect to Plex support. I think you should have at least examined the logs and helped the community understand how you were handling the transaction in the Android apps vs browser. This is important for system admins to understand when setting up their reverse proxy.

1 Like

Hey, I’m glad if it works for you but I don’t understand what was the solution related to?

How did you solve it?