logo
IntroductionHow to add CSS or JavaScript files to an Android/iOS projectHow to combat autoplay policiesPlayback issue with Internet Explorer 11Why does fullscreen not behave as expected on iOSWhy does the network API not work on iOS devicesWhy doesn't Chromecast work when embedded in an iframe on iOSWhy can't I select another video quality on iOSIs 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 SafariKnown Chromecast Limitations in 2.61.1What are the Product Flavor options in the Android SDK (minApi16 and minApi21)Why do I get a grey play button in my Android WebView and how to remove it?I'm unable to inspect Webview with the Android SDKMediaTek limitationsHow to fix Android DRM in Chrome 74How 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 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 AirPlay

THEOplayer Features & Modules

The THEOplayer SDK consists of modular features.

When building an SDK (i.e. license), you can specify which features are enabled. Only a subset of features are enabled by default, such as "HLS", "MPEG-DASH", "UI", "Chromecast", "Airplay", "Ads", and "Text Track Rendering".

This modular approach allows you to optimize the file size of your THEOplayer SDK.

How do I enable or disable certain features?

You can do this through our Portal.

Portal: enabling features of a new SDK

  • If you're creating a new SDK, you can enable (and disable) features.
  • If you want to toggle certain features for an existing SDK, you need to navigate to your SDK, update it, and re-publish it.

My feature isn't working?

Many features sit behind this modular structure. For example, the VR API or Up Next API won't work unless you've enabled the feature when creating your SDK.

How do I know which features are enabled?

You can log in to portal.theoplayer.com and navigate to your account. Once you're there, you further navigate to your desired SDK and check how you've customized your features.

Portal: enabling features of a new SDK

If you're a developer (and you're only interested in this answer for the THEOplayer Web SDK), then you can also figure this out at runtime through JavaScript. You can call THEOplayer.features to identify which features are enabled.

THEOplayer.features
// (29) ["dash", "hls", "chromecast", "ads", "airplay", "yospace", "spotx", "vr", "conviva", "cache", "visibility", "webaudio", "youbora", "mediamelon", "moat", "google-dai", "streamone", "v-nova", "freewheel", "agama", "ui", "relatedcontent", "social", "upnext", "contextmenu", "texttrackstyle-ui", "activequalitylabel", "upcomingadnotification"]

How do I quantify my optimizations?

After optimizing your SDK, by enabling and disabling certain features, you might want to quantify those actions.

  • You could compare the file size of your THEOplayer.js files. For example, when building THEOplayer 2.78.1, with only the "HLS" and "UI" feature enabled, the library size is 315 kB. THEOplayer 2.78.1, with almost all features enabled, is almost 77% larger at 558 kB.
  • You could measure the loading time of your THEOplayer library.

Note that optimizing a video player goes way beyond reducing your file size. As a developer, you could consider async library loading, you could change your ABR strategy (as demonstrated), you want to optimize your time-to-first-frame, and much more!

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