When creating native mobile apps for high quality video experiences, it is natural for a developer to start experimenting with default video playback frameworks like AVFoundation/AVPlayer for iOS and ExoPlayer for Android.
But you’ll soon find that critical features required for your project are missing in these popular “default” frameworks, especially when working on larger projects that intend to compete in the modern online video landscape where user expectations are high.
To save you the pain from needing to rip and replace your mobile video playback framework halfway through a project with a tight turnaround, we’ve compiled a list of Top 9 missing features in AVFoundation and ExoPlayer.
Video analytics is one of the most critical pieces of all video playback workflows and unfortunately often gets implemented only later in a project’s life cycle, if at all.
Even in the unlikely event that you don’t care about viewership and media consumption data, you should always care about measuring the quality of the playback experience that your viewers receive. The only way that you can guarantee a baseline level of quality and continually improve it is to have accurate data that reflects the actual player behavior your users experience.
If you can’t measure it, you can’t improve it.
#2 Cross-Platform Unified Styling
Though not critical at first, as your multi-platform video project grows you will inevitably run into headaches as you start duplicating efforts to customize player design and user interface. You may find yourself literally recreating the same player UI design 3 or more times (web, iOS and Android) making updates a nightmare.
A best practice solution is to use a shared, standards-compliant styling system across your entire suite of players. CSS is the perfect tool to do just that, but support for CSS player styling is not a built-in feature of AVFoundation or ExoPlayer.
#3 Multi-Codec Streaming and Advanced ABR
When developing an app in a “laboratory” testing condition (like using your fancy office’s sweet Internet connection) the default adaptive bitrate mechanisms in AVPlayer and ExoPlayer are okay. But when you get into the wild wild west of real world usage conditions your video quality of experience analytics will tell you a different story. (You’ve implemented QoS analytics, right? See Missing Feature #1)
As your range of platforms and devices grows you’ll need to use more advanced video playback optimization techniques such as multi-codec streaming and codec-aware adaptive bitrate, both features that the default native mobile players don’t support out-of-the-box.
#4 Dynamic Ad Scheduling
If you’re publishing live video content supported by in-stream advertising leveraging dynamic ad scheduling is a critical requirement. During large scale live events, the schedule and sourcing of ads usually change as the live events unfold. This feature is not available in either of the default frameworks.
#5 Advertising: VAST and VMAP (missing in AVFoundation)
While ExoPlayer’s ad tag support is pretty comprehensive, AVFoundation’s AVPlayer critically lacks built-in support for VAST or VMAP with IMA, requiring a developer to implement a custom ad playback component if you need to support VMAP and ad rules on iPhone.
#6 Network API
Most built-in player frameworks have limited support for manipulating network requests. While this may seem like a geeky developer tool, sometimes you really need access to HTTP request or response HEADERS for your particular application, rendering certain tasks quite challenging or even impossible.
One of the most pleasant benefits of using a robust network response metadata API with your native video player is the ability to greatly simplify DRM playback logic while still allowing precise customization. For example, allowing the preprocessing of DRM license requests before they are sent by the player.
#7 Chromecast (missing in AVFoundation, support for ExoPlayer)
When you need it, you need it. For consumer entertainment content in the US, the Chromecast is a must-have and you’ll find it sorely missing in Apple’s AVFoundation / AVPlayer framework for iOS. Luckily ExoPlayer includes built-in Chromecast support out-of-the-box.
#8 Image-Based Subtitles
Especially useful for repurposing legacy media subtitles and for non-latin languages, image-based subtitles offer the ability to use an image file such as a PNG or other bitmap format to represent pages of captions. Neither ExoPlayer nor AVFoundation / AVPlayer support this out-of-the-box.
Last but not least, immersive video can often be the icing on the cake to complete your app’s beautiful experience. 360 video and interactive VR streams are not supported by either of the two native solutions.
So what to do if you need more of the above?
You’re left with two options. Implement it yourself, or work with a mobile native player SDK that includes these robust features out-of-the-box. You and the team have enough on your plate implementing your uniquely competitive code that sets you apart from the competition, in most cases it doesn’t make sense to burn time building low-level player features that should be there anyway.
Feel free to watch the webinar on “How to Build Multi-Platform Video Apps that Delight Your Users and Your Developers“. You can get in addition instant access to all of the above features and more with a free trial of our Bitmovin Native Player SDKs for iOS and Android.