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 to create a (great) ticket

Customers can create tickets through our Jira Service Desk at https://servicedesk.theoplayer.com. You can obtain a Service Desk account by purchasing a support plan through https://portal.theoplayer.com, or by contacting our Sales team.

Creating a ticket

You use our Jira Service Desk to create tickets and collaborate with our team.

When you go to https://servicedesk.theoplayer.com, you'll be asked to enter your credentials. Afterwards, you must locate the "Need to raise a request? Contact us."-button, and click it. This action will take you to https://opentelly.atlassian.net/servicedesk/customer/portal/1/group/1/create/150, as illustrated by the screenshot below.

THEOplayer Jira Service Desk

Enter a clear summary, select the appropriate request type, and enter a valuable description.

  • Select "Information" as the request type when you're not sure how to implement a specific feature, or when you're not sure whether something is a bug or a feature request.
  • Select "Bug" if you think your issue is due to a bug introduced by THEOplayer.
  • Select "Feature" if you want to request a change or feature.
  • Select "Renewals/Licensing" if you have license issues, or questions about your license.

Creating a great ticket

A great ticket makes your life - and our life - easier. The collaboration will go smoother, and your tickets will be resolved faster.

A great ticket is C.R.U.S.P. (= Collaborative, Reproducible, Use Case, Specific, Proven).

Collaborative | Be a team player.

  • Include resources that help us understand your ticket. (For example, when documenting a difficult to reproduce bug, attach a Loom video.) Things that are obvious to you, might not be obvious to us.
  • Refer to other tickets when they're related.
  • Refer to documentation and samples that you think are related.
  • Not sure if "something" it's relevant? Mention it regardless.

Reproducible | Provide simple & reliable reproduction steps and resources.

  • Don't send us the link to your website. Instead, set up a simple reproduction page on https://codepen.io or https://replit.com.
  • Don't send us your .apk or App Store URL. Don't send us complex code bases. Instead, fork our Github reference apps (e.g. Basic Playback for iOS), include your code that allows us to reproduce the issue, and forward it to us.
  • Don't send us obfuscated, minimized or transformed (e.g. Webpack) code. Use simple code in simple environments.
  • Ensure that your streams are reliable. Streams that can expire introduce significant overhead and will slow down the resolution time.
  • Issues that you (or we) cannot consistently reproduce introduce significant overhead and may be rejected. Identify and describe consistent reproduction steps.
  • Avoid credentials, VPNs or geo-restrictions as they introduce significant overhead. (If it's mandatory: specify this in every ticket. Although we might remember it recall it from your other tickets, don't assume that we remember them. Our team is spread over hundreds of customers and thousands of tickets.)

Use case | Provide sufficient context.

  • What is the use case you're trying to achieve? Why are you interested in using this API or feature?
  • Providing context helps our team to tailor their answers, recommendations and alternatives. We want to understand your big picture -- give us chance.

Specific | Be as specific and detailed as you can.

  • Which SDK are you using? Which version?
  • What browser or platform is relevant? Which version?
  • What is the current behavior? What is the expected behavior?
  • What is the reproduction stream? What are the reproduction steps?

Proven | Provide as much self-research as possible.

  • What have you done to troubleshoot it yourself?
  • What happens if you try the latest version of THEOplayer? (Or an older version of THEO?)
  • What happens if you try another player (e.g. Safari, Dash.js, ...)?
  • What happens if you try another (third-party) stream?
  • What happens if you try to implement it in a different way?
  • What happens if you try another version of your platform?
  • How do you know that the issue is related to THEOplayer?


  • Avoid using emails if you're an existing customer. Emails get lost and people are bottlenecks. (Only use emails to refer to tickets when needed.)
  • Refer to our article on "How to investigate a ticket" if you are interested in understanding how process your ticket. (You might also find this article interesting if you want to improve your troubleshooting capabilities!)
Make sure to follow us on GitHub!
Copyright © 2022. All Rights Reserved.
New York