logo
IntroductionHow to add CSS or JavaScript files to an Android/iOS projectHow to combat autoplay policiesWhy does fullscreen not behave as expected on iOSWhy does the Network API not work on iOS devicesWhy does Chromecast not work on iOS Chrome?Why can't I select another video quality on iOS/tvOS?Is YouTube supportedWhy does the player load only one audio track (even though there are several in the manifest)Is it possible to see 360 degrees photo with THEOplayerWhy the Visibility API does not work through an iframe on Safari and IE11What is an impressionHow to know whether a live stream is playingWhich error related events does the player exposeWhy did my subtitles stop workingHow does Media Engagement Index (MEI) affect Autoplay on ChromeWhat does the error message 'Unknown CDM error' meanWhat does the error message 'Something went wrong with Native playback' meanWhy are not all response headers exposedWhy does the currentTime seem off in my livestream & what can I do about itHow to remove CORS restrictions from a reproduction streamWhich network calls (or requests) does THEOplayer doWhy does the playback not work when using the Chrome iPhone/iPad simulatorWhat does the error message 'can only be initiated by a user gesture' imply? Can I still force the desired actionHow to remove unwanted CC track in iOS or SafariWhy do I get a gray play button in my Android WebView and how to remove it?MediaTek limitationsHow to use ProGuard with THEOplayer Android SDKSelf-hosting and versioning of THEOplayerDoes THEOplayer support EXT-X-DATERANGECan clipping be used on a playlistCan timeline thumbnails be made available before playback startWhat are the benefits of preloadingWhat are the player seeking and seeked events and when are they firedCan we use HLS or DASH adsHow to change text in THEOplayerChange text when AirplayingITP2.1 problems using THEOplayerRemoving context menu/'Powered by THEOplayer v2...'What aspects of THEOplayer do we need to take into account to deploy a proper Content Security Policy (CSP)How can we avoid that the player keeps looking for chunks/segments if they are not foundCan we show a custom message on 403 on mp4Can we prevent UpNext feature from redirectingIs it possible to preload VOD content while the pre-roll is playingWhy is my video not playing automaticallyIs it possible to have multiple player instances play at the same timeIs it a problem if the viewer pauses a live stream for longer than the DVR windowTHEOplayer Features & ModulesChromecast on my webplayer does not work any longer despite no change in my implementationHow to track network errorsWhat is the support for WowzaHow to use the CDN fallback/backup stream featureHow to apply accurate buffering strategyHow can I distribute 4K content?What is the collaboration between Azure Media Services and THEOplayerIs Portrait mode supportedHow to prevent screen recordingThe provided video source is incompatible with the license for this playerPage and Source domainsWhat does the error message “Something went wrong determining the initial period of the provided MPEG-DASH stream” meanWhy is my PlayReady stream not working in Chromium Edge?Which subtitle and CC formats are supported on native SafariHow to navigate through the documentation and resourcesHow to create a (great) ticketHow to investigate a ticketWhat are the limitations of AirPlayWhat are the Edgio challengesHow to use the Media Session APIHow to use THEOplayer iOS SDK on an M1 macWidevine CDM deprecation notice for old browser versions

How can I distribute 4K content?

The ability to play 4k mostly depends on hardware. While the video player is responsible for passing on the data to the decoders, limitations to 4K playback often stem from the device, hardware, operating system or platform (e.g. Chrome, iOS app, Android TV app, ...). When either of these is unable to handle 4K content, you might be out of luck. It's important to ensure all of these boxes are checked.

Why? Streams above 1080p, like 4K (i.e. 2160p) and 8K, are usually packaged through codecs like HEVC (H.265), VP9 and AV1. Your device, hardware, operating system or platform might not be able to decode the selected codec. For example, Chrome lacks support for decoding HEVC. It's also possible that your platform doesn't support a specific codec profile or feature (e.g. HDR through Dolby Vision at 60fps) of a selected codec. While technically you can also do 4K streaming with AVC (H.264), it is often too inefficient from a bandwidth perspective. We will leave this out of scope for the remainder of the document.

Common issues when playing 4K content

Let's zoom in on our previous statement:

Limitations to playback of 4K often stem from the device, hardware, operating system or platform.

One of these individual components could be disrupting support for 4K streaming.

  • Device ─ Your device might not have the capabilities to render the codec which represents your stream, or you might be using a model which doesn't support the selected codec. For example, Chromecast devices from Generation 1, 2, 3 and 4 only support H.264 and VP8 up until 1080p, and don't offer any support for 4K. However, the Chromecast Ultra does offer 4K streaming through HEVC and VP9 including HDR at 60fps.
  • Hardware ─ You might be connecting a device to a monitor incapable of rendering 4K, or you might be using a cable which cannot transfer your stream at the required rate. The leveraged hardware will usually downscale your video or even provide no feed at all.
  • Operating System & Environment ─ Your operating system might not offer decoding support for a specific codec. For example, Apple didn't add support for 4K to iPhones until iOS 11 through HEVC. Chrome still doesn't support HEVC across any platform (except for on the iOS platform), and you have to use VP9 or AV1 to decode a 4K stream when using the browser.
  • Platform ─ Your platform might not offer decoding support for a specific codec. For example, Android offers decoding support for 4K through HEVC through Android applications, but not through Android browsers like Chrome.

4K supported platforms

It's tough to provide a global view on platforms which support 4K streaming. In theory, you would have to maintain an overview of all supported codecs (and codec profiles and features) per version per model per platform. You could then consult this overview to check if your selected codec (and profiles/features) are supported on your targeted platforms. This overview would be challenging to maintain, because updates to platforms change the support for certain codecs, and new models of a specific platform could offer different support for a specific codec. For example, while the Chromecast Generation 4 offers no support for 4K through HEVC, Chromecast Ultra does.

Please consider the table below as a generic snapshot in time. The platforms below can handle 4K streaming, but only if the appropriate codecs, platform versions and device (models) are used. It's perfectly possible that you're not able to get your 4K stream to run on one of the platforms listed below, for example because you're using an unsupported codec.

Platform Notes THEOplayer SDK
Browser Depends on the device, browser and codec Web SDK
iOS Depends on the device and codec, but could support:
HDR10, Dolby Vision, HEVC
iOS/tvOS SDK
iPadOS Depends on the device and codec, but could support:
HDR10, Dolby Vision, HEVC
iOS/tvOS SDK
Apple TV Depends on the device and codec, but could support:
HDR10, Dolby Vision, HEVC SDR with 60fps, HEVC
iOS/tvOS SDK
Android Depends on the device and codec Android/Fire TV SDK
Android TV Depends on the device and codec Android/Fire TV SDK
AirPlay Depends on the device and codec Web SDK, iOS SDK
AirPlay 2 Depends on the device and codec Web SDK, iOS SDK
Chromecast Receiver Depends on the device and codec, but could support:
HDR10, Dolby Vision, HEVC, VP9, 60fps
Web SDK, Chromecast SDK
Chromecast TV Depends on the device and codec. Web SDK, Chromecast SDK
Fire TV Depends on the device and codec, but could support:
HDR10, Dolby Vision, HEVC, VP9, AV1, 60fps
Android/Fire TV SDK
Roku Depends on the device and codec, but could support:
HDR10, Dolby Vision, HEVC, VP9, 60fps
Roku SDK
Tizen Depends on the device and codec, but could support:
HEVC, VP9, AV1, 60fps, 8K
Web SDK
webOS Depends on the device and codec, but could support:
HEVC, AV1, 60fps, 8K
Web SDK
Xbox Depends on the device and codec Web SDK
PlayStation Depends on the device and codec Web SDK

As this table is in flux, when you decide to implement 4K we encourage you to investigate if anything has changed for the platforms you are targeting (tip: searching for keywords like "Chromecast Media Capabilities 4K" often provides good results) or to reach out to the THEO support team with specific questions.

Video players and decoding

Video players usually don't do software decoding and instead rely on the native decoding capabilities offered by the selected platform through a native API as player-based decoding would be highly inefficient for power consumption and often requires a lot of computational performance. For example, on Desktop Chrome, video players leverage the Media Source Extensions API to decode the actual H.264 (or VP9 or AV1 or ...) codec representing your stream.

That being said, a video player might still be the one to blame when your viewers aren't seeing the beautiful 4K representation of your stream. Your video player should be able to correctly parse, extract and leverage the 4K stream from your HLS or MPEG-DASH manifest when your 4K representation can be applied. This functionality might not be implemented in your video player.

THEOplayer supports 4K streaming out of the box. For specific devices, specific configuration recommendations can apply in order to achieve 4K streaming efficiently.

github
Make sure to follow us on GitHub!
THEO-logo-white
twitter
facebook
linkedin
Copyright © 2022. All Rights Reserved.
Leuven
New York
Singapore
Barcelona