Choosing a video player for Smart TV development 

By Tommi Järvinen


If you are familiar with OTT/streaming app development on platforms like Android, iOS or web, you might be wondering what the fuss is about in selecting a video player for the Smart TV platform. After all, using the native player is usually an obvious choice when creating these services on mobile platforms, and for the web, you can pretty much select whatever you prefer, as modern PCs and browsers are likely to work relatively well with any player engine.

What makes the Smart TV world so different then? First, the native player options on TV platforms are not as widely supported and tested by different streaming & DRM systems as for example Exoplayer on Android or Apple’s native player. TVs also tend to have a longer lifespan than mobile phones for example, meaning that customers can easily have 5+ years old TVs at home. The older the device gets, the more challenges it is likely to have with the player due to an old browser engine, limited resources or lack of functionalities in the native player. This means the available contents, DRM systems, supported TV platforms and required functionalities need to be considered carefully when doing the selection.

Knowledge-based decision making

We now know that the selection process for the player tends to be more complicated for Smart TV platforms compared to the mobile and web world. But what kind of things do we need to consider when making this important decision?

One very important factor is the service itself and the contents it has now and is likely to have in the future. Do you only have VOD-type content, or do you also have live channels or live sports events, for example? What streaming protocols and DRM systems does your streaming backend support? Different player choices have different properties that make them more suitable for certain content types, streaming protocols or DRM systems, especially on certain TV platforms.

As important as knowing your content is knowing which platforms you want to support. Samsung’s Tizen and LG’s WebOS probably, but how about Philips, Hisense and other brands? And how old devices are you prepared to support? While market data of TVs that your users are likely to have at home is valuable, it only helps in player selection together with a deep knowledge of how different TV models work together with different players.

The last but not least important things to consider are the features you will need from the player. Do you need to support subtitles, multiple audio tracks, UHD, startover or live TV trickplay for example? All these things need to be taken into consideration, as it cannot be taken for granted that they are equally supported by all players and platforms. Again, knowledge and experience of players with different models is essential here.

Three paths:
pros and cons

Ok, we have the background information and requirements for the player in place. But what are the actual options we are choosing from?

Basically, players available for Smart TVs can be split into three categories: native players, free/open-source players and commercial players.

Native Players

AVPlay (Samsung)
WebOS player (LG)
ExoPlayer (AndroidTV)
OIPF Player (Many brands / models)

Free/Open-Source Players

Video.js / Dash.js / HLS.js
Shaka Player (Google)

Commercial Players

PRESTOplay (Castlabs)
JW Player

Native players in Smart TVs

Using the native player may sound like a natural choice, if you compare to Android or Apple environments. After all, it is the player provided by the TV manufacturer, so you’d expect it to be well documented and supported and have the best compatibility and stability on that platform.

However, that can be debatable, as many native players, especially in the older TV models, lack important features and can have problems with streaming formats and DRM. This can be problematic, as manufacturers rarely provide big updates on the player side for older models, and in some cases the support overall can leave a lot to be desired. There are even examples where manufacturers suggest using an external player solution like Dash.js or Shaka Player over the native player solution.


Maintained and supported by the TV manufacturer (can also be a disadvantage), does not increase size of your app, usually relatively easy to take into use with manufacturer development guides


Limited functionality, longish update cycle, solutions for bugs & problems dependent on manufacturer’s support, limited possibility for workarounds in problem situations

Free/Open-source players

Free and/or open-source player libraries based on the MSE (Media Source Extensions) and EME (Encrypted Media Extensions) specifications have existed for some time now and are gradually becoming more and more popular also in the Smart TV world. They are platform independent if the platform has good enough support for MSE/EME, meaning you can share your player code with multiple platforms. They usually offer better features, better compatibility with the latest streaming specifications and frequent updates. They also have a relatively large user base and community, so it is more likely to find community support for the problems you are having. MSE/EME -based players are traditionally considered heavier solutions than, for example, native players because they do manifest parsing, data loading etc. in the JavaScript level, which requires both memory and processor power. This needs to be taken into account when you target lower end TV platforms, and proper testing with target devices and different kinds of content (VOD, live, DRM etc.) should always be on your list when considering different players. Proper testing is also important because these players are not often officially tested or supported on all Smart TV platforms.


Platform-independent, feature-rich, well supported by the community, widely used (often someone has already seen the problem you’re seeing), frequent releases / easy to update, free


Often not tested well or officially supported on Smart TVs (especially the old ones), require working MSE/EME implementation from the device, increases size of your app, performance on lower end devices may be problematic

Commercial players

The commercial player options share the same basic operational principle as the free/open-source players using MSE/EME, so they also share many of the benefits and disadvantages. The differences between the commercial and free/open-source players are similar to the differences between any commercial and free/open-source software component: By paying the price, you get the support for integrating, quicker help with issues, wider official support for different platforms and so on. Player manufacturers will also say they have more stable and performant products compared to their open-source alternatives and list other benefits which can be somewhat difficult to measure. Evaluating and comparing commercial products is not in scope of this blog post, so I will stick to listing some generic properties that commercial players have.


Platform-independent, feature-rich, support by manufacturer, well tested on supported Smart TVs, usually well tested with most backends and DRM systems, frequent releases


Potentially high cost based on plays, increases size of your app, support dependent on manufacturer interest

Making the right choice

As we’ve learned in the previous chapters, the right player choice for each use case depends on many factors, and only one thing is certain: there is no one-player-fits-all solution. Making the right choice requires knowledge and experience on streaming protocols, DRM systems, video backends and naturally the players themselves, but most important is the knowledge on the service itself and the TV devices you will be running the player on. Testing on the target devices is extremely important, as it gives you confidence that your customers will not have problems with your selected player on their TVs.

Sometimes in more complex systems you may end up in a situation where one player engine is not enough to support all contents and TV platforms. In that case, you need to carefully think about the design of your application to still be able to maintain a unified codebase on all your platforms and not end up complicating the development with several application versions.

Confused by the choices or lacking expertise? Contact us!

Does all of this seem a bit complicated? I can’t blame you. Smart TVs can be a challenging environment to work in, and in many cases making successful choices requires experience and knowledge that you do not necessarily need when implementing apps for other environments. As the player is the most important part of any streaming app, you want to have the best expertise at your disposal when making these choices. As highly experienced Smart TV developers, we at Sofia Digital regularly participate in making these decisions. In addition to the applications we develop, we can also help others to make these decisions with our backend and client-side streaming expertise and comprehensive testing facilities. We have a long history with different players, contents, backends and DRM systems, and we also participate in streaming standardization work as members of Dash-IF, giving us an all-round understanding of complex streaming and player problems. Our comprehensive testing lab with over 200 devices can help you identify the right target devices and do all the necessary testing to make fact-based player decisions.

Want to know more about Smart TV development?

Sofia Digital excels in Smart TV app development across all major platforms, including Tizen, webOS, VIDAA and Android TV. Our approach goes beyond coding; we act as a strategic business partner, offering flexible, customized business models to bring maximum value to our clients. 

More posts

Scroll to Top