4K high-bitrate videos stopped playing after Plex or Android TV update

After a recent update — either Plex client or Android TV — videos with high bitrates (45+ Mbps) stopped playing. Doesn’t matter if it’s H.264 or H.265. The loading circle spins endlessly, and playback never starts. It doesn’t even register as “started” in my watch history, like I never tried to play it.

Plex works fine through Kodi in this TV, so it looks like the issue is specific to the official Plex Android TV client.

All hardware is unchanged (NAS, WiFi, etc.).
All other devices in the house (iPhone, iPad, PC) play the same files without issues.

Details:

  • Plex client version: 10.30.6.4151

  • TV: Sony Bravia XR X90L (4K VH22, Android TV 12, stt2.230505.001.s66681001)

Any ideas? Could this be a decoding issue after the latest update?

Client LOGS:

10-27 09:15:03.908  i: [PictureInPictureBehaviour] Picture-in-picture is available and can be used.
10-27 09:15:03.911  i: [PictureInPictureBehaviour] Picture-in-picture is available and can be used.
10-27 09:15:03.923  i: [PictureInPictureBehaviour] Picture-in-picture is available and can be used.
10-27 09:15:03.932  i: [ChaptersSheetHud] Found 0 chapters.
10-27 09:15:03.947  i: [MenuSheetHud] Item changed (and fetched), invalidating settings...
10-27 09:15:04.073  i: [Player][View] Layout has been measured with a size of 1920 x 1080 (1920 x 1080).
10-27 09:15:04.074  i: [Player][DimensionsLayout] Resizing: 1920 x 1080
10-27 09:15:04.087  i: [ASS][Renderer] Surface has been created, connecting to renderer.
10-27 09:15:04.097  i: [ExoPlayer][EventLogger] surfaceSize [eventTime=0.41, mediaPos=0.00, window=0, period=0, 1920, 1080]
10-27 09:15:04.100  i: [ASS][Renderer] Attempting to start renderer from setSurface.
10-27 09:15:04.101  w: [ASS][Renderer] Missing video size, can't start renderer yet.
10-27 09:15:04.106  i: [SystemUIBehaviour] Hiding the system user-interface.
10-27 09:15:40.349  i: [InteractionBehaviour] Woke up, reason: Interface visibility has been toggled..
10-27 09:15:40.350  i: [SystemUIBehaviour] Showing the system user-interface.
10-27 09:15:40.351  i: [ASS][Renderer] Updating style override for track.
10-27 09:15:41.429  i: [InteractionBehaviour] Slept, reason: Back key pressed whilst awake.
10-27 09:15:41.431  i: [SystemUIBehaviour] Hiding the system user-interface.
10-27 09:15:41.433  i: [ASS][Renderer] Updating style override for track.
10-27 09:15:42.251  i: [Player] Engine being destroyed due to player deconstruction.
10-27 09:15:42.252  i: [Player] Starting to clear huds on player destroy. Activity finishing: false, should finish activity: true
10-27 09:15:42.252  i: [MemoryOptimisationBehaviour] Expanding memory cache.
10-27 09:15:42.253  i: [VideoAwakeBehaviour] Keep screen awake has been requested disabled for VideoAwakeBehaviour.
10-27 09:15:42.253  i: [AudioFocusBehaviour] Behaviour being destroyed, giving up audio focus
10-27 09:15:42.256  i: [ExoPlayerEngine] Releasing media source due to engine destruction.
10-27 09:15:42.257  i: [LoadControl] Setting buffer size to 73.19 MB / 0 seconds.
10-27 09:15:42.262  i: [ExoPlayer][EventLogger] state [eventTime=38.58, mediaPos=0.00, window=0, period=0, IDLE]
10-27 09:15:42.264  i: [ExoPlayer][ExoPlayerImpl] Release bc82750 [AndroidXMedia3/1.1.0] [BRAVIA_VH22, BRAVIA 4K VH22, Sony, 31] [media3.common, media3.exoplayer, media3.decoder]
10-27 09:15:42.268  i: [DisplayBehaviour] Reverting back to the original display mode.
10-27 09:15:42.270  i: [DisplayBehaviour] Current Mode ID: 1 / {id=1, width=3840, height=2160, fps=60.000004, alternativeRefreshRates=[]}
10-27 09:15:42.273  i: [DisplayBehaviour] Mode is already set to our best mode of 3840x2160 @ 60.0000Hz (1).
10-27 09:15:42.274  i: [LoadControl] Setting buffer size to 73.19 MB / 0 seconds.
10-27 09:15:42.275  i: [MediaSessionBehaviour] Releasing MediaSessionHelper
10-27 09:15:42.276  i: [MediaSessionHelper] Releasing media session with tag: video
10-27 09:15:42.285  i: [PlayerService] Terminating service from stop request.
10-27 09:15:42.305  i: [PlayerService] Service been destroyed.
10-27 09:15:42.325  i: [ActivityBackgroundBehaviour] Canceling Playback: Starting new playback from onStart.
10-27 09:15:42.328  i: Resuming HomeActivityTV.
10-27 09:15:42.813  i: [ASS][Renderer] Surface has been destroyed, disconnecting.
10-27 09:15:42.814  w: [ExoPlayer][ExoPlayerImplInternal] Ignoring messages sent after release.
10-27 09:15:42.834  i: [Player] Starting to clear huds on view detach. Activity finishing: null
10-27 09:15:45.412  i: Creating SettingsActivity.
10-27 09:15:45.413  i: [Activity] Resuming the application, attempting to download item and children.
10-27 09:15:45.415  i: [Boot] SettingsActivity took 2ms to run create behaviours.
10-27 09:15:45.479  i: [Boot] g took 0ms to run create behaviours.
10-27 09:15:45.484  i: [ActivityBackgroundBehaviour] Canceling Playback: Starting new playback from onStart.
10-27 09:15:45.488  i: Resuming SettingsActivity.
10-27 09:15:45.492  i: [Billing] Received request 'Subscription query'.
10-27 09:15:45.685  i: [Billing] Creating client.
10-27 09:15:45.687  i: [Billing] Connecting to billing service.
10-27 09:15:45.729  i: [Billing] Billing setup finished. Result: 0 | Client ready: true.
10-27 09:15:45.730  i: [Billing] Querying current product plex_pass_lifetime_subscription_v1.
10-27 09:15:45.731  i: [Billing] Invoking querySkuDetailsAsync. SKU: plex_pass_lifetime_subscription_v1 | Type: inapp.
10-27 09:15:45.744  i: [Billing] Got response from querySkuDetailsAsync. Code: 0 | List: [{Sku: plex_pass_lifetime_subscription_v1 | Price: 1.499,99В PLN | Price amount micros: 1499990000 | Price currency code: PLN}].
10-27 09:15:45.748  i: [Billing] Got response from queryPurchases. Code: 0 | List: [].
10-27 09:15:45.749  i: [Billing] SKU plex_pass_lifetime_subscription_v1 not found in response from queryPurchases().
10-27 09:15:45.749  i: [Billing] There are no old products to check.
10-27 09:15:45.750  i: [Billing] Subscription query completed successfully. Result: ProductQueryResult{currentProductInfo=ProductInfo{sku=plex_pass_lifetime_subscription_v1, term=lifetime, usdPrice=149.99, formattedPrice=1.499,99В PLN, price=1499.99, currency=PLN, skuDetails=SkuDetails: {"productId":"plex_pass_lifetime_subscription_v1","type":"inapp","title":"Plex Pass Lifetime Subscription (Plex: Stream Movies & TV)","name":"Plex Pass Lifetime Subscription","iconUrl":"https:\/\/lh3.googleusercontent.com\/slZYN_wnlAZ4BmyTZZakwfwAGm8JE5btL7u7AifhqCtUuxhtVVxQ1mcgpGOYC7MsAaU","description":"A subscription gives you exclusive premium features and early access to new \nones","price":"1.499,99В PLN","price_amount_micros":1499990000,"price_currency_code":"PLN","skuDetailsToken"...ed}.
10-27 09:15:45.750  i: [Billing] Received request 'Subscription query'.
10-27 09:15:45.751  i: [Billing] Already connected to billing service.
10-27 09:15:45.751  i: [Billing] Querying current product plex_pass_yearly_subscription_v1.
10-27 09:15:45.751  i: [Billing] Invoking querySkuDetailsAsync. SKU: plex_pass_yearly_subscription_v1 | Type: subs.
10-27 09:15:45.761  i: [Billing] Got response from querySkuDetailsAsync. Code: 0 | List: [{Sku: plex_pass_yearly_subscription_v1 | Price: 319,99В PLN | Price amount micros: 319990000 | Price currency code: PLN}].
10-27 09:15:45.765  i: [Billing] Got response from queryPurchases. Code: 0 | List: [].
10-27 09:15:45.765  i: [Billing] SKU plex_pass_yearly_subscription_v1 not found in response from queryPurchases().
10-27 09:15:45.766  i: [Billing] There are no old products to check.
10-27 09:15:45.766  i: [Billing] Subscription query completed successfully. Result: ProductQueryResult{currentProductInfo=ProductInfo{sku=plex_pass_yearly_subscription_v1, term=yearly, usdPrice=39.99, formattedPrice=319,99В PLN, price=319.99, currency=PLN, skuDetails=SkuDetails: {"productId":"plex_pass_yearly_subscription_v1","type":"subs","title":"Plex Pass Yearly Subscription (Plex: Stream Movies & TV)","name":"Plex Pass Yearly Subscription","iconUrl":"https:\/\/lh3.googleusercontent.com\/slZYN_wnlAZ4BmyTZZakwfwAGm8JE5btL7u7AifhqCtUuxhtVVxQ1mcgpGOYC7MsAaU","description":"A subscription gives you exclusive premium features and early access to new \nones","price":"319,99В PLN","price_amount_micros":319990000,"price_currency_code":"PLN","skuDetailsToken"...ed}.
10-27 09:15:45.766  i: [Billing] Received request 'Subscription query'.
10-27 09:15:45.766  i: [Billing] Already connected to billing service.
10-27 09:15:45.767  i: [Billing] Querying current product plex_pass_monthly_subscription_v1.
10-27 09:15:45.767  i: [Billing] Invoking querySkuDetailsAsync. SKU: plex_pass_monthly_subscription_v1 | Type: subs.
10-27 09:15:45.774  i: [Billing] Got response from querySkuDetailsAsync. Code: 0 | List: [{Sku: plex_pass_monthly_subscription_v1 | Price: 31,99В PLN | Price amount micros: 31990000 | Price currency code: PLN}].
10-27 09:15:45.779  i: [Billing] Got response from queryPurchases. Code: 0 | List: [].
10-27 09:15:45.780  i: [Billing] SKU plex_pass_monthly_subscription_v1 not found in response from queryPurchases().
10-27 09:15:45.780  i: [Billing] There are no old products to check.
10-27 09:15:45.781  i: [Billing] Subscription query completed successfully. Result: ProductQueryResult{currentProductInfo=ProductInfo{sku=plex_pass_monthly_subscription_v1, term=monthly, usdPrice=4.99, formattedPrice=31,99В PLN, price=31.99, currency=PLN, skuDetails=SkuDetails: {"productId":"plex_pass_monthly_subscription_v1","type":"subs","title":"Plex Pass Monthly Subscription (Plex: Stream Movies & TV)","name":"Plex Pass Monthly Subscription","iconUrl":"https:\/\/lh3.googleusercontent.com\/slZYN_wnlAZ4BmyTZZakwfwAGm8JE5btL7u7AifhqCtUuxhtVVxQ1mcgpGOYC7MsAaU","description":"A subscription gives you exclusive premium features and early access to new \nones","price":"31,99В PLN","price_amount_micros":31990000,"price_currency_code":"PLN","skuDetailsToken"...ed}.
10-27 09:15:45.781  i: [Home] Showing 'subscribe' item because billing is available and user is not subscribed.
10-27 09:15:46.130  i: [ActivityBackgroundBehaviour] Canceling Playback: Stopping playback from onStop.
10-27 09:15:55.801  i: [Billing] Destroying background handler after inactivity.
10-27 09:15:55.801  i: [Billing] Ending connection after inactivity.
10-27 09:15:55.802  i: [Billing] Ending connection to billing service.

Server Version#: 1.42.2.10156
Player Version#: 10.30.6.4151

logs from server

Oct 27, 2025 09:15:03.857 DEBUG - Completed: GET /library/metadata/X?includeRelated=1&includeLoudnessRamps=1&includeChapters=1&includeMarkers=1 200
Oct 27, 2025 09:15:04.229 DEBUG - Request: GET /photo/:/transcode?width=128&url=/library/metadata/X/thumb/X&height=128&quality=90
Oct 27, 2025 09:15:04.229 DEBUG - Request for url /library/metadata/X/thumb/X
Oct 27, 2025 09:15:04.229 DEBUG - Content-Length of cached photo is X
Oct 27, 2025 09:15:04.229 DEBUG - Completed: GET /photo/:/transcode?width=128&url=/library/metadata/X/thumb/X&height=128&quality=90 200
Oct 27, 2025 09:15:40.548 DEBUG - Request: GET /photo/:/transcode?width=1040&url=/library/metadata/X/thumb/X&height=1040&quality=90

I understand that not everyone has this issue, but someone must have a similar situation. I’ve gone through the forum, and even more specific problems seem to get more attention… Could someone please tell me how to extract more logs or view them in more detail to figure out what’s going wrong?

At this point, I’m running out of ideas — could someone suggest where else I can turn or what else I could try? I’ve already tried everything: disabled all connection security protocols, tested different formats and encodings, and many other things. Here’s what I’ve discovered so far:
If I enable DLNA streaming on the same Plex server, everything works perfectly on the same TV (as well as on other devices).
Conclusion:
Something is clearly broken with the connection protocols or algorithms specifically in the Android TV client.
Is there anyone who could test 4K video files with a bitrate of 50 Mbps or higher on their Android TV?

I know this doesn’t help but all is well for me.

Server: 1.42.2.10156

App: 10.30.7.4190(98d97dae)

https://support.plex.tv/articles/200250417-plex-media-server-log-files/

Thanks for the recent screenshots! You actually really helped me, because I was able to finally rule out my network configuration (which I suspected the most).

It turned out the high bitrate was just a coincidence. The whole problem is the absence of audio!!!

The vast majority of my problem files are raw video recordings from various DJI drones (H.264/H.265, 4K/2K). Here is what’s actually happening: this is a specific bug in ExoPlayer on the Sony Android TV platform. When the player receives a video file without an audio track, it cannot initialize the “Audio Clock”. The Sony player literally “stands still and waits” for the first audio packet to appear in order to start counting video frames. Since there is no audio, the player never sends the command to the system to start rendering the video. The strangest thing is that this silent hang doesn’t even appear in the logs…

The proof? Once I figured this out, I noticed that simply remuxing the video into an MKV container and adding a dummy audio/music track instantly fixes the issue.

This is a bug specifically in the official Plex app on Sony. Jellyfin, Kodi, and DLNA players use their own synchronization methods that ignore the absence of audio, and they play the original files flawlessly without any delays. They also play perfectly on my iPhone and PC, confirming the TV hardware isn’t the bottleneck and the Plex Server is working exactly as it should.

I suspect I won’t be able to solve this on my own, and I don’t know whether this will somehow reach the Plex developers. I’ll temporarily upload a test file here if anyone is curious to test how it behaves on their TV. I’m really curious if this is strictly a Sony Android TV conflict, or a broader bug within the Plex player (ExoPlayer) itself.

DJI Video for test - 1.2 Gb