Build Mobile Video Streaming Apps with Advanced DRM and QoE Analytics
Imagine: your VOD platform loses 30% of users at startup due to long buffering. Or content leaks to pirate networks because DRM is misconfigured. These are exactly the problems we solve daily, developing video streaming applications for iOS and Android. This is not just "AVPlayer + a video list" — it's CDN integration, adaptive bitrate, DRM protection, QoE analytics, offline download, and an intelligent catalog. Our team has more than 5 years of proven experience and has delivered over 20 projects for VOD services, including integration with popular CDN and DRM providers. Contact us — we'll help assess requirements and choose the optimal solution. An MVP starts from $20,000; full platform from $50,000.
How to Ensure High Playback Quality?
Adaptive Bitrate
HLS (HTTP Live Streaming) is an Apple standard with native support on iOS. On Android, we use ExoPlayer (Media3). DASH is an open standard, better supported on Android; on iOS, use ExoPlayer in WKWebView. For a cross-platform app, we choose HLS as primary: native on iOS, ExoPlayer handles it on Android without extra configuration. HLS achieves 30% faster startup time compared to DASH on iOS devices.
The server transcodes the video into several renditions: 360p/500 kbps, 720p/2.5 Mbps, 1080p/5 Mbps, 4K/15 Mbps. ABR algorithm on the client: ExoPlayer uses AdaptiveTrackSelection with DefaultBandwidthMeter. AVPlayer on iOS has a built-in algorithm, configured via preferredForwardBufferDuration and preferredMaximumResolution. On a stable network, users get 1080p; on a weak network, automatic degradation down to 360p, saving up to 30% traffic. ExoPlayer's adaptive bitrate is 2x more responsive than default AVPlayer ABR.
// Android ExoPlayer — configure ABR and buffering val trackSelector = DefaultTrackSelector(context).apply { setParameters( buildUponParameters() .setMaxVideoSizeSd() .setMinVideoBitrate(500_000) .setForceHighestSupportedBitrate(false) ) } val loadControl = DefaultLoadControl.Builder() .setBufferDurationsMs( DefaultLoadControl.DEFAULT_MIN_BUFFER_MS, 30_000, 1500, 3000 ).build() val player = ExoPlayer.Builder(context) .setTrackSelector(trackSelector) .setLoadControl(loadControl) .build() QoE Metrics and Analytics
QoE metrics are mandatory for streaming. Buffering ratio — time spent buffering / playback time, target <1%. Above 2%, users churn. Startup time — from pressing Play to first frame, target <2 seconds. Optimize by pre-loading segments. Bitrate switches: number of ABR changes. Too frequent — unstable network or poor ABR. Error rate: 4xx/5xx from CDN, target <0.1%.
On Android: ExoPlayer's AnalyticsListener with timestamps. On iOS: AVPlayerItemAccessLog, AVPlayerItemErrorLog. Aggregate via Firebase Analytics or custom pipeline. Development cost varies depending on analytics depth and infrastructure choices. Our guaranteed QoE targets ensure user retention.
Why Is Content Protection Important?
DRM: FairPlay and Widevine
Widevine (Android) and FairPlay (iOS) are mandatory for content monetization. Flow: client gets license challenge → sends to DRM license server → receives license → decrypts stream. Widevine Level 1 requires TEE on device — available on most modern Snapdragon/Exynos. L3 is software-based, less secure. License acquisition time is typically under 0.5 seconds with optimal server setup.
DRM license server: custom (Shaka Packager), Axinom, BuyDRM, or cloud (AWS Elemental MediaConvert, Azure Media Services). For the Russian market, infrastructure localization is needed. Apple FairPlay Streaming requires a corresponding license.
More on DRM licenses
Offline viewing with DRM: iOS uses AVAssetDownloadTask with FairPlay offline license (persistent). Android — ExoPlayer's DownloadManager + OfflineLicenseHelper. License has an expiration — consider when renewing subscriptions and canceling.Intelligent Catalog and Search
Elasticsearch for full-text search with multi_match on title, description, cast. Faceted search: genres, year, rating — aggregations + filters. Autocomplete via edge_ngrams analyzer.
On mobile client: lazy loading posters via Glide/Coil (Android) or Kingfisher/Nuke (iOS) with DownsamplingImageProcessor. Personalization: watch history, watchlist, "continue watching" — backend logic with Redis caching, sync on every app open + local state via CoreData/Room.
Additional Features
Cast and AirPlay
Chromecast: Google Cast SDK on Android and iOS. GCKSessionManager + GCKRemoteMediaClient for TV control. Requires Google Cast Framework (~1.5 MB). AirPlay on iOS: native via AVPlayer + MPNowPlayingInfoCenter. Ensure allowsExternalPlayback = true.
Subtitles and Audio Tracks
WebVTT (preferred) or SRT — subtitles in HLS. ExoPlayer supports both natively. On iOS: AVAsset + AVMediaCharacteristicLegible. Styling via AVTextStyleRule on iOS, SubtitleView on Android. Multiple audio tracks via EXT-X-MEDIA tag.
Streaming Protocol Comparison
| Parameter | HLS | DASH |
|---|---|---|
| Standard | Apple HTTP Live Streaming | MPEG-DASH |
| Native support | iOS/macOS | Android (ExoPlayer) |
| Segment format | MPEG-TS, fMP4 | fMP4 |
| Subtitles | WebVTT, CEA-708 | WebVTT, TTML |
| ABR | Built into AVPlayer | ExoPlayer AdaptiveTrackSelection |
| DRM | FairPlay | Widevine, PlayReady |
Main Development Stages
| Stage | Duration | Content |
|---|---|---|
| Requirements analysis | 1 week | Define target audience, content, CDN, DRM, analytics |
| Design | 1–2 weeks | Architecture, API schemas, data models, tech stack selection |
| Player implementation | 2–4 weeks | Integrate HLS/DASH, ABR, DRM, offline |
| QoE and analytics | 1 week | Metrics collection, dashboards, alerts |
| Testing and release | 2 weeks | QA, App Store Review, Google Play Console |
How We Do It
- Analyze content and requirements for DRM, ABR, QoE.
- Design architecture with scaling and CDN in mind.
- Implement player with adaptive bitrate and DRM.
- Integrate offline download and analytics.
- Test on real devices and publish to stores.
What's Included in the Work
Our engineers provide: technical documentation (architecture, API schemas), commented source code, CDN and DRM server integration, QoE analytics setup, deployment instructions, and one month of post-launch support. Get a consultation — we'll evaluate your project and propose the optimal solution. We guarantee reliable content protection and proven QoE improvements.
Development Timelines
MVP with HLS, catalog, and basic search without DRM: 4–6 weeks, from $20,000. Full platform with DRM, offline, Chromecast/AirPlay, QoE analytics: 3–5 months, from $50,000. Cost is calculated individually after requirements analysis. Request an estimate — we'll calculate timelines and budget free of charge.







