{"id":81891,"date":"2026-09-01T12:49:05","date_gmt":"2026-09-01T07:19:05","guid":{"rendered":"https:\/\/www.tothenew.com\/blog\/?p=81891"},"modified":"2026-09-01T15:52:46","modified_gmt":"2026-09-01T10:22:46","slug":"integrating-conviva-analytics-into-a-video-streaming-application-from-playback-events-to-actionable-qoe","status":"publish","type":"post","link":"https:\/\/www.tothenew.com\/blog\/integrating-conviva-analytics-into-a-video-streaming-application-from-playback-events-to-actionable-qoe\/","title":{"rendered":"Integrating Conviva Analytics into a Video Streaming Application: From Playback Events to Actionable QoE"},"content":{"rendered":"<h1>Introduction<\/h1>\n<p>In a video streaming application, successfully playing a video is only the beginning. For a good viewer experience, we also need to know how quickly playback starts, whether the video buffers, how Adaptive Bitrate (ABR) behaves, which devices experience failures, and whether DRM, network, CDN, or player issues are affecting playback. This is where video analytics and Quality of Experience (QoE) monitoring become important. In our streaming application, we integrated Conviva Video Streaming Insights (VSI) to understand the real playback experience across devices and platforms. Conviva\u2019s platform uses client-side telemetry and stateful analytics to provide real-time visibility into video streaming performance and viewer experience.<\/p>\n<p>This blog covers what Conviva is, why we chose it, alternatives we considered, how the integration works, challenges we encountered, how we addressed them, and some of the advanced analytics capabilities that can be built on top of the basic integration.<\/p>\n<h2><strong>What Is Conviva?<\/strong><\/h2>\n<p>Conviva is a real-time experience analytics platform designed to help businesses understand how users experience digital products, with a strong focus on video streaming. For video applications, Conviva\u2019s\u00a0Video Streaming Insights (VSI)\u00a0captures information directly from the player and turns playback events and states into QoE metrics.<\/p>\n<p>Instead of looking only at server logs such as:<\/p>\n<blockquote><p>Manifest requested<br \/>\nSegment requested<br \/>\nHTTP 200<br \/>\nLicense request successful<\/p><\/blockquote>\n<p>Conviva allows us to answer questions closer to the viewer\u2019s actual experience:<\/p>\n<blockquote><p>Did playback start quickly?<br \/>\nDid the viewer experience buffering?<br \/>\nWhat bitrate did the viewer receive?<br \/>\nDid the player switch between resolutions frequently?<br \/>\nWhy did playback fail?<br \/>\nWhich device or OS is affected?<br \/>\nWhich content is experiencing the problem?<br \/>\nConviva\u2019s current documentation describes VSI as providing real-time streaming intelligence around metrics such as video startup time, rebuffering, playback failures, audience engagement, and other video performance dimensions.<\/p><\/blockquote>\n<p>This makes Conviva particularly useful for OTT applications where player behavior can vary significantly across devices, operating systems, networks, CDNs, DRM systems, and content types.<\/p>\n<h2><strong>Why Did We Choose Conviva?<\/strong><\/h2>\n<p>There are several video analytics solutions available, so choosing a platform is not simply about the number of metrics it supports.<\/p>\n<p>For our use case, some of the important factors were:<\/p>\n<p><strong>1. Player-Level QoE Visibility<\/strong><br \/>\nWe needed visibility into what actually happened during playback rather than relying only on backend logs.<\/p>\n<p>Metrics such as startup time, rebuffering, bitrate, resolution, playback failures, and player state are directly relevant to our video experience.<\/p>\n<p><strong>2. Multi-Platform Support<\/strong><br \/>\nOur application works across multiple platforms, so having support for different player technologies was important.<\/p>\n<p>Conviva provides integrations across platforms including Android players such as ExoPlayer\/Media3 and iOS players such as AVPlayer\/AVQueuePlayer, along with React Native and other application frameworks.<\/p>\n<p><strong>3. Real-Time Analysis<\/strong><br \/>\nAnother important factor was the ability to investigate problems while they are happening.<\/p>\n<p>For example, if a new application release causes buffering to increase on a particular device, we want to identify the regression quickly rather than discovering it through user complaints.<\/p>\n<p><strong>4. Rich Dimensions and Metadata<\/strong><br \/>\nQoE metrics become significantly more useful when they can be filtered by dimensions such as:<\/p>\n<ul>\n<li>Content<\/li>\n<li>Device<\/li>\n<li>OS<\/li>\n<li>Application version<\/li>\n<li>Geography<\/li>\n<li>Network<\/li>\n<li>Subscription type<\/li>\n<li>Player configuration<\/li>\n<\/ul>\n<p>This allows an issue to be narrowed from:<\/p>\n<blockquote><p>\u201cSome users are buffering.\u201d<\/p><\/blockquote>\n<p>to something much more actionable:<\/p>\n<blockquote><p>\u201cBuffering increased after the latest release for a particular device\/OS combination.\u201d<\/p><\/blockquote>\n<p><strong style=\"font-size: 1.28571rem;\">What Are the Alternatives?<\/strong><\/p>\n<p>Conviva is not the only solution in this space.<\/p>\n<p>Some common alternatives include:<\/p>\n<ul>\n<li>Mux Data<\/li>\n<li>Bitmovin Analytics<\/li>\n<li>PAW \/ Youbora<\/li>\n<li>In-House Analytics<\/li>\n<\/ul>\n<p>For us, Conviva provided a good balance between\u00a0player-level visibility, cross-platform support, real-time analytics, and the ability to drill down into QoE issues\u00a0without building and maintaining the entire analytics infrastructure ourselves.<\/p>\n<h2><strong>How Our Conviva Integration Works<\/strong><\/h2>\n<p>The integration can be viewed as a simple pipeline:<\/p>\n<blockquote><p>Video Player<br \/>\n\u2193<br \/>\nPlayer Events<br \/>\n\u2193<br \/>\nAnalytics Adapter<br \/>\n\u2193<br \/>\nConviva SDK<br \/>\n\u2193<br \/>\nConviva Platform<br \/>\n\u2193<br \/>\nQoE Metrics \/ Dashboards \/ Analysis<\/p><\/blockquote>\n<p>The important architectural decision is to keep Conviva-specific logic separate from the core player.<\/p>\n<p>Our player already knows about events such as:<\/p>\n<blockquote><p>Load<br \/>\nPlay<br \/>\nPause<br \/>\nBuffering<br \/>\nSeek<br \/>\nBitrate change<br \/>\nError<br \/>\nPlayback completion<\/p><\/blockquote>\n<p>The analytics layer consumes those events and translates them into the appropriate Conviva states.<\/p>\n<p>Conviva\u2019s documented integration pattern follows the same general approach: install the sensor, configure metadata, retrieve player events and metadata, integrate with the player, handle user actions, and clean up the session.<\/p>\n<p><strong>Challenges We Faced<\/strong><\/p>\n<p>Integrating analytics into a real player is different from implementing analytics in a simple demo application.<\/p>\n<p><strong>Challenge 1: Different Player Behaviors<\/strong><br \/>\nAndroid and iOS players don\u2019t always report identical events.<\/p>\n<p>For example, buffering behavior, seeking, error callbacks, and playback state transitions can differ between ExoPlayer\/Media3 and AVPlayer.<\/p>\n<p>Fix<br \/>\nWe introduced a normalization layer.<\/p>\n<p>Instead of sending platform-specific events directly to Conviva, we map them into a common internal player state.<\/p>\n<p>This significantly reduces platform-specific analytics logic.<\/p>\n<p><strong>Challenge 2: Duplicate Events<\/strong><br \/>\nPlayer frameworks can sometimes generate multiple events for what appears to be one logical state transition.<\/p>\n<p>For example, buffering may generate several callbacks during a single buffering period.<\/p>\n<p>If every callback is sent independently, analytics can become inaccurate.<\/p>\n<p><strong>Fix<\/strong><br \/>\nWe maintain the current analytics state and only report meaningful state transitions.<\/p>\n<blockquote><p>Playing<br \/>\nPlaying<br \/>\nPlaying<br \/>\nBuffering<br \/>\nBuffering<br \/>\nPlaying<\/p><\/blockquote>\n<p>becomes:<\/p>\n<blockquote><p>Playing \u2192 Buffering \u2192 Playing<\/p><\/blockquote>\n<p>This makes the analytics state much more reliable.<\/p>\n<p><strong>Challenge 3: Metadata Timing<\/strong><br \/>\nAnother important issue is ensuring that the correct content metadata is associated with the correct playback session.<\/p>\n<p>This becomes particularly important when moving between episodes or videos.<\/p>\n<p><strong>Fix<\/strong><br \/>\nContent metadata is prepared and updated before loading the corresponding content.<\/p>\n<p>The rule is simple:<\/p>\n<blockquote><p><em>Never allow stale content metadata to follow the player into the next playback session.<\/em><\/p><\/blockquote>\n<p><strong>Challenge 4: DRM and Playback Errors<\/strong><br \/>\nStreaming applications often have multiple failure points.<\/p>\n<p>A playback failure could originate from:<\/p>\n<blockquote><p>CDN<br \/>\n\u2193<br \/>\nManifest<br \/>\n\u2193<br \/>\nSegment<br \/>\n\u2193<br \/>\nDRM License<br \/>\n\u2193<br \/>\nDecoder<br \/>\n\u2193<br \/>\nPlayer<\/p><\/blockquote>\n<p><strong>Fix<\/strong><br \/>\nWe preserve the original player error information and map it into meaningful analytics categories instead of converting every failure into a generic error.<\/p>\n<p>This makes Conviva much more useful during production debugging.<\/p>\n<h2><strong>Advanced Things We Did With Conviva<\/strong><\/h2>\n<p>Basic analytics tells us\u00a0what happened.<\/p>\n<p>The more interesting part is using analytics to understand\u00a0why it happened.<\/p>\n<p><strong>1. Advanced Metadata Dimensions<\/strong><br \/>\nWe use metadata to make QoE metrics more actionable.<\/p>\n<p>For example:<\/p>\n<ul>\n<li>Application Version<\/li>\n<li>Device Model<\/li>\n<li>OS Version<\/li>\n<li>Content ID<\/li>\n<li>Content Type<\/li>\n<li>Network Type<\/li>\n<li>Player Configuration<\/li>\n<\/ul>\n<p>This allows us to compare the same metric across multiple dimensions.<\/p>\n<p>For example:<\/p>\n<p>Is buffering increasing only on the latest application version?<br \/>\nOr:<\/p>\n<p>Is a playback issue limited to one device family?<\/p>\n<p><strong>2. ABR Analysis<\/strong><br \/>\nBitrate and resolution information can be used to understand ABR behavior.<\/p>\n<p>Instead of looking only at the final resolution, we can analyze the complete playback journey:<\/p>\n<blockquote><p>144p<br \/>\n\u2193<br \/>\n360p<br \/>\n\u2193<br \/>\n720p<br \/>\n\u2193<br \/>\n1080p<\/p><\/blockquote>\n<p>This provides a better understanding of how the player adapts to changing network conditions.<\/p>\n<p><strong>3. Error Correlation<\/strong><br \/>\nOne of the most useful capabilities is correlating playback errors with other dimensions.<\/p>\n<p>Instead of simply seeing:<\/p>\n<blockquote><p>Playback Errors: 2.4%<\/p><\/blockquote>\n<p>we can investigate:<\/p>\n<blockquote><p>Playback Errors<br \/>\n\u2193<br \/>\nDevice<br \/>\n\u2193<br \/>\nOS Version<br \/>\n\u2193<br \/>\nApplication Version<br \/>\n\u2193<br \/>\nContent<br \/>\n\u2193<br \/>\nNetwork\/CDN<\/p><\/blockquote>\n<p>This turns analytics from a reporting system into a troubleshooting tool.<\/p>\n<p><strong>4. Content and Ad Analytics<\/strong><br \/>\nFor applications using advertising, separating content playback from ad playback is important.<\/p>\n<p>A typical lifecycle becomes:<\/p>\n<blockquote><p>Content<br \/>\n\u2193<br \/>\nAd Start<br \/>\n\u2193<br \/>\nAd Playback<br \/>\n\u2193<br \/>\nAd Complete<br \/>\n\u2193<br \/>\nContent Resume<\/p><\/blockquote>\n<p>This prevents ad-related buffering and failures from being incorrectly attributed to the main content experience.<\/p>\n<p><strong>5. Custom Metrics and APIs<\/strong><br \/>\nConviva also supports custom metrics and APIs for deeper integrations. Its platform documentation describes real-time and historical APIs, session APIs, data feeds, and custom experience metrics.<\/p>\n<p>This opens up possibilities beyond the standard dashboard.<\/p>\n<p>For example, teams can integrate Conviva data into internal monitoring systems or correlate video QoE with other application and backend metrics.<\/p>\n<h2><strong>Official Conviva Documentation<\/strong><\/h2>\n<p>For implementation details, the official Conviva documentation should always be the primary reference.<\/p>\n<p>The documentation provides:<\/p>\n<ul>\n<li>Conviva platform overview<\/li>\n<li>Sensor integration guides<\/li>\n<li>SDK documentation<\/li>\n<li>Player integrations<\/li>\n<li>Metadata configuration<\/li>\n<li>Metrics<\/li>\n<li>APIs<\/li>\n<li>Data feeds<\/li>\n<li>Release information<\/li>\n<li>Official Conviva Documentation:\u00a0Conviva Docs<\/li>\n<\/ul>\n<p>Conviva Sensor Developer Center:\u00a0Conviva Sensor Developer Center<\/p>\n<p>The Sensor Developer Center is particularly useful for implementation because it documents platform-specific integrations and the common video integration framework.<\/p>\n<h2><strong>Conclusion<\/strong><\/h2>\n<p>Integrating Conviva is more than adding an analytics SDK to a video player.<\/p>\n<p>The real value comes from connecting\u00a0player behavior, viewer experience, content, device, network, and application context\u00a0into a single analytics model.<\/p>\n<p>The most important lessons from the integration are:<\/p>\n<ul>\n<li>Keep analytics separate from player logic.<\/li>\n<li>Normalize Android and iOS player events.<\/li>\n<li>Avoid duplicate state reporting.<\/li>\n<li>Keep content metadata synchronized with playback.<\/li>\n<li>Classify errors accurately.<\/li>\n<li>Use dimensions to turn metrics into actionable insights.<\/li>\n<li>Validate analytics under real-world network and device conditions.<\/li>\n<li>Use advanced metrics and APIs when standard dashboards aren\u2019t enough.<\/li>\n<li>Ultimately, a video player tells us whether content is playing.\u00a0Conviva helps us understand the quality of that experience at scale.<\/li>\n<\/ul>\n<p>That is what makes video analytics an important part of modern streaming engineering \u2014 not just a dashboard for measuring playback, but a tool for continuously finding, understanding, and fixing problems before they become widespread viewer issues.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction In a video streaming application, successfully playing a video is only the beginning. For a good viewer experience, we also need to know how quickly playback starts, whether the video buffers, how Adaptive Bitrate (ABR) behaves, which devices experience failures, and whether DRM, network, CDN, or player issues are affecting playback. This is where [&hellip;]<\/p>\n","protected":false},"author":2338,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":5},"categories":[5881],"tags":[1397,8882,3116,6707,5853],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/81891"}],"collection":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/users\/2338"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/comments?post=81891"}],"version-history":[{"count":2,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/81891\/revisions"}],"predecessor-version":[{"id":82001,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/81891\/revisions\/82001"}],"wp:attachment":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/media?parent=81891"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/categories?post=81891"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/tags?post=81891"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}