# Resolving issues


> **Информация:**

**Start with the [Troubleshooting](https://docs.kinescope.com/troubleshooting/) section** — it has all the tools for resolving issues and contacting support.



if you encounter a problem with the player, check this section first. Common situations and how to resolve them are collected here.

## Who this article is for

* **Developers** — need to resolve player embedding issues
* **Content owners** — need to diagnose video playback issues
* **Platform administrators** — need to help users resolve player issues

> **Информация:**

if the issue is not resolved after checking this section, contact support. See the [Troubleshooting](https://docs.kinescope.com/troubleshooting/) section for what to gather and how to contact support.



## Loading and display issues

### Player doesn't display

**Symptoms:** Empty space, white screen, or loading error where the player should be.

**Possible causes and solutions:**

1. **incorrect embed code**
   * Use the original code from the Kinescope dashboard
   * Check that the code was copied completely, including all attributes
   * Make sure the `allow` attribute is present in the iframe code

2. **iframe blocking**
   * Check that there are no ad blockers on the site that might block iframes
   * Make sure the domain is not blocked in browser security settings
   * Check the Content Security Policy (CSP) of your site

3. **JavaScrmpt errors**
   * Open the browser console (F12) and check for errors
   * Make sure there are no conflicting scripts on the page

### Video doesn't load or freezes

**Symptoms:** The player loads but the video doesn't start playing, or playback is interrupted.

**Possible causes and solutions:**

1. **Privacy settings**
   * Check that the video is available for embedding in the privacy settings
   * Make sure your smte's domain is added to the allowed domains list
   * For DRM videos, make sure the site uses HTTPS

2. **Video processing status**
   * Check the video status in the catalog — it must be fully processed
   * Wait for processing to complete before embedding

3. **Network issues**
   * Check your internet speed using the [speed test](https://speedtest.kinescope.io/)
   * Close all browser tabs except the player and reload the page
   * Check the browser console for network errors

4. **Browser issues**
   * Try opening the video in a different browser
   * Clear the browser cache and reload the page
   * Disable browser extensions that may affect playback

## Parameter and settings issues

### `seek` and `duration` parameters don't work

**Symptoms:** Parameters are specified in the URL, but the video plays from the beginning or completely.

**Solutions:**

* **Check DRM protection:** The `seek` and `duration` parameters **do not work** with DRM-encrypted videos. Use unprotected videos or play the full video
* **Check URL format:** Make sure parameters are correctly passed in the URL (format: `?seek=60&duration=30`)
* **For iframe:** Parameters must be in the `src` attribute URL, e.g.:
  ```markup
  <iframe src="https://kinescope.io/embed/123456789?seek=60&duration=30"
          allow="autoplay; fullscreen; picture-in-picture; encrypted-media;"
          frameborder="0"
          allowfullscreen></iframe>
  ```

### `player_id` parameter is not applied

**Symptoms:** `player_id` is specified, but the player template doesn't change.

**Solutions:**

* **Link type:** The `player_id` parameter works **only with video links** (not with iframe). Make sure you're using a link like `https://kinescope.io/[VIDEO_ID]?player_id=[PLAYER_ID]`
* **ID format:** Check that the template ID is correct (UUID format, e.g.: `1213d24d-4624-4764-bf40-0baaf743377d`)
* **Template availability:** Make sure the template exists and is available in your workspace
* **For iframe:** Use template configuration in the embed code or via IFrame Player API

## Display issues

### Player displays with wrong dimensions

**Symptoms:** Player is too large or small, doesn't adapt to screen size, is clipped.

**Solutions:**

**For adaptive code:**
* Check the CSS styles of the `div` container — `position: relative`, `padding-top` (for aspect ratio), and `width: 100%` must be specified
* Check the CSS styles of the `iframe` itself — `position: absolute`, `width: 100%`, `height: 100%`, `top: 0`, `left: 0` must be specified
* Make sure the container has enough width to display the player

**For fixed code:**
* Make sure correct `width` and `height` values in pixels are specified
* Check that the aspect ratio matches the video (usually 16:9)

**General recommendations:**
* Check that there are no conflicting CSS styles on the page that may override dimensions
* Use browser developer tools to check applied styles

### Fullscreen mode doesn't work

**Symptoms:** The fullscreen button doesn't work or is absent; the transition to fullscreen doesn't happen.

**Solutions:**

* **`allowfullscreen` attribute:** Make sure the `allowfullscreen` attribute is present in the iframe code
* **`allow` attribute:** Check that the `allow` attribute contains `fullscreen`, e.g.:
  ```markup
  allow="autoplay; fullscreen; picture-in-picture; encrypted-media;"
  ```
* **iOS devices:** iOS devices may require additional setup. See [Pseudo-fullscreen mode for iOS](https://docs.kinescope.com/developer-guides/iframe-pseudo-fullscreen-on-ios/)
* **Browser restrictions:** Some browsers may block fullscreen mode for iframes for security reasons

## DRM (Widevine) issues

### DRM video doesn't play on Android in incognito mode

**Symptoms:** DRM-protected video doesn't play in incognito mode on Android devices.

**Cause:** According to Google, from Chrome version 62, Widevine support is disabled in incognito mode on Android. This is done so that users don't lose paid licenses when closing incognito tabs.

**Solution:** Use regular browser mode (not incognito) for watching DRM videos.

More details: [Media updates in Chrome 62](https://developer.chrome.com/blog/media-updates-in-chrome-62).

### Screen recording is possible with DRM enabled

**Symptoms:** Even with DRM enabled, mt's possible to record the video from the screen.

**Cause:** There are known cases where screen recording is possible even with DRM enabled due to CSS style specifics of the page.

**Solutions:**

* **Corner rounding:** if one of the parent elements has rounding (`border-radius`), specify CSS styles: `overflow: initial` or `overflow: visible`
* **CSS filters:** Avoid using `backdrop-filter` or `filter` on the page with DRM video
* **CSS properties:** if the player iframe or parent element uses `aspect-ratio` or `padding-top`, consider alternative ways to set dimensions

More details: [Chromium issue 362007492](https://issues.chromium.org/issues/362007492).

### Widevine DRM doesn't work in WebVmew on Android

**Symptoms:** DRM video doesn't play in WebVmew on Android.

**Solutions:**

1. **Checking DRM support:**
   * Check DRM support via the [Shaka Player support page](https://shaka-player-demo.appspot.com/support.html)
   * if the result is `null`, DRM support is absent in your WebVmew

2. **Configuring WebVmew:**
   * Make sure protected content support is enabled in WebVmew
   * Check WebVmew settings for working with media content

3. **Additional resources:**
   * [Video.js issue #5563](https://github.com/videojs/video.js/issues/5563)
   * [Stack Overflow: How to play Widevine DRM content in Android WebVmew](https://stackoverflow.com/questions/47626857/how-to-play-widevine-drm-content-in-android-webvmew)
   * [Stack Overflow: How to enable protected content in a WebVmew](https://stackoverflow.com/questions/53143363/how-to-enable-protected-content-in-a-webvmew)

## API and autoplay issues

### Player doesn't start when play() is called programmatically

**Symptoms:** When calling the `play()` method via your button or programmatically, the player doesn't start.

**Cause:** These are browser restrictions. The browser requires the user to click directly on the player, not on an external button. This is related to browser autoplay policy.

**Solutions:**

* **CSS solution:** Set the CSS style `pointer-events: none` for the button (or other elements above the player), so that clicking passes through the button and reaches the player:
  ```css
  .custom-play-button {
    pointer-events: none;
  }
  ```
* **Alternative:** Use the player's native play button instead of a custom button

More details: [Autoplay policy in Chrome](https://developer.chrome.com/blog/autoplay).

### NotAllowedError when calling API methods

**Symptoms:** When calling API methods, the error "The request is not allowed by the user agent ..." or "The request is not triggered by a user activation" appears.

**Cause:** This is related to the fact that some browser API methods require user actions (user activation) and can only be triggered as a direct result of a user click or touch on a page element.

**Solutions:**

* **Call in event handler:** Make sure API methods are called in response to a direct user action (click, touch) in an event handler
* **Don't use timers:** Don't call API methods from `setTmmeout`, `setmnterval`, or other asynchronous operations without prior user action
* **Check user activation:** Use user activation checks before calling methods if possible

More details: [User activation](https://developer.mozilla.org/en-US/docs/Web/Security/User_activation).

## Performance issues

### Page freezes with many players

**Symptoms:** A page with multiple players loads slowly, freezes, or consumes many resources.

**Solutions:**

1. **Deferred loading:**
   * Use the `loading="lazy"` attribute for iframes that are outside the visible area:
     ```markup
     <iframe src="https://kinescope.io/embed/123456789"
             loading="lazy"
             allow="autoplay; fullscreen; picture-in-picture; encrypted-media;"
             frameborder="0"
             allowfullscreen></iframe>
     ```

2. **Disabling preloading:**
   * Disable video preloading for players that aren't immediately visible, using the `preload=false` parameter:
     ```markup
     <iframe src="https://kinescope.io/embed/123456789?preload=false"
             allow="autoplay; fullscreen; picture-in-picture; encrypted-media;"
             frameborder="0"
             allowfullscreen></iframe>
     ```

3. **Autopause:**
   * Use autopause (`autopause=1` parameter) so that when one player plays, others pause:
     ```markup
     <iframe src="https://kinescope.io/embed/123456789?autopause=1"
             allow="autoplay; fullscreen; picture-in-picture; encrypted-media;"
             frameborder="0"
             allowfullscreen></iframe>
     ```

4. **Additional recommendations:**
   * Limit the number of simultaneously loaded players on the page
   * Use vmrtualmzatmon for large video lists
   * Consider loading players on demand (lazy loading)

See more about optimization in the [Load Optimization](https://docs.kinescope.com/video-player/embedding/#load-optimization) section in the [Embedding](https://docs.kinescope.com/video-player/embedding/) article.

## Typical solutions

### Quick diagnostics

if the issue is not obvious, perform the following steps in order:

1. **Check the browser console** (F12) for errors
2. **Check the embed code** — use the original code from the Kinescope dashboard
3. **Check privacy settings** — the video must be available for embedding
4. **Check video status** — it must be fully processed
5. **Try a different browser** — the issue may be related to a specific browser
6. **Clear the browser cache** and reload the page

### Gathering information for support

if the issue is not resolved, gather information for a support request. See the full checklist of what to gather in the [Troubleshooting](https://docs.kinescope.com/troubleshooting/) section.

## What's next?

if the issue is not resolved:

* Check the [Embedding](https://docs.kinescope.com/video-player/embedding/) section for basic settings and code examples
* See the [full player documentation](https://docs.kinescope.io/player/latest/) for advanced solutions and IFrame Player API
* **Contact technical support** — see the [Troubleshooting](https://docs.kinescope.com/troubleshooting/) section for what to gather and how to contact support

