JW Player for Flash and HTML5 Release 5.3 Embedding Guide October 20, 2010 CONTENTS 1 Embedding the player 1 1.1 Upload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 SWFObject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.3 Embedding Without JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.4 JW Embedder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2 Player API 11 2.1 Getting started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2 Selecting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.3 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.4 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.5 Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.6 Chaining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 i ii CHAPTER ONE EMBEDDING THE PLAYER Like every other Flash object, the JW Player has to be embedded into the HTML of a webpage using specific embed codes. Overall, there are three methods for embedding the JW Player: • Using a generic JavaScript embedder (like SWFObject). • Using a HTML tag (like or ). • Using the JW Embedder, the JW Player’s own JavaScript embedder (jwplayer.js). For embedding the JW Player for Flash, we recommend using SWFObject, since it works in all browsers and many examples exist on the web to get you up and running quickly. If you want the new HTML5 features of the JW Player, or if you want to leverage the new and improved JavaScript API, you’ll want to use the JW Embedder. Detailed instructions can be found below. 1.1 Upload First, a primer on uploading. This may sound obvious, but for the JW Player to work on your website, you must upload the player.swf file onto your webserver. If you want to play YouTube videos, you must also upload the yt.swf file - this is the bridge between the player and YouTube. Finally, to use the JW Embedder and HTML5 player, upload jwplayer.js. Note: We recommend putting everything in a folder called “jwplayer” at the root of your site. This enables the Quick Embed method of setting up the player. The file structure should look like this: [Web Root]/jwplayer/player.swf [Web Root]/jwplayer/jwplayer.js [Web Root]/jwplayer/yt.swf 1.2 SWFObject There’s a wide array of good, open source libraries available for embedding Flash. SWFObject is the most widely used one. It has excellent documentation. Before embedding any players on the page, make sure to include the swfobject.js script in the of your HTML. You can download the script and host it yourself, or leverage the copy provided by Google: 1 JW Player for Flash and HTML5, Release 5.3 With the library set up, you can start embedding players. Here’s an example:

Please install the Flash Plugin

It’s a fairly sizeable chunk of code that contains the embed container, flashvars, params, attributes and instantiation. Let’s walk through them one by one: • The container is the HTML element where the player will be placed into. It should be a block-level element, like a

or

. If a user has a sufficient version of Flash, the text inside the container is removed and replaced by the videoplayer. Otherwise, the contents of the container will remain visible. • The flashvars object lists your player Configuration Options. One option that should always be there is file, which points to the file to play. You can insert as many options as you want. • The params object includes the Flash plugin parameters. The two parameters in the example (our recommendation) enable both the fullscreen and JavaScript functionality of Flash. • The attributes object include the HTML attributes of the player. We recommend always (and only) setting an id and name, to the same value. This will be the id of the player instance if you use its Player API. • The instantiation is where all things come together and the actual player embedding takes place. These are all parameters of the SWFObject call: – The URL of the player.swf, relative to the page URL. – The ID of the container you want to embed the player into. – The width of the player, in pixels. Note the JW Player automatically stretches itself to fit. – The height of the player, in pixels. Note the JW Player automatically stretches itself to fit. – The required version of Flash. We highly recommend setting 9.0.115. This is the first version that supports MP4 and is currently installed at >95% of all computers. The only feature for which you might restricted to 10.0.0 is RTMP dynamic streaming. – The location of a Flash auto-upgrade script. We recommend to not use it. People that do not have Flash 9.0.115 either do not want or are not able (no admin rights) to upgrade. – Next, the flashvars, params and attributes are passed, in that order. It is no problem to embed multiple players on a page. However, make sure to give each player instance a different container id and a different attributess id and name. 1.3 Embedding Without JavaScript In cases where a JavaScript embed method is not possible (e.g. if your CMS does not allow including JavaScripts), the player can be embedded using plain HTML. There are various combinations of tags for embedding Flash on a webpage: • A single tag (for IE + other browsers). • An tag with nested tag (the first one for IE, the second for other browsers). 2 Chapter 1. Embedding the player JW Player for Flash and HTML5, Release 5.3 • An tag with nested tag (the first one for IE, the second for other browsers). We recommend using the tag with a nested tag. This works in the widest array of browsers, including older browsers such as Netscape. Here is an example embed code that does exactly the same as the SWFObject example above: As you can see, most of the data of the SWFObject embed is also in here: • The container is now the id of both the object embed tags. The fallback text cannot be used anymore. • The flashvars are merged into a single string, and loaded as an attribute in each of the tags. You should always concatenate the flashvars using so-called querystring parameter encoding: flash- var1=value1&flashvar2=value2&.... • The params and attributes from SWFObject are individual attributes of the embed tag, and param tags inside of the object tag. • The instantiation options (source, width, height) are attributes of the embed and object tags. Note: The Flash version reference is not in these tags: this is one of the drawbacks of this method: it’s not possible to detect Flash and selectively hide it, e.g. if the flash version is not sufficient or if the device (iPad ...) doesn’t support Flash. For an interesting overview on the different embedding methods, this article compares several methods, and provides a historical overview of the subject. 1.4 JW Embedder New in version 5.3, the JW Player features its own embedding method. While the previous embed methods can still be used, the built-in embed method has a couple of useful features: • Seamless failover between the Flash and HTML5 players. • Automatic integration with the JavaScript API. 1.4.1 Getting started Embedding the JW Player in your website is a simple, 3-step process: 1. Upload the jwplayer.js, player.swf and yt.swf files from the download ZIP to your server. All other files in the download (documentation, source code, etc) are optional. 1.4. JW Embedder 3 JW Player for Flash and HTML5, Release 5.3 2. Include the jwplayer.js somewhere in the head of your webpage: 3. Call the player setup somewhere in the body of your website. Here’s a basic example:
Loading the player ...
When the page is loading, the JW Player is automatically instantiated on top of the
. By default, the player is rendered in Flash. If Flash is not supported (e.g. on an iPad), the player is rendered in HTML5. The flashplayer option (to tell the JavaScript where the SWF resides) is just one of many configuration options available for configuring the JW Player. Here’s another setup example, this time using a