JW 7.3.0 is now in beta and is reported to include the following feature:

Native HTML5 caption tracks now utilized for iOS devices, allowing for fullscreen subtitles

A lot has changed with JW Player since my previous post regarding it’s lack of support for captions on iOS – including a complete rebuild!

That was back in November 2013 and related to JW Player 6.7.

Over two years on and the latest version of JW Player is 7.2.4, but unfortunately, one thing that still hasn’t changed is it’s ability to provide caption support for media played on iPhones and iPads in fullscreen.

Whilst my original post was useful in demonstrating the principle of how JW Player captions can be enabled for iOS use, it was by no means a complete solution – there are a number of other scenarios/states which need to be handled, and it also does nothing to account for cross-domain/CORS issues or to style the captions as suggested by the JW captions configuration block.

Introducing the JW/iOS captions plugin

Not wanting to leave things half finished, I decided to create a plugin to provide a more robust solution – whilst making it easier to implement.

The JW/iOS captions plugin offers the following features:

  • Overcomes basic cross-domain issues
  • Honours the JW captions block styling configuration
  • Uses native captions on iPhone and iPad in fullscreen.

An example of how to use this plugin can be found at the following page: Enabling JW Player captions on iOS

Tatami for Online Video

If you are using Tatami for Online Video to build and generate your JW Player embeds, this plugin will automatically be included when your player is rendered on iOS.

UPDATE: According to the release notes of JW 7.2.2 (18th December 2015) this should now be fixed: Player should now respond to touch events properly on iOS 7.

Although it was identified during the beta testing phase that JW7 wasn’t working on certain iOS devices (7th July 2015), the code was still pushed into production on 20th July 2015.

Even after a subsequent point release (7.0.1 on 5th August 2015) this situation had still not been resolved and at no point had this been recorded as a known issue – JW7 Release notes

Then on 18th August 2015, the JW Team shared their stance that JW7 actually only currently supports iOS8:

Todd Grunow – Aug 18, 2015 05:12PM EDT

Our document at http://support.jwplayer.com/customer/portal/articles/1403653-browser-device-reference has been updated to indicate that we currently support iOS 8 and up. Our engineers are looking into a fix to enable support in iOS 7. They expect to have a fix in the coming weeks.

Whilst this may appear at odds with the message presented by the marketing arm of JW Player, long time followers of JW operations will know to take most of their claims with a pinch of salt!

A tweet claiming JW7 supports all devices and screens...

Incidentally, JW7 no longer supports IE8 either – a position which has actually been documented.

So what’s the issue?

Depending on the media type you are loading in JW7, you will likely experience the following behaviour on mobile devices running operating systems earlier than iOS8:

  • YouTube media – Tapping on the JW play button causes the icon to switch to a buffering state, whilst behind this the YouTube play button appears. The media won’t actually begin to play until you tap again on the poster image. If you were to initially tap on the poster image (rather than the play button) the media will play first time.
  • Other media – In most cases the player is completely unresponsive. No matter where you click the player will not react.

In both instances the JW play button is incorrectly positioned relative to the middle of the device viewport – rather than appearing in the middle of the player area.

And what’s the workaround?

YouTube media

For JW7 embeds which only use YouTube media, the workaround is relatively straightforward. You basically have to tell JW Player to ignore the initial touch event and (quite literally) pass this event through to the underlying YouTube player. This can be done by adding the following CSS to your page:

#<PLAYERID> .jw-display-icon-container{
    pointer-events:none;
}

Where <PLAYERID> above is replaced with the container ID used in your specific player setup.

Whilst this will make the player react correctly, it doesn’t resolve the issue of the incorrectly positioned play button.

Other media

Unfortunately, for JW7 embeds which use other media, it’s not as straightforward as simply adding some CSS to the page.

Fortunately however, I’ve written a plugin to take care of the additional complexities and so all you need to do is to add the following code to your player setup:

"plugins":{
    "http://www.dev.powered-by-haiku.co.uk/solutions/jw7ios7fix/code/jw7ios7fix.js":{}
}

This plugin works for both YouTube media and other media embeds – and resolves the issue of the incorrectly positioned play button for both scenarios.

Tatami for Online Video

If you are using Tatami for Online Video to build and generate your JW Player embeds, this workaround will automatically be included when your player is rendered using iOS6/iOS7.

Listy for JW Player is a plugin providing feature rich, customisable playlists which can be saved and loaded between sites.

It provides the capabilities to allow playlists to be manipulated without interrupting play or having to re-initialise the player.

Latest features

  • Tubey integration – Allows multiple YouTube playlists to be initially loaded into the player
  • Add from Soundcloud – Search and add Soundcloud files directly from within the Listy playlist
  • Save / load playlist – A premium feature which will allow your users to register with Listy giving them the ability to save, load and create new playlists. Saved playlists can then be accessed across sites, browsers or devices
  • Export – Use Listy to build your playlists and then export to JSON or RSS at the touch of a button
  • Prefetch – Allowing you to configure Listy to prefetch playlist items which are available via progressive download in order to boost performance when switching between items

Other features include

  • Shuffle – Randomise the remaining playlist, after the current playing item, at the touch of a button
  • Search – Quickly pinpoint the item you are looking for without needing to scroll through a long list
  • Edit – Add, remove and move items around a playlist without interrupting the current playback
  • Preview – Check you’ve got it right before adding an item to the playlist
  • Custom parameters – Add custom parameters to playlist items – which will then be searched against or can be displayed in a custom playlist
  • Add from YouTube – Search and add YouTube videos directly from within the Listy playlist
  • Accessible – Navigate through playlist items using a keyboard only
  • Next / Previous – Navigate through playlist items using the next and previous buttons on the JW Player control bar
  • Multiple skinning – Apply separate skins to each component: the player, the playlist and Listy controls
  • Custom playlist HTML – Complete control over the playlist HTML and the associated styling
  • Custom buttons & labels – All labelling within Listy is configurable – allowing for localisation – and the API (coming soon) will allow you to quickly build custom actions
  • Export – coming soon – Use Listy to build your playlists, then export to inline, RSS or XML at the touch of a button

Documentation

Information on how to setup, configure and use Listy for JW Player can be found here.