Jump to Content
Home
Documentation
Recipes
API Reference
Streams
Playback
Encoding
Bitmovin Dashboard
Documentation
Streams
Playback
Encoding
Bitmovin Dashboard
Home
Documentation
Recipes
API Reference
Search
Player SDKs
Introduction
The Bitmovin Dashboard
Managing Player Licenses
Third Party Licensing
Testing your streams
Managing your organization & team access
Managing multiple organizations
Managing API Keys
Changing your login credentials
Managing your subscription
Managing your payment & billing details
Enabling usage reports
Enabling 2-Step Verification
Supported Platforms & Devices
Lifecycle Policy
DRM Support
Advertising Support
CAF Support
Low Latency Support
Fundamentals of LL-DASH and LL-HLS
Subtitles & Captions Support
Thumbnail Preview Support
Bitmovin Player UI
UI Configuration
Timeline Markers
Localisation
Custom error messages
Build a custom UI structure
Customising the UI
Apply your branding
Add a custom Button component
Player UI CSS Class Reference
Using a customized UI
UI Framework
UI Architecture
Lifecycle of a UI instance
Player communication
Mobile SDKs support
FAQs
How to enable recommendation UI
Why is the full screen player UI different with iOS and other devices?
How can I change the labels for video/audio qualities or subtitles in the settings menu?
Can I hide the "playback speed" menu of the player UI?
How do I disable auto-hiding the control bar?
Why does `enterfullscreen` require a user gesture?
Why is there sometimes no settings button in the control bar?
How to add Timeline Markers on Mobile
Bitmovin Player Integrations
Bitmovin Player Accessibility
Guides
Migrating from another Player to the Bitmovin Player
Network API
Network API - HTTP Request/Response manipulation
How to send cookies along with requests in the Player SDKs
Casting
How to debug streams on Chromecast devices
How to enable Chromecast support
Analytics
How to activate the Player and Analytics bundle in the Bitmovin Dashboard
Using Bitmovin Player events for custom metrics reporting
Smart TVs
Smart TVs configuration and best practices
Playback
How to Setup VR and 360° Video Playback
WebVTT based thumbnails
Automatic CDN switching
How can I utilize the CDN fallback feature of the player?
Improving Video SEO With Bitmovin player
FAQs
DRM
How does offline DRM work on Bitmovin?
Why can't I play DRM protected streams in Chrome?
Why is my DRM stream only working on real, physical devices?
Does one DRM standard work across all devices?
Does DRM work on iOS in Chrome/Firefox browsers?
Why does the playback of 360°/VR content with DRM not work?
Advertising
Is Bitmovin Advertising Module (BAM) certified with IAB?
Are there known limitations with the IMA SDK Integration?
Licenses/Billing
What counts as an impression in the player?
How can I allowlist a domain, IP, app ID, package name, or bundle identifier?
Why does the player show the error message “Your player is not allowed to play on the domain ...”?
Playback, Subtitles
Does Bitmovin Player support Low Latency streaming?
What ABRs do the Bitmovin Player SDKs support?
Why are my WebVTT subtitle tracks not in sync with the video?
Why are subtitles not shown when casting from Android/iOS to a custom receiver app?
Why can't the quality be manually changed in Safari?
Why does my VR / 360° not work on iOS devices?
Why do I see an additional "CC1" entry in the subtitle menu in Safari/iOS?
How can I enable autoplay for a video?
Why doesn’t autoplay work consistently on browsers?
How can I remove or change the watermark of the Bitmovin Player UI?
How can I remove the watermark from the Chromecast receiver?
Browsers, Network API
Why does the Network API not work in Safari?
My Wowza stream does not play in Internet Explorer and Edge anymore using the HTML5 player
How do I enable CORS on my web server / cloud storage?
Bitmovin GitHub Repositories
Bitmovin Community
Bitmovin Blog
Video Glossary
Analytics
How to Set Up
Analytics Web Collector
Analytics Android Collector
Analytics iOS/tvOS/visionOS Collector
Analytics Roku Collector
Bitmovin Grafana Plugin
Bitmovin Analytics for Looker Studio
New Relic Analytics Integration
Configuration Guide
How to set up SSAI tracking
Cookies in Bitmovin Analytics
How to set up Bitmovin Analytics with Google Tag Manager
Metrics and Dashboard
Getting started with the Analytics API
Getting started with the Api Explorer
How to recreate dashboard queries via the API
How to create an Alert in the Bitmovin Analytics dashboard
Using Top-Errors for debugging
Exporting your Data
S3 Role-Based Output for Analytics exports
GCS Service-Account Output for Analytics exports
Microsoft Azure Storage Output for Analytics exports
Supported Platforms and Devices
Native Collector API v3
iOS Collector Migration Guide from API v2 to v3
Android Collector Migration Guide from API v2 to v3
Articles
Analytics API Fields
Analytics dashboard metrics reference
Data Aging in Bitmovin Analytics
Segmenting your audience
FAQs
What counts as an Analytics impression?
How can values of customData fields be changed?
Which metrics related to the startup time are collected by Bitmovin Analytics?
Total Hours Watched Metric
Average View Time Metric
Can I change the timezone used for Bitmovin Analytics data?
How we measure concurrent viewers
How can I select which license shows up first when entering the Bitmovin Analytics dashboard?
What is the length limit for fields?
How often do you update your Kotlin Version?
Overriding bundled Bitmovin Player v8 Analytics collector
Can Bitmovin Analytics URLs be shared?
Are there any limitations on full data exports?
How does Analytics distinguish between VOD and live content?
What additional error data can be retrieved in Bitmovin Analytics
Do-Not-Track Handling in Analytics
What is an ANALYTICS_VIDEOSTART_TIMEOUT_REACHED error?
What is an ANALYTICS_BUFFERING_TIMEOUT_REACHED error?
How can I export my full data set from Bitmovin Analytics?
Custom Data setup on Bitmovin Player v3 for Android and iOS
What permissions do I need to set on my S3 buckets for Analytics Exports?
How can the userId be randomized for each session of the same user?
How to setup Bitmovin Analytics on SmartTVs
What is an ANALYTICS_QUALITY_CHANGE_THRESHOLD_EXCEEDED error?
Is there a sandbox environment to test Bitmovin Analytics?
Why do I see a maximum of 50 quality switches within an hour in a session?
What are Industry Insights?
Licenses in Bitmovin Analytics
How we measure buffering in Bitmovin Analytics
Is offline tracking of Analytics Events supported?
How many custom data fields are included?
Release Notes
Analytics Collector - Web
Analytics Collector - Android
Analytics Collector - iOS
Analytics Collector - Roku
Player Web SDK - Browsers, Smart TVs, Set-Top Boxes & Game Consoles
Getting Started with the Web SDK
Getting started with the Web Player on PlayStation 5
Getting started with the Web Player on PlayStation 4
Getting started with the Web Player on LG webOS
Getting started with the Web Player on Samsung Tizen
Getting started with the Modular Web Player
Utilities for Web Player integration
Player Configuration
DRM
Streaming DRM protected content with Bitmovin Player Web SDK
How does FairPlay work?
Setup using multiple DRM solutions
How to play MPEG-CENC ClearKey content
Playing protected content with DRM.cloud
Playing protected content with Irdeto
Playing protected content using BuyDRM
Playing DRMToday / Castlabs protected content with the Web Player SDK
Playing protected content with EZDRM
Playing protected content with Conax DRM
Playing protected content with Kaltura
Playing protected content with Sigma DRM
Advertising
Setting up Ads with the Web Player
Using Google DFP Video Ads
Changing the locale language for ads
How can I show a UI when ads are paused by the IMA SDK?
How can I access the IMA-SDK of HTML5 player
Integrate the Open Measurement SDK
Low-Latency
Stream Requirements for Low-Latency Streaming
Configure the Player for Low-Latency Streaming
Integrations
Integrating Bitmovin Player with Teleport
Integrating Bitmovin Player with Streamroot
Examples
FAQs
How to change request timeout in the Bitmovin Web Player
How to add external subtitles to the Bitmovin Player
How to import player modules?
Release Notes (Web)
Player Android SDK
Getting Started
Offline Playback
Working with DRM providers
Logging in the Android Player SDK
Migrating from ExoPlayer to the Bitmovin Player
Setting up basic Google Cast Support
Setting up Picture-in-Picture with the Player Android SDK
Setting up Ads with the Android Player
Setup advertising with Google IMA
Setting up Companion Ads
VMAP and ad playlists
Media Session Integration
Examples
FAQs
How often do you update your Kotlin Version?
Can I use Media3/ExoPlayer and the Bitmovin Player Android SDK in the same project?
How can I use custom labels for audio or subtitle tracks?
How can I specify a custom Bitmovin Analytics Collector version?
What IMA SDK versions are compatible with the Bitmovin Player Android SDK?
How can I prevent screen turning off or entering ambient mode during video playback?
How do I enable debug logs in the Bitmovin Android Player SDK?
Release Notes (Android)
Player iOS, tvOS, VisionOS SDK
Getting Started
Listening to Events
Offline Playback
Network API
Manipulating HTTP Requests
Manipulating HTTP Responses
Customizing HTTP Request Retries
(iOS) Networking FAQ
Working with DRM providers
Logging in the iOS & tvOS Player SDK
Migrating from AVPlayer to the Bitmovin Player
Picture-in-Picture without using the Bitmovin Web UI
Watch content together with SharePlay
Setting up Ads with the iOS Player
Setup advertising with Google IMA
VMAP and ad playlists
Configuring Now Playing Information
Examples
FAQs
How to play DRM-protected sources when casting
How to let audio play when the iOS device is in Silent mode?
What IMA SDK versions are compatible with the Bitmovin Player iOS & tvOS SDK?
Dealing with expiring streams while the app is in the background
How do I enable debug logs in the Bitmovin iOS & tvOS Player SDK?
Release Notes (iOS)
Player Roku SDK
Getting Started
Migrating from Native Video Node to the Bitmovin Player
Guides
Troubleshooting and Error Handling
Playing DRMToday / Castlabs protected content with the Roku Player SDK
Examples
Release Notes
Stream Lab
Introduction
Supported Platforms & Devices
Test cases
Regular Tests
Manual Tests
Guides
Adding a stream
FAQs
What is a test environment in Stream Lab
How long are test results retained?
Can I test geo-restricted streams?
Can I provide custom DRM headers?
Player React Native SDK
Overview
Getting Started with the React Native SDK
Setting up your Environment
Setting up Dependencies
Implementing a basic Player screen
Configuring your License
Feature guides
Advanced playback configuration
Accessing the native Player instance
Listening to events
DRM-protected playback
Adding external subtitle tracks
Adding external thumbnail tracks
Enabling Picture in Picture mode
Enabling fullscreen playback
Setting up Ads in React Native
Enabling Bitmovin Analytics
Customizing the HTML Player UI
Offline Playback
Enabling Google Cast support
Contributing to the SDK
Logging in the React Native Player SDK
FAQs
Can the React Native SDK be used to target web browsers?
What is the underlying Bitmovin Player Android/iOS SDK version?
Which platforms are supported by our React Native SDK?
What’s the minimum Android/iOS Version of our React Native SDK?
What’s the current underlying ExoPlayer Version on Android?
How to let audio play when the iOS device is in Silent mode?
Release Notes
Player Flutter SDK
Overview
Getting Started with the Flutter SDK
Setting up your Environment
Setting up Dependencies
Configuring your License
Implementing a Basic Player Page
Feature guides
Enabling Google Cast support
Enabling Picture in Picture mode
Contributing to the SDK
Release Notes
Player Web X
About Player Web X
Support Matrix
Getting started
Packages & Bundles
Compatibility with Player Web Version 8.x
Features
Handling sources through API
Simple playback
Adding multiple sources
Source/Playback API
Load control
Analytics Package
Subtitles
Subtitles API
Subtitle Events
EventBus
Create integrations with Packages
Release Notes (PWX)
Suggest
Learn how to build a SharePlay experience with Bitmovin Player iOS SDK.