Hive with Tez on EMR


Over half a billion videos are watched on JW Player video player every day resulting in about 7 billion events a day which generates approximately 1.5 to 2 terabytes of compressed data every day. We, in the data team here at JW Player, have built various batch and real time pipelines to crunch this data in order to provide analytics to our customers. For more details about our infrastructure, you can look at JW at Scale and Fast String Matching. In this post, I am going to discuss how we got Hive with Tez running in our batch processing pipelines.

All of our pipelines run on AWS and a significant portion of our daily batch pipelines code is written in Hive. These pipelines run from 1 to 10 hours every day to clean and then aggregate this data. We have been looking ways to optimize these pipelines.

JW Player 7.2 New Features

We’ve been hard at work on JW 7.2 for the past few months. We’ve crushed quite a few bugs and gotten a lot of your feedback via our beta testing program. (Check our release notes for full details!) Today, we’re happy to announce that 7.2 is publicly available for all. This blog post explores its new features and improvements.

New Sharing and Related Plugins

We’ve modernized our sharing and related plugins to adhere to the design principles of JW7. Both plugins now feature:

How JW Player does Video Player Testing with QA Automation Tools

The major challenge with automated integration testing for a web player via browser automation tools is that these tools better serve the purposes of web applications such as e-commerce sites, single page applications, and social networks. How do you take a product like JW Player which is embedded on over 2 million websites where publishers are always coming up with unique ways to use the player, and build an automated testing framework that will ensure the quality of that player? I would like to walk through how we’ve taken on that challenge.


Test Harness

Calling all Robots: JW Player SDK for Android 2.0!

Today we are releasing a major update to our JW Player SDK for Android. We completely rewrote the SDK to make it easier than ever for developers to add world-class media playback to any Android app. (Don’t worry though--we've provided detailed documentation of the API changes and code examples, so upgrading to 2.0 is a breeze.)


2.0 also marks a significant step toward our goal of “One JW Player.” One JW Player is a hybrid software design that we created while developing our JW Player SDK for iOS earlier this year. The developer-facing APIs in the SDK are native to the target platform, but they are wrappers around our flagship JW Player 7 JavaScript/HTML5 library (jwplayer.js). The core functionality of the SDK (player customization, captions, analytics, etc.) is powered by JavaScript, but all the developer-facing APIs in the SDK are native classes (Java, in the case of Android).

Apple TV & JW Player


This week, Apple started taking pre-orders for the new Apple TV. Previously, the devices had only been available to developers.

Shortly after the Apple TV announcement in September, I received my developer device from Apple. Like most people, I have been very impressed with the device and development environment, but have found some crucial functionality missing from the new tvOS. But more on that in a minute.

JW Player is now a Certified Publishing Partner by Google

Let’s get down to business: We know what it takes to excel with Google publishing solutions

As one of Google’s Certified Publishing Partners, JW Player can help your business thrive. Google selected us for this program based on our proven expertise in DoubleClick AdExchange and DoubleClick for Publishers Small Business. We'll help you monetize your sites -- and earn as much as possible from every ad impression -- as we work with you to provide a great video ad experience.

Better results through proven expertise

Designing for JW7



With the release of JW7, we had an exciting opportunity to leverage our new skinning model for a new skin design as well as to reassess the user experience of the player overall. Here I’ll recap the creative process that led to the new “seven” skin and what’s next for the design of the player in our upcoming releases.

Flash Throttling: Improving the Experience

There has been much ado in the news lately about Chrome and its active pausing of smaller Flash-based content. A recent post regarding this behavior was published when our VPAID 2.0 support was launched. We’re now happy to report that our latest release, JW Player 7.1.4, goes a step further. We're now able to provide a better experience for viewers by intelligently reacting to Chrome’s Flash throttling.

Of course, “intelligently reacting” does not imply that we’re able to circumvent this throttling. Rather, the player is able to serve up a better experience for viewers and publishers. We’ll explore how by showing some examples:

First up, here is how a player appears and behaves in the case of JW 7.1.0 and below:

The New JW Player Video Caption Editor



With nearly 15 billion plays each month globally, JW Player understands that our customers’ wide-ranging, diverse audiences are key to any successes in the ever-expanding world of online video. In some industries, especially for our customers in the public sector, video captions are even the law. Whether for accessibility or for multi-language support, video accessibility has become table stakes for anyone serious about online video.

Fast String Matching for Analytics Quality at JW Player

At JW Player our analytics pipeline currently receives 4M pings per minute at peak times, providing the basis for insights to the publishers on our dashboards. Recently we have moved some of our offline classification processes to the beginning of our real-time and batch pipelines, which required us to optimize our string matching implementations. We employed finite state automata, rolling hash functions, and bloom filters to achieve 6x and 3x speedup in NSFW classification and ad classification respectively. In this article, we will discuss these classification problems, then the algorithms, implementations, as well as evaluation of our solutions.


Our player is freely available, and we strive to provide the best analytics experience to all the publishers who use our player.