Player API Reference - Ooyala Support for Users

PLAYER API REFERENCE
CONTENTS
PLAYER APIS OVERVIEW
4
PLAYER API FUNCTIONS
5
PLAYER API PARAMETERS
Player Query String Parameters
Embedded Parameters
Custom Module Embedded Parameters
Ads Embedded Parameters Overview
In-Stream Ads Embedded Parameter
FreeWheel Ads Embedded Parameter
Google IMA Ads Embedded Parameters
LiveRail Ads Embedded Parameters
VAST Ads Embedded Parameters
VPAID Ads Embedded Parameters
11
11
12
18
20
21
21
22
26
28
29
PLAYER MESSAGE BUS EVENTS
31
PLAYER AUTHORIZATION API
38
FLASH-BASED PLAYER ERROR MESSAGES
42
PLAYER API REFERENCE | TOC | 2
WWW.OOYALA.COM • [email protected] • 1-877-3-OOYALA
COPYRIGHT NOTICE
Copyright Ooyala 2008-2014
Ooyala, Backlot, Ooyala Actionable Analytics, the Ooyala logo, and other Ooyala logos and product and
service names are trademarks of Ooyala, Inc. (“Ooyala Marks”). Company agrees not to remove any
Ooyala Marks that are contained within and/or affixed to the Services as provided to Company. Except
with respect to the foregoing, Company agrees not to display or use in any manner the Ooyala Marks
without Ooyala’s prior written permission. All contents of the Ooyala website and Services are: Copyright
2008-2014. Ooyala, Inc. All rights reserved. Ooyala and Backlot are registered trademarks of Ooyala, Inc.
in the United States, Japan, and European Community. All rights reserved.
For complete information on terms of service, see: http://www.ooyala.com/tos
All other trademarks are the property of their respective companies.
This content was last updated on 2014-11-10.
PLAYER API REFERENCE | COPYRIGHT NOTICE | 3
PLAYER APIS OVERVIEW
Welcome to the Ooyala Player API Reference. Ooyala offers a customizable, feature-rich Player used to
provide a top-notch video experience across industries and across multiple devices.
As consumers leverage the freedom that mobile devices provide, they expect video to match what they
have come to expect on their desktops and to be available across devices. Increasingly, HTML5 is
becoming the primary and only standard for this type of mobile video experience. Ooyala offers the Player
to make it easier to give your customers this kind of video experience. The following topics describe the
Player APIs.
PLAYER API REFERENCE | PLAYER APIS OVERVIEW | 4
PLAYER API FUNCTIONS
Player JavaScript functions can be used to customize the player behavior and appearance.
PLAYER FUNCTIONS
The following table describes the primary Player JavaScript functions.
Function
Description
destroy()
This function can be used in two ways:
•
Destroy item. When called, the player is
removed, all activity is stopped, and any video is
unloaded.
ooplayer.destroy();
•
Note: The following parameter is optional, and is
only supported for HTML5.
You can specify a function callback of your
choice to the 'destroy' API so that the web page
gets notified when the 'destroy' API is completely
through destroying the HTML5 player. For
example:
ooplayer.destroy(function()
{ alert("Alert me once the player
is completely destroyed"); });
pause()
Pause the current video playback.
play()
Playback the current video.
seek()
Seek to the specified parameter in seconds.
Type: Number
Valid Value: time in seconds
seek()
Seek to the specified parameter in seconds.
Type: Number
Valid Value: time in seconds
shouldDisplayCuePointMarkers()
When called on the console log while a player
is playing, this Boolean function shows or hides
cue point markers on the scrubber bar during ad
playback. By default, cue point markers are hidden.
If shouldDisplayCuePointMarkers(True) is called,
and if there are active midroll and postroll ads
available, the Player will display any cue point
markers on the scrubber bar.
PLAYER API REFERENCE | PLAYER API FUNCTIONS | 5
Note: This feature is currently available for Flash
desktop and FreeWheel ads only.
player.shouldDisplayCuePointMarkers(TRUE);
GET FUNCTIONS
The following table describes all of the Player JavaScript get functions.
Function
Description
getBitrateQualitiesAvailable()
Returns an array of strings. The size of the array is
dependent on the number of encodings available:
•
•
•
•
When only one encoding is available, the
function returns [�auto’]
When two encodings are available, the function
returns [�auto’,’low’,’high’]
When three or more encodings are available, the
function returns [�auto’,’low’, �medium’, ’high’]
When no bitrate quality information is available,
the function returns [�auto’]
Type: Array
getBitratesAvailable()
Returns an array with the total number of bitrates,
in kbps, or an empty array when the number of
encodings is not available.
Note: With a Flash player, you can get the target
bit rate, if you get the value upfront. However, this
is not true for Quicktime. There is no control over
Quicktime’s ability to pickup the bitrate and the
default in this case is to use the suggested time on
a best effort basis.
Example: [250, 500, 1000] indicates that three
bitrates are available: 250 kbps, 500 kbps and 1000
kbps. For a Flash-based Ooyala Player, a publisher
can use this API to get a list of available bitrates
they use for the setTargetBitrate() API.
getBufferLength()
Returns the current size of the buffer in seconds,
when buffer length is supported, or 0 otherwise.
Note: Currently, YouTube Assets and Remote
Assets do not support buffer length.
Type: Number
Return Values: Time in seconds | 0
getCurrentItemClosedCaptionsLanguages() Get a list of supported closed captions languages
for the currently playing item. This list is derived
from the closed captions XML (DFXP [now TTML])
file for this content, uploaded via Backlot. For
more information about this file see Uploading
and Viewing a Closed Captions File. If there is no
DFXP (now TTML) file in place, this method returns
PLAYER API REFERENCE | PLAYER API FUNCTIONS | 6
an empty list. In live streaming mode, the closed
caption languages will be derived from the stream
itself.
Type: List
Return Values: A list in the form of "language
code":"displayName".
Example: { "en": "English",... }.
Note: This method will throw an exception if no
Closed Captions file has been uploaded for the
current embed code.
getDescription()
Get the description of the current video from
Backlot. This function retrieves the description that
was set in the the Backlot Manage > Details tab or
equivalent manual setting.
Type: String
Return Values: Alphanumeric description of asset
Example: Season 22 Opening Game
getDuration()
Gets the total duration of the video in seconds.
Type: Number
Return Value: Duration in seconds
getEmbedCode()
Get the embedCode for the current player.
Type: String
Return Value: NodXQ5NTq0Y8Nw4GvIWBHlfirMiKy7P
getError()
Return the current error code, if the code exists and
if the current state is error.
Type: String
Return Value: Returns the error's localized error
message.
getErrorText()
Returns an error message string.
Type: String
Return Value: Error's localized error message.
Example: "This video is not authorized for this
domain. Please contact the administrator."
getItem()
Get an object describing the current video.
Type: Object
Return Value: Object, with the following attributes:
•
•
•
•
•
embedCode
title
description
time (play length in seconds)
lineup
PLAYER API REFERENCE | PLAYER API FUNCTIONS | 7
•
•
promo
hostedAtURL
Return the playhead location in seconds with
millisecond accuracy.
getPlayheadTime()
Type: Number
Return Value: Duration in seconds
Get current player state.
getState()
Type: String
Return Values: One of: LOADING :
�loading’READY : �ready’PLAYING :
�playing’PAUSED : �paused’BUFFERING :
�buffering’ERROR : �error’DESTROYED :
�destroyed’
getTargetBitrate()
Get the target bitrate, in kpbs, when target bitrate
was previously set, or -1 otherwise.
getTargetBitrateQuality()
Returns the quality of the target bitrate: One of
auto, low, medium or high.
Works only with Flash player.
Type: String
Get the title of the video.
getTitle()
Type: String
Return Value: Video title
Example: My Snowboarding Channel
getVolume()
Return the current volume on a best-effort basis
gated by underlying device limitations.
Type: Number
Return Value: A number between 0 and 1 inclusive
Returns true if in fullscreen mode, false if not.
Fullscreen implementation is done on a best-effort
basis due to or based upon underlying device
limitations.
isFullscreen()
Type: Boolean
Valid Values: true | false
SET FUNCTIONS
The following table describes all of the Player V3 JavaScript set functions.
Function
Description
setClosedCaptionsLanguage(language)
Sets the language of the closed captions (CC) that
will be shown in the player. If you do not upload
the Closed Captions file, the content will playback
without closed captions. In Live streaming mode,
PLAYER API REFERENCE | PLAYER API FUNCTIONS | 8
the closed caption languages will be derived from
the stream itself. Note that because of the way that
closed captions are supported in iOS, we are not
able to add closed caption data for IOS web for
remote assets.
Parameter: language
Valid Values: Specify the ISO 639-1 language
code | none. For Chinese, you should use "zh-hans"
for Simplified Chinese and "zh-hant" for Traditional
Chinese. To show no closed captions, set the
language to "none".
Examples: en, de, ja.
setEmbedCode(embedcode, options)
Set the embedCode for the current player. The
setEmbedCode function also takes an option that
enables you to dynamically assign an ad set to an
embed code.
Type: String
Parameters: Takes an embed code and options
parameter.The options parameter must be an
object that is a hash of key value pairs representing
the unique ad code.
Example:The ad set code must belong to the same
provider as the embed code.
player.setEmbedCode(embedCode, {
adSetCode: 'foo'});
Note: This function requires that you associate
an ad set with a movie in Backlot. For more
information, see the topic, “Assigning Ad Sets
Dynamically” in the Player V3 Developer Guide.
setPlayheadTime(value)
Move the playhead to a location specified in the
parameter in seconds.
Type: Number
Valid Values: duration in seconds
setTargetBitrate(bitrate)
Set the target bitrate, in kbps. The input
needs to be an available bitrate. Available
bitrates can be determined by a call to
getBitratesAvailable().
No Bitrate Carry Over From Video to VideoThis
setting does not carry over from video to video.
For example, consider a channel with two videos,
the first with highest bitrate of 1000 kpbs, and
the second with medium bitrate of 1000 kpbs and
highest bitrate of 2000 kpbs. If you set bitrate to
1000 kpbs, we will convert this number to a bitrate
quality, which in this case in high. Since bitrate
quality carries over, the first video will play at 1000
kpbs, and the second video will play at 2000 kpbs,
which is its highest bitrate.
PLAYER API REFERENCE | PLAYER API FUNCTIONS | 9
HDS Restriction on Setting BitRate
When you are using HDS, you need to know that
HDS does not expose to our APIs what is needed
to affect the bitrate. Thus even if you set a target
bitrate, it does not change.
setVolume(value)
Set the current volume on a best-effort basis due to
underlying device limitations.
Valid Values: a number between 0 and 1 inclusive
PLAYER API REFERENCE | PLAYER API FUNCTIONS | 10
PLAYER API PARAMETERS
Player parameters can be used to customize the player ads, behavior and to change player styles.
The following general types of parameters can be passed to the Player API:
1. Query string parameters
2. Embedded parameters
3. Custom Module Embedded parameters
PLAYER QUERY STRING PARAMETERS
You add these types of query string parameters to the URL that invokes the Player V3 library and the
video, like the name1=value1 &name2=value2... in the following example.
<script>http://player.ooyala.com/v3/player_branding_id?name1=value1
&name2=value2...
The following table describes these query string parameters.
Parameter
Description
namespace
The namespace parameter allows multiple independent copies of player code on the
same page, by renaming the default namespace OO to any other valid javascript id. For
example if you use this embed:
namespace=(unique javascript id)
You can later use:
MYPLAYER_1.Player.create(......)
MYPLAYER_2.Player.create(......)
platform
The platform parameter enables you to control the selection mechanism between flash
and html5 playback. The parameter format is:
platform=(flash-only|flash|html5-fallback|
html5-priority)
For Player V3, the default multimedia Default is flash. The parameter has the following
options:
•
•
•
•
flash - Enables default Adobe Flash playback only on desktop, on mobile and tablets.
This option sets the preference to Flash but also allows html5 fallback.
flash-only - Only allows Flash playback. If Flash is not detected it displays an error
message and requests that the viewer installs the Flash plug-in.
html5-fallback - Uses Flash but enables fallback to html5.
html5-priority - This parameter sets html5 as the preferred playback mechanism but
also allows Flash fallback.
PLAYER API REFERENCE | PLAYER API PARAMETERS | 11
Parameter
Description
Note: HTML5 playback only works for specific browser and OS/device configurations.
See the Support Center в†’ Documentation в†’ Player Developer Guide в†’ System
Requirements topic for more information.
tweaks=androidUse the tweaks parameter to enable HLS on your Android devices for the web. Although
enable-hls you can use this parameter to enable HLS on Android devices, certain limitations exist for
HLS playback on 4.x devices. For more information about operability on Android devices,
see "Enabling HLS on Android Web."
Note: As the use of the tweaks parameter can involve native playback issues, we cannot
guarantee optimal playback experience on every Android device and OS version.
Example
http://player.ooyala.com/v3/123fake6b6774f909c2fa6d23ce5334a?
tweaks=android-enable-hls
Note: The legacy Player API had query string parameters for passing tags of ad server and ad networks
to the Ooyala player. For Player V3, the supported ad servers/networks and the mechanisim for passing
related tags is detailed in Ads Embedded Parameters Overview on page 20.
EMBEDDED PARAMETERS
Note: For Ads embedded parameters for Google IMA, VAST, VPAID, FreeWheel, and Liverail, please see
Ads Embedded Parameters Overview on page 20 and follow the links for the desired ad manager or
module.
You add the following parameters to the player embed code within the DIV container, as shown in the
example for each parameter. These parameters include CSS style settings such as width and height and
embed code parameters that are tags from your ad server or ad network account and can be passed to
the Ooyala Player for advanced ad tracking and targeting. The following table describes these embed code
parameters.
The following table also describes the hash or key value pairs that you can use with the onCreate
function to change embedding behavior.
Table 1: Embedded Parameters
Parameter Key
Description
analytics
Enables the use of custom analytics tags in Player V3.
Example:
...
var ca_tags = [];
ca_tags[0] = "toolbar";
OO.ready(
function () {
OO.Player.create('ooyalaplayer',
'w3ZHc0Njr33Tdp-RRcwfZMjaOrmzOP82', {
analytics: {
"tags": ca_tags
}
});
PLAYER API REFERENCE | PLAYER API PARAMETERS | 12
Parameter Key
Description
});
...
Note: For additional information about custom analytic tags and using these tags
with the Backlot REST API, see Custom Analytics: Tagsand Custom Analytics:
Tags.
autoplay
Enables the automatic playing of an asset (video or audio) upon loading. This is
useful for UIs that do not have play/pause controls or conditions where you want
the content to play immediately.
Example:
var videoPlayer = OO.Player.create('playerwrapper',
'embed_code', {
height:100%,
width:100%,
autoplay:true,
....
});
enableChannels
Enables loading Flash videos in Channels mode. This parameter provides
backwards compatibility for channels. By default the flag is set to a value of false.
The embedChannels parameter handles HTML5 compatibility and ensures Flash
channel usability.
For HTML:
•
•
If enableChannels = true, play the first video of the channel or the first video of
the first channel of the channel set
If enableChannels = false, display an error screen.
For Flash:
•
•
If enableChannels = true, pass the channel embed to the player to run normally
(this may impact performance).
If enableChannels = false, display an error screen.
Example:
var videoPlayer = OO.Player.create('playerwrapper',
'embed_code', {
height: 100%,
width: 100%,
enableChannels: true,
....
});
google
Use this parameter to pass Google IMA v3 ad server or network tags to the Ooyala
player. The parameter takes a key value pair representing a Google AdSense URL.
Example:
var videoPlayer = OO.Player.create('playerwrapper',
'embed_code', {
height: 100%,
width: 100%,
'google': {
tagUrl: 'some url',
PLAYER API REFERENCE | PLAYER API PARAMETERS | 13
Parameter Key
Description
....
},
});
initialTime
Use this parameter to set an initial time in seconds to start playing content at
a specific point. This parameter can be used to enable seeking for iOS-based
devices. You can also use this parameter with Cross-Device Resume to seek to a
specific user's position.
Type: integer
Valid Values: time in seconds
Example: initialTime: 10
OO.ready(function () {
window.pp = OO.Player.create('playerV3Container',
'embed_code', {
width: 480,
height: 360,
initialTime: 10
});
in-stream
Use this parameter to pass In-Stream ad server or network tags to the Ooyala
player. The parameter takes a key value pair representing an In-Stream URL.
Example:
var videoPlayer = OO.Player.create('playerwrapper',
'embed_code', {
height: 100%,
width: 100%,
'in-stream': {
tagUrl: 'some url',
....
},
});
locale
Use this parameter to set or override the language and closed caption options. In
the following example, the locale parameter is used to create a Hebrew localized
player. Note that because of the way that closed captions are supported in iOS, we
are not able to add closed caption data for IOS web for remote assets.
Example:
var videoPlayer = OO.Player.create('playerwrapper',
'embed_code', {
height: 100%,
width: 100%,
locale: 'he_IL',
....
});
loop
Use this parameter to enable continuous play. With loop set to true, once
the playback has started it continues until the user stops playback or closes
the browser. Also the behavior is the same when embed code is set using
setEmbedCode. As soon as the embed code is set, if autoplay is true, the playback
starts immediately regardless of the previous state of the player (video playing/
PLAYER API REFERENCE | PLAYER API PARAMETERS | 14
Parameter Key
Description
paused/stopped). If autoplay and loop parameters are not passed in through
setEmbedCode, the existing values are used (which may have been set via a
previous call to setEmbedCode).
Example:
var videoPlayer = OO.Player.create('playerwrapper',
'embed_code', {
height: 100%,
width: 100%,
loop: 'true',
....
});
onCreate
Use this parameter to listen to an event message and perform an action. This
parameter enables you to subscribe to event messages from the message bus
before the player is fully created. It allows you to modify the player prior to its
complete creation.
When called, onCreate: function(player):
•
•
•
Checks for any additional modules (custom, 3rd party or other type).
Enables these additional modules to connect to the message bus.
Sends a message to the message bus signaling each module to start up.
You need to call onCreate before anything can happen; otherwise, the existing and
additional or third-party modules are not connected to the message bus and are not
initialized.
Example
OO.Player.create('playerwrapper',embedCode, {
onCreate: function(player) {
player.subscribe('*','myPage', function(eventName) {});
}
});
onCreate and the Player V2 Callback
To handle events in Player V2, you can define a callback function, and then pass
its name to the embed tag using a callback parameter. However, to handle events
in Player V3, you provide an onCreate function to the OO.Player.create()
call, and then register for all the messages. For more information about Player V3
events, see Player Event Model. For information about Player V2 callbacks and
parameters, see the Player Query String Parameters (Player V2 Deprecated) topic.
Keep in mind that Player V2 is deprecated.
prebuffering
For HTML5 players, use this parameter to disable prebuffering of videos, which
happens by default. You might want to disable prebuffering for different reasons:
•
•
To decrease load time when loading multiple videos on the same page
To avoid the cost of loading when you expect a video to be played infrequently
The following example shows the use of the prebuffering parameter.
Example:
var videoPlayer = OO.Player.create('playerwrapper',
'embed_code', {
height: 100%,
PLAYER API REFERENCE | PLAYER API PARAMETERS | 15
Parameter Key
Description
width: 100%,
prebuffering: false,
....
});
showAdMarquee
Specifies whether to show or hide the ad marquee during ad playback. If
showAdMarquee is missing or set to true, the ad marquee will appear while an ad
is playing on your player. This global parameter works for all ad types supported by
Ooyala.
Valid Values: true | false
•
•
True: adMarquee will appear during ad playback.
False: adMarquee will be hidden during ad playback.
Default: True
Example:
var player = OO.Player.create('playerwrapper', embedCode, {
showAdMarquee: true
});
showInAdControlBar
Specifies whether to show or hide the control bar during ad playback. If
showInAdControlBar is missing or set to true, the control bar will appear while an ad
is playing on your player. This global parameter works for all ad types supported by
Ooyala.
Note: This parameter is only available for Flash desktop.
Valid Values: true | false
•
•
True: controlBar will appear during ad playback.
False: controlBar will be hidden during ad playback.
Default: True
Example:
var player = OO.Player.create('playerwrapper', embedCode, {
showInAdControlBar: false
});
tvRatingsPosition
Note: This parameter is for Flash desktop only.
This optional parameter specifies the position on the player where the TV rating
watermark will appear.
Valid Values: top-left | top-right | bottom-left | bottom-right
Default: top-left
Note: To apply a TV Rating watermark to an asset, you need to include custom
metadata in Backlot per asset you want given the TV Rating watermark. See
Adding a TV Rating Watermark to a Flash Player for detailed information on
applying a TV Rating watermark to an asset.
Example:
var player = OO.Player.create('playerwrapper', embedCode, {
PLAYER API REFERENCE | PLAYER API PARAMETERS | 16
Parameter Key
Description
tvRatingsPosition: "top-left"
});
tvRatingsTimer
Note: This parameter is for Flash desktop only.
Specifies the duration of the TV Rating watermark on the player (in seconds) on
initial play and every time the video resumes from Ad breaks. This parameter is
required if you want to apply a TV Rating watermark to an asset.
Valid Values: always | never | some_number
•
•
•
always: The watermark appears for the duration of the video (but will not appear
during ad playback).
never: The watermark never appears.
some_number: You will replace some_number with the number of seconds you
want the TV rating to remain on the player.
Default: never
Note: To apply a TV Rating watermark to an asset, you need to include custom
metadata in Backlot per asset you want given the TV Rating watermark. See
Adding a TV Rating Watermark to a Flash Player for detailed information on
applying a TV Rating watermark to an asset.
Example:
var player = OO.Player.create('playerwrapper', embedCode, {
tvRatingsTimer: "15"
});
useFirstVideoFromPlaylist
Use this parameter to set the video in the player to the first video from the first
playlist.
Type: Boolean
Example:
var videoPlayer = OO.Player.create('playerwrapper',
'embed_code', {
height: 100%,
width: 100%,
useFirstVideoFromPlaylist: true,
....
};
ooyalaPlayer = OO.Player.create('playerContainer', '',
playerConfiguration);
});
Note:When a playlist is updated, after the caches expire, the first video in the first
playlist that useFirstVideoFromPlaylist uses is updated.
If you don't want the video in the player to be the first video from the first playlist
you can use another video by setting this parameter to "false" and specifying the
desired video's embed_code in the OO.Player.create function like so:
var videoPlayer = OO.Player.create('playerwrapper',
'embed_code', {
height: 100%,
width: 100%,
PLAYER API REFERENCE | PLAYER API PARAMETERS | 17
Parameter Key
Description
useFirstVideoFromPlaylist: false,
....
};
ooyalaPlayer =
OO.Player.create('playerContainer', 'embed_code',
playerConfiguration);
});
CUSTOM MODULE EMBEDDED PARAMETERS
You can add custom module embedded parameters (key value pairs) to the onCreatefunction. The
following table describes these custom module parameters.
Parameter
Description
devModuleCategory
Used for the development of third party custom modules, you specify this
parameter in the "flashParams" subhash of the Player.create options hash.
Use this parameter to specify the custom module category such as 'universal'
or 'ads-manager.'
Type: string
Valid Values: category name such as 'universal' or 'adsmanager'
Example:
var videoPlayer = OO.Player.create('playerwrapper',
'embed_code', {
height: 100%,
width: 100%,
'flashParams': {
devModuleCategory: 'universal',
....
},
});
devModuleURL
Used for the development of third party custom modules, you specify this
parameter in the "flashParams" subhash of the Player.create options hash.
You use this parameter to specify the URL of the location where the third
party module swf can be downloaded.
Type: string
Valid Values: download URL where the third party module swf
is located
Example:
var videoPlayer = OO.Player.create('playerwrapper',
'embed_code', {
height: 100%,
width: 100%,
'flashParams': {
devModuleURL: 'someURL',
....
PLAYER API REFERENCE | PLAYER API PARAMETERS | 18
Parameter
Description
},
});
hide
Use this parameter to disable specific player functionality. The V3 HTML5
player does not display the controls by default and thus the hide parameter
does not work with the V3 player. However, if you have Flash fall-back
on your device, you can us use the hide parameter (see the platform
parameter listed earlier). In the case where you do have Flash fall-back, you
need to specify hide with flashParams in the hash.
Type: string
Valid Values: all | comma-separated list of options
where the values are:
•
•
all - to disable all controls
channels, fullscreen, embed, endscreen, info,
loadingindicator, sharing, or volume,
Example:
In the following example we specify 'flashParams' in the hash and add the
hide key value pair.
var videoPlayer = OO.Player.create('playerwrapper',
'embed_code', {
height: 100%,
width: 100%,
'flashParams': {
hide: 'all',
....
},
});
If the player is in a chromeless layout, it is possible to disable the
loadingIndicator. The following example shows how to use this value
with the hide parameter.
var videoPlayer = OO.Player.create('playerwrapper',
'embed_code', {
height: 100%,
width: 100%,
'flashParams': {
hide: 'loadingindicator',
....
},
});
layout
Use this platform parameter to control the UI layout. The parameter format is:
layout=(chromeless)
For Player V3, the parameter has the following option:
•
chromeless - Toggles the default player controls on or off. If set to
chromeless, the parameter removes the chrome and the start screen. If
not specified, the player reverts to its default layout.
PLAYER API REFERENCE | PLAYER API PARAMETERS | 19
Parameter
Description
The chromeless parameter disables the controls in the player UI and plays
the video just through autoplay. To implement a chromeless layout on the
Ooyala V3 Player, you can add the layout='chromeless' parameter to
the <script ..../v3> tag. This disables the player controls so that the
viewer can playback a video without the controls being shown. By removing
the player's control bar, viewers will not be able to play the video as the
playback button is removed. You need to enable a video playback so that the
video will start automatically. Set the autoplay parameter to 1 to make the
video to start as soon as the player finishes loading the stream.
Example:
var videoPlayer = OO.Player.create('playerwrapper',
'embed_code', {
height: 100%,
width: 100%,
layout: 'chromeless'
});
thruParam_dev-other Used for the development of third-party custom modules. You specify this
parameter in the "flashParams" subhash of the Player.create options hash.
This parameter allows you to pass basic customizations to the Ooyala player.
Type: string
Valid Values: customization code
Example:
var videoPlayer = OO.Player.create('playerwrapper',
'embed_code', {
height: 100%,
width: 100%,
'flashParams': {
thruParam_dev-other: 'customization',
....
},
});
ADS EMBEDDED PARAMETERS OVERVIEW
Customize ads using embedded parameters.
You can pass ad-service-related tags to the Player with the embedded parameters listed in the following
table. For a full description of these parameters and their tags, see the individual topics for each of the ads
embedded parameters by selecting the parameter link. You can also see our Ads Integration developer
guide topics for step-by-step information about adding ads to your content and integrating an ad network
with your player.
Note: Ads positions behave somewhat differently on desktop and mobile devices:
•
•
Desktop platforms support all ad positions.
iOS-based devices support only pre- and post roll positions.
PLAYER API REFERENCE | PLAYER API PARAMETERS | 20
Parameter
Description
in-stream
Pass in-Stream ad server or network tags to the Ooyala player. The parameter
takes a key/value pair representing an In-Stream URL.
For more information see the In-Stream Ads Embeded Parameters reference topic.
freewheel-adsmanager
Pass FreeWheel ad server or network tags to the Ooyala player. The parameter
takes a key value pair representing a FreeWheel URL.
For more information, see the FreeWheel Embeded Parameters reference topic.
google-ima-ads- Pass Google IMA ad server or network tags to the Ooyala player. The parameter
manager
takes a key value pair representing the ad server or network URL. You can pass
google-ima-ads-manager ad tags to the Ooyala player.
For more information, see the Google IMA Ads Embeded Parameters reference
topic.
liverail-adsmanager
Pass certain LiveRail parameters (LR_ parameters) to communicate with LiveRail.
vast
Pass VAST ad server or network tags to the Ooyala player. VAST is an ad format
which uses xml to describe Linear ads (video ads), non-linear ads (overlay ads)
and companion ads.
For more information, see the LiveRail Ads Embeded Parameters reference topic.
For more information, see the VAST Ads Embeded Parameters reference topic.
vpaid-adsmanager
Pass VPAID Ad Manger tags to the Ooyala player.
For more information, see the VPAID Ads Embeded Parameters reference topic.
In-Stream Ads Embedded Parameter
Pass in-stream ads to the Ooyala player.
Use the in-stream embedded parameter to pass in-Stream ad server or network tags to the Ooyala player.
The parameter takes a key/value pair representing an In-Stream URL.
FreeWheel Ads Embedded Parameter
You can pass FreeWheel ad-service-related tags to the Player with the embedded parameters using the
freewheel-ads-manager parameter in your embed.
Note: Ads positions behave somewhat differently on desktop and mobile devices. At this time support for
pre-, mid-, and post-roll ads varies by platform. To see what ad position are supported for each platform,
see Ads Integration Overview.
FREEWHEEL PARAMETER
freewheel-ads-manager - Use this ads parameter to pass FreeWheel ad server or network tags to the
Ooyala player. The parameter takes a key value pair representing a FreeWheel URL.
The following sample web page shows a FreeWheel ad manager integration that passes additional pagelevel parameters in an HTTPS environment, for both Flash and HTML5.
Note: The values in the following non-working example are only used to illustrate how to use the
freewheel-ads-manager. You need to replace them with your own profiles, ids, and URLS.
<script src='http://player.ooyala.com/v3
PLAYER API REFERENCE | PLAYER API PARAMETERS | 21
/1234fake2b914bc58e425795abf3cd6c?
version=1234fake09bb8939e930f888b2b9e23627b20ea6&
platform=html5-priority'></script>
<script>
OO.ready(function () {
var videoPlayer = OO.Player.create('container',
'1234Fakeoi5Xv3Dav6uuEIeVJto9Ju7R', {
"freewheel-ads-manager": {
fw_ad_module_js: "http://adm.fwmrm.net/p/exampleprovider_live/
AdManager.js",
html5_ad_server: "https://1b656.v.fwmrm.net/ad/g/1",
html5_player_profile: "123400:exampleprovider_live_html5",
fw_player_profile: "123400:exampleprovider_live",
fw_mrm_network_id: 123400,
// Parameters that should be set on each page on the actual site
fw_site_section_id: "EXAMPLEVIDEO_EXAMPLEVIDEO_SHOWS",
fw_video_asset_id: 123FAKE
}
});
});
</script>
Google IMA Ads Embedded Parameters
You can pass Google IMA ad-service-related tags to the Player with the embedded parameters.
Note: To use Ooyala’s Google IMA ad manager, log into the Support Center and submit a ticket
requesting that this ad source be added to your account. Once it’s enabled, you’ll be able create adsets for
your player.
Ads positions behave somewhat differently on desktop and mobile devices. See Ads Integration Overview
for a comprehensive list of ad postion support by platform.
GOOGLE IMA PARAMETER
Use the google-ima-ads-manager parameter to pass Google IMA ad server or network tags to the
Ooyala player. The parameter is a container that takes a key value pair representing the ad server or
network URL along with the other parameters described below.
Set the adTagUrl Parameter to Override the Backlot URL
One of the parameters for the google-ima-ads-manager is a key value pair in the form adTagUrl:
"some url".
Valid Values: Any URL.
For example:
var videoPlayer = OO.Player.create("playerwrapper", "embed_code", {
height: "100%",
width: "100%",
"google-ima-ads-manager": {
adTagUrl: "some url",
...
},
});
PLAYER API REFERENCE | PLAYER API PARAMETERS | 22
You need to change the key value "some url" to the actual google-ima ad tag containing the response.
This URL value for the adTag key value pair represents the ad server or network URL. This adTag URL
overrides the one in Backlot. For example:
adTagUrl: "http://myAdServer.com/myGoogle-ima-ads-manager"
You can have additional adTag parameters appended to the end of the URL that you get from Backlot.
Use showInAdControlBar to Show or Hide the Player Controls Bar During Ad Playback
You can use showInAdControlBar to show/hide player controls bar during ad playback.
Valid Values: yes | true | no | false
Default: no
Note: There is a general player parameter also called 'showInAdControlBar'. You should not use both
showInAdControlBar parameters simultaneously. The preferred method is to use the general player
showInAdControlBar parameter outside of the 'google-ima-ads-manager' hash.
For example:
var videoPlayer = OO.Player.create("playerwrapper", "embed_code", {
height: "100%",
width: "100%",
"google-ima-ads-manager": {
showInAdControlBar: true,
... }
}
);
Use showAdMarquee to Show or Hide the Ad Marquee During Ad Playback
Use showAdMarquee to show or hide the ad marquee during ad playback. When set to false or no, the
adMarquee of an add will be hidden. If set to true, yes, or omitted the adMarquee will be displayed during
ad playback.
Valid Values: true | false
Default: true
For example:
var videoPlayer = OO.Player.create("playerwrapper", "embed_code", {
height: "100%",
width: "100%",
"google-ima-ads-manager": {
showAdMarquee: true ,
... }
}
);
Use playWhenAdClick to Set Ad Playback Behavior After Ad is Clicked
If playWhenAdClick is set to yes, ad playback will continue regardless of click.
Valid Values: yes | true | no | false
Default: no
Note: For Flash, if playWhenAdClick is set to false with no ad controls, after the user clicks on the ad and
is redirected, ad playback will continue when the user clicks on the ad the second time. We are aware that
PLAYER API REFERENCE | PLAYER API PARAMETERS | 23
this causes some undesired behavior where the ad url opens for both ad pause and ad play events. We
are working with the Google IMA team to fix this behavior. Otherwise, ad playback will pause.
For example:
var videoPlayer = OO.Player.create("playerwrapper", "embed_code", {
height: "100%",
width: "100%",
"google-ima-ads-manager": {
playWhenAdClick: true ,
... }
}
);
Set the additionalAdTagParameters to Append More Parameters
You can use additionalAdTagParameters to add functionality to your ad handling such as adding
demographic targeting for ads. These added ad tag parameters have a dependency on how the ad tag
is set up in Backlot. Also, the additional adTagUrl parameter key-value pairs are part of the adTagUrl
parameter and need to be in the form of a dictionary with key-value pairs. You can use any of the internal
key/value pairs that google-ima supports. Google IMA documentation lists these parameters at this site:
https://support.google.com/dfp_premium/answer/1068325?hl=en. When you use these parameters, we
append them to the end of the ad tag. Appended parameters do not override anything in the URL from
Backlot.
Note: The ad tag Url overrides the Url in Backlot.
To start using these parameters, you can specify something like the following:
additionalAdTagParameters: {
"parameter1": "value1",
"parameter2": "value2"
}
In Backlot, if you specify the ad tag URL as:http://www.example.com/example?param1=test,
the resulting request made with the following parameters would be: "www.example.com/
example?param1=test&cust_params=env%3Dmobilevcmshost%26siteview%3D1%26pth
%3Djsbin.com&vid=code&pod=2"
This request would look something like the following example:
"google-ima-ads-manager": {
additionalAdTagParameters: {
cust_params: "env%3Dmobilevcmshost%26siteview%3D1%26pth%3Djsbin.com",
vid: "code",
pod: "2"
}
}
adTagUrl Parameters from Google IMA Documentation
You use the key value pairs from the google-ima-ads-manager to append to the adTagUrl parameter.
You can find lists of these parameters in the Google IMA documentation. The following examples show
how to use some of these parameters as key-value pairs of the google-ima-ads-manager parameter:
cust_params
PLAYER API REFERENCE | PLAYER API PARAMETERS | 24
This value pair enables you to pass custom targeting parameters to the Ooyala player. You can put any
kind of key values for the cust_params. For example:
cust_params: "partner%3Dpartner_1%26gender%3Dfemale%26anotherKey
%3Dvalue1%2Cvalue2"
vid
This parameter is a unique identifier for the video assets and should take the value of your Ooyala video
asset ID (embed code). You can get your video embed code from Backlot.
Note: This value is required for using DFP to target against content metadata.
For example:
vid: "1234Fakeoi5Xv3Dav6uuEIeVJto9Ju7R"
vpos
You can use this value to specify the position of the ad in the video stream.
vpos: "preroll"
The following example demonstrates the use of the google-ima adTagUrl parameter on a client-side web
page.
<!doctype html>
<html>
<head>
<style rel="stylesheet" type="text/css">
html,
body {
margin: 0;
padding: 0;
}
#container {
width: 800px;
height: 500px;
margin: 0 auto;
}
</style>
<script src="http://player.ooyala.com/v3/123fake9ddb1446ea9bb7cad08711d36?
platform=html5-priority"></script>-->
<script>
OO.ready(function () {
OO.Player.create("container", "123fakeZpXSpOwupKby1s74Q8FQbRwPn", {
"google-ima-ads-manager": {
"showInAdControlBar": true,
"adTagUrl": "http://1fake4ads.g.doubleclick.net/gampad/ads?
sz=640x480&iu=%2F6376%2Fbr.
College_Football%2Fvideo&ciu_szs=300x250%2C728x90&impl=s
&gdfp_req=1&env=vp&output=xml_vast2&unviewed_position_start=1
&url=[referrer_url]&correlator=[timestamp]",
"additionalAdTagParameters": {
"cust_params": "env%3Dmobilevcmshost%26siteview%3D1%26pth
%3Djsbin.com",
"vid": "code",
"vpos": "preroll"
}
}
});
PLAYER API REFERENCE | PLAYER API PARAMETERS | 25
});
</script>
</head>
<body>
<div id="container"></div>
</body>
</html>
In this example, we set the adTagUrl with several key value pairs such as ciu_szs, unviewed_position, url,
correlator and others.
ADREQUESTTIMEOUT PARAMETER
Set the adRequestTimeout to set the timeout before continuing video playback
Note: The parameter is for Flash only.
Use the key value pair in the form adRequestTimeout: "some integer" to customize the time taken,
in milliseconds, to make a timeout for the ad request and continue the video playback. We recommend
using whole milliseconds (e.g. 2001 milliseconds instead of 2000.5 milliseconds).
Valid Values: any integer greater than or equal to 1000.
Default: 3000
For example:
var videoPlayer = OO.Player.create("playerwrapper", "embed_code", {
height: "100%",
width: "100%",
adRequestTimeout: 1000
"google-ima-ads-manager": {
adTagUrl: "some url",
... },
}
);
GOOGLE IMA FOR MOBILE DEVICES
Ooyala supports Google IMA for both desktop and mobile. For information about working with Google IMA
for mobile devices, see the following mobile SDK Android and iOS topics.
•
•
Android - Integration with Google IMA on Android and See the IMA Sample App in Action on Android
iOS - Integration with Google IMA on iOS and See the IMA Sample App in Action on iOS
LiveRail Ads Embedded Parameters
You can pass LiveRail ad-service-related tags to the Player with the embedded parameters described in
the following table.
LIVERAIL-ADS-MANAGER PARAMETER
liverail-ads-manager - Use this parameter to pass certain LiveRail parameters (LR_ parameters) to
communicate with LiveRail. A direct translation of the LiveRail parameters from Backlot to Dynamic params
would be:
PLAYER API REFERENCE | PLAYER API PARAMETERS | 26
Backlot
LiveRail
Required
Details
Publisher ID
LR_PUBLISHER_ID
Yes
Unique identifier for your LiveRail
account.
Partner IDs
LR_PARTNERS
No
Revenue-sharing partner ID that has
been created in the LiveRail system.
Tags
LR_TAGS
No
Keywords or content tags to pass
to LiveRail's system for campaign
targeting or reporting.
Ad Map
LR_ADMAP
No
The standard way for defining when
ads should play in video stream. Full
details on the format for this key/value
pair are available in LiveRail's Support
Center.
By default the Ad Map configured in
your LiveRail account will be applied,
however if you specify an Ad Map
for your Ad Set it will over-ride the
default Ad Map configured in the
LiveRail system. The table below
explains the syntax and valid values for
LR_ADMAP.
LR_ADMAP
The syntax for LR_ADMAP is LR_ADMAP=Type:Inventory_scenario_id:Time.
Table 2: LR_ADMAP Valid Values
Variable
Input Based on Use Case
Type
For in-stream ads, set to "in".
For overlay ads, set to "ov".
Inventory_scenario_id
The id value associated with a specific scenario.
Time
For in-stream ads, set to "n", where n
is either the number of seconds or the
percentage of time into the content. Ex:
LR_ADMAP=in:test_scenario:100%. Ex:
LR_ADMAP=in::0
For overlay ads, set to "n,m", where n is either
the number of seconds into the content or
percentage of time to start into content and m
is either the number of seconds or percentage
of time into content to stop the overlay. Ex:
LR_ADMAP=ov::10%,100%
PLAYER API REFERENCE | PLAYER API PARAMETERS | 27
•
The following JavaScript code example shows how the use of the liverail-ads-manager as a parameter
of the OO.Player.create function. The only required parameter to display LiveRail ads is the
Publisher ID, or LR_PUBLISHER_ID. The rest of the supported parameters are for targeting purposes.
var videoPlayer = OO.Player.create('playerwrapper', 'embed_code', {
height: '100%',
width: '100%',
'liverail-ads-manager': {
'LR_PUBLISHER_ID': '13517',
...
}
});
There is no integration of LiveRail ad manager and our Mobile SDKs. There is also no LiveRail midroll
support for iOS.
VAST Ads Embedded Parameters
Pass VAST ad server or network tags to the Ooyala player.
VAST is an ad format which uses xml to describe Linear ads (video ads), non-linear ads (overlay ads) and
companion ads. You can pass VAST ad-service-related tags to the Player with the embedded parameters.
Prerequisites
•
•
To use Ooyala’s VAST ad set, log into the Support Center and submit a ticket requesting that this ad
source be added to your account. Once it’s enabled, you’ll be able create ad sets for your player.
In order to use the VAST ad tag embedded parameter, an ad set must also be applied in Backlot and
the ad set must contain a valid VAST ad tag.
At this time support for pre-, mid-, and post-roll ads varies by platform. To see what ad position are
supported for each platform, see Ads Integration Overview.
VAST PARAMETER
Use the vast parameter to pass VAST ad server or network tags to the Ooyala player. The parameter
takes a key value pair representing the ad server or network URL. You can also use vast to change the
ad URL. If the ad URL is updated with the vast parameter, the ad will play when it was set up to play in
Backlot (pre-roll, mid-roll, or post-roll), but the ad content played will be overridden with the new ad URL.
The following example illustrates the use of the vast parameter.
var videoPlayer = OO.Player.create('playerwrapper', 'embed_code', {
height: '100%',
width: '100%',
'vast': {
tagUrl: 'some url',
...
}
});
VASTADS PARAMETER
Note: This parameter is for HTML5 only.
Use the vastAds parameter to programmatically override any VAST ads or ad sets applied in Backlot.
This feature allows you to add VAST ads to an asset or update the VAST ad content and position (pre-roll,
post-roll, and mid-roll) from the player embedded parameters. If ads are set with vastAds, ads and ad
sets associated with the player in Backlot will be completely ignored.
vastAds is a container, where you need to specify all the parameters that an ad uses:
PLAYER API REFERENCE | PLAYER API PARAMETERS | 28
•
•
•
•
•
type: The ad type. Set to "vast".
url: The link to the VAST ad content.
frequency: How often to call the VAST ad. Set to any positive integer.
first_shown: How many videos need to play before the VAST ad is shown. Set to any positive integer.
time: The time (in milliseconds) into the video when the VAST ad will play. Set to any positive integer.
•
•
•
To create a pre-roll ad, set time to 0.
To create a mid-roll ad, set time to any other number within the time of the asset.
To create a post-roll ad, set time to exactly 1000000000.
The following example demonstrates setting up a pre-roll ad and a mid-roll ad using vastAds.
var player = OO.Player.create('playerwrapper', embedCode, {
'vastAds': [{
type: "vast",
url: "http://pubads.g.doubleclick.net/gampad/ads?sz=640x360&iu=/6062/
iab_vast_samples/
skippable&ciu_szs=300x250,728x90&impl=s&gdfp_req=1&env=vp&output=xml_vast2&unviewed_posi
frequency: 1,
first_shown: 0,
time: 0
},
{
type: "vast",
url: "http://pubads.g.doubleclick.net/gampad/ads?sz=640x360&iu=/6062/
iab_vast_samples/
skippable&ciu_szs=300x250,728x90&impl=s&gdfp_req=1&env=vp&output=xml_vast2&unviewed_posi
frequency: 1,
first_shown: 0,
time: 10000
}]
});
VPAID Ads Embedded Parameters
You can pass VPAID ad-service-related tags to the Player with the embedded parameters.
Note: To use Ooyala’s VPAID ad module, log into the Support Center and submit a ticket requesting that
this ad source be added to your account. Once it’s enabled, you’ll be able create adsets for your player.
Ads positions behave somewhat differently on desktop and mobile devices:
•
Flash Desktop supports all ad positions.
VPAID PARAMETERS
Use the vpaid-ads-manager parameter to pass VPAID Ad Manger tags to the Ooyala player.
Note: To use this parameter, you need to get the Ooyala OPF SDK (1.5.6 or later) and have Flash Builder
4.5 or later. To get the OPF SDK, contact your account manager.
The parameter takes the key value pairs listed in the following topic. adTag and 'some url' . You
need to change the key value pair 'some url' to the actual VPAID Ad Tag containing the response.
The following is an example of the vpaid-ads-manager parameter:
var videoPlayer = OO.Player.create('playerwrapper', 'embed_code', {
height: '100%',
width: '100%',
'vpaid-ads-manager': {
adTag: 'some url',
...
PLAYER API REFERENCE | PLAYER API PARAMETERS | 29
}
});
Key Value Pairs for vpaid-ads-manager
The key value pairs for the vpaid-ads-manager are as follows:
adLayout
When value equals to adjusted, the module will resize the ad, so that controls or marquee don't take space
from it. For example:
adLayout: 'adjusted'
adTag
This value will override the Ad tag for loading the VAST xml file. For example
adTag: 'http://myAdServer.com/myVast'
showInAdControlBar
This value shows the default player control bar. For example:
showInAdControlBar: 'true'
Note: This will not work with layout=chromeless or when the parameter "Always show scrubber bar" is
enabled for the player.
playWhenAdClick
When set to true this value will keep playing the video ads, even if the user clicks the ad and gets
redirected. For example:
playWhenAdClick: 'true'
showAdMarquee
This value will show a white marquee with the message: "Your video will resume in x seconds"
showAdMarquee: 'true'
PLAYER API REFERENCE | PLAYER API PARAMETERS | 30
PLAYER MESSAGE BUS EVENTS
Use message bus events to subscribe to or publish player events from video to ad playback.
The player standard events are shown in the following list. These are default events that are published by
the event bus. Your modules can subscribe to any and all of these events. To get a list of all these default
events that are published by the message bus, you can use the function: OOEvents = “*”
Note: You must use the Player APIs and Events for your players (both Flash and HTML5). If you have
existing legacy Ooyala player APIs, they can continue to work for the Ooyala Flash player that is “wrapped”
by the current Ooyala V3 Player.
EVENTS
The following table describes all the message bus events associated with assets.
Many events return arguments to their callback functions; the meaning of these arguments is listed for
those events that have them.
Some of these events cause "data points" in Ooyala Analytics; that is, a datum is recorded in Analytics
when the event occurs. Some of these are known as "displays", "plays", and "video starts". For more
information, see the Backlot User Guide.
Events
Flash
Html5
Description
Arguments
returned
to callback
function
Analytics Data Point
or Behavior
X
AUTH_TOKEN_CHANGED
Event is triggered when an authorization New value for
auth token
token is issued by the Player
Authorization API.
(For example, in device registration,
an authorization token is issued, as
described in Device Registration.)
ADS_CLICK
X
ADS_FILTERED
An ad has been clicked.
Triggers an Ad
Analytics AD_CLICK
event
X Indicates that some ads may have been Depending on
filtered out
the context,
returns
Note: For VAST and Ooyala ads only
• The current
embed code
• The list of
valid ads
ADS_MANAGER_FINISHED_ADS
X Signals that the ad manager is done
playing ads in its ad slot
ADS_MANAGER_HANDLING_ADS
X Signals that the ad manager is still
playing ads in its ad slot
ADS_PLAYED X
A set of ads have played.
Depending on
context:
PLAYER API REFERENCE | PLAYER MESSAGE BUS EVENTS | 31
Events
Flash
Html5
Description
Arguments
Analytics Data Point
returned
or Behavior
to callback
function
1. Duration of
ad
2. ID of item to
play
AD_AUTHORIZATION_FETCHED
X Ad authorization data was received (the IDs of ads
authorization data is passed within this affected by
event).
authorization
AD_CONFIG_READY
X An ad set configuration is ready for
insertion and/or play.
Depending
on context, a
pointer to the
ad loader
AUTHORIZATION_FETCHED
X Playback was authorized.
ID of
authorization for
asset
The event returns an object which
returns the value of video_bitrate.
For more information on video_bitrate
see: Video Bit Rate
BITRATE_CHANGED
X
The currently playing bitrate has
changed.
BITRATE_INFO_AVAILABLE
X
Lists the available bitrates
videoBitrate
Depending on
the context,
returns:
•
•
•
•
BUFFERED
BUFFERING
X Play resumes because player has
completed buffering.
The bitrate
qualities
The bitrates
The target
bitrate's
quality
The target
bitrate
URL of stream
X X The player is buffering the data stream.
CHANGE_VOLUME
X X A request to change volume has been
made.
Volume level
CONTENT_TREE_FETCHED
X X A content tree was fetched.
Depending on
context:
1. ID of
current
asset
2. IDs of all
affected
assets
Records a "display".
For discussion, see
Displays, Plays, and
Play Starts.
PLAYER API REFERENCE | PLAYER MESSAGE BUS EVENTS | 32
Events
Flash
Html5
Description
Arguments
returned
to callback
function
Analytics Data Point
or Behavior
CONTROLS_HIDDEN
X Controls are hidden.
CONTROLS_SHOWNX Controls are shown.
DESTROY
X X The player is currently being destroyed
and anything created by your module
needs to be deleted as well. After the
destruction is complete, there is nothing
left to send an event.
DISABLE_PLAYBACK_CONTROLS
X Disables player controls
DOWNLOADING
X Player is downloading content (could be Time of event
playing while downloading).
EMBED_CODE_CHANGED
X X The player’s embed code has changed.
ID (embed
code) of asset
with options
ENABLE_PLAYBACK_CONTROLS
X Enables player controls
ERROR
X X An error has occurred.
Error code
FIRST_AD_FETCHED
X X The first in a set of multiple ads was
fetched.
FULLSCREEN_CHANGED
X X The fullscreen state has changed.
Depending on
context:
1. "Is
fullscreen"
set either
true or false
2. "Is
fullscreen"
set either
true or
false and
"paused"
set either
true or false
GOOGLE_IMA_CAN_SEEK
X Allows seeking in the video
Note: For Google IMA only
GOOGLE_IMA_READY
X Unblocks PLAYBACK_READY event
Note: For Google IMA only
GOOGLE_RESUME_CONTENT
X Unblocks the PLAY event for main video
content
Note: For Google IMA only
GUID_SET
X Is called with the GUID is set
Returns the
GUID
PLAYER API REFERENCE | PLAYER MESSAGE BUS EVENTS | 33
Events
Flash
Html5
Description
INITIAL_PLAY
Arguments
returned
to callback
function
Analytics Data Point
or Behavior
X When the play is called for the very first
time
LOAD_ALL_VAST_ADS
X Loads all VAST ads
METADATA_FETCHED
X X The metadata (typically set in Backlot)
was retrieved
ID of asset
MIDROLL_PLAY_FAILED
X
An attempt to play a midroll ad has
failed.
The arguments
that were
passed in
MIDROLL_STREAM_PLAYED
X
A midroll stream was played.
PAGE_UNLOAD_REQUESTED
X When the window, document, and its
resources are about to be unloaded
PAUSE
X X A player pause request has been made.
PAUSED
X X The player was paused.
PAUSE_STREAM
PLAY
Returns either
true or false
X An attempt to pause a video stream has
occurred.
X X A playback request has been made.
PLAYBACK_READY
X X The player has indicated that it is in a
playback ready state. All preparations
are complete, and the player is ready to
receive playback commands (such as
play, seek, and so forth). The default UI
shows the Play button (it displays the
non-clickable spinner before this point).
PLAYED
X
The video was played.
PLAYER_CREATED
X X A player was created. This is the first
event that is sent after player creation.
It provides the opportunity for any other
modules to do their own initializations.
PLAYER_EMBEDDED
X
The arguments
that were
passed in
The query
string
parameters
The Flash player has been embedded
on the page
PLAYER_XML_FETCHED
X
The Player XML has been fetched
PLAYHEAD_TIME_CHANGED
X X The playhead time was changed.
Depending on
context:
•
1. The current •
time
2. The
duration
3. The name
of the buffer
First event is “video
start”
Other instances of
event feed the “%
completed” data
points
PLAYER API REFERENCE | PLAYER MESSAGE BUS EVENTS | 34
Events
PLAYING
Flash
Html5
Description
Arguments
returned
to callback
function
4. The seek
range
Analytics Data Point
or Behavior
For discussion, see
Displays, Plays, and
Play Starts.
X X A video is playing.
PLAY_FAILED
X A request to play video has failed.
PLAY_MIDROLL_STREAM
A request to play a midroll stream was
made.
PLAY_STREAM
A notification occurred indicating that
a video stream playback request was
made.
PRELOAD_STREAMX A video stream is preloaded.
SEEK
SEEKED
SEEK_STREAM
The current
time
X A request to perform a seek has
occurred. The playhead is requested
to move to a specific location in
milliseconds. Valid Value: number in
milliseconds.
URL of stream
Seconds to
seek
This signifies that the player has
finished seeking to the requested
position.
X An attempt to move the playhead to a
Number of
position in a video stream has occurred. seconds
SET_EMBED_CODE
X X An attempt has been made to set an
embed code.
Depending on
context:
1. ID (embed
code) of
asset
2. ID (embed
code) of
asset with
options
SINGLE_AD_PLAYED
X Triggered after an individual ad (as
opposed to a group of ads) has played.
SIZE_CHANGED
X The screen size was changed. This
event can also be triggered by an
orientation change for handheld
devices.
STREAM_PAUSED X A video stream was paused.
1. Width of
player
2. Height of
player
Depending on
context:
1. The current
time
2. URL of
stream
PLAYER API REFERENCE | PLAYER MESSAGE BUS EVENTS | 35
Events
Flash
Html5
Description
Arguments
returned
to callback
function
STREAM_PLAYED X A video stream has played.
Analytics Data Point
or Behavior
Depending on
context:
1. The current
time
2. URL of
stream
STREAM_PLAYINGX An individual video stream is playing.
URL of stream
STREAM_PLAY_FAILED
X An attempt to play a video stream has
failed.
The arguments
that were
passed in
VOLUME_CHANGED
X X The volume has changed.
Current volume
level
WILL_CHANGE_FULLSCREEN
X Triggered before a change was made
to the full screen setting of the player
screen.
Depending on
context, either
true or false.
WILL_FETCH_ADSX Triggered before ads are fetched.
WILL_FETCH_AD_AUTHORIZATION
Triggered before the ad authorization is
fetched.
ID of requested
ad
WILL_FETCH_AUTHORIZATION
X Triggered before an authorization is
fetched.
ID of
authorization
request
WILL_FETCH_CONTENT_TREE
X Triggered before the content_tree is
retrieved.
Passed-in API
request
WILL_FETCH_METADATA
X Triggered before metadata is fetched for Passed-in API
a video.
request
WILL_PLAY
X Triggered before a video is played.
WILL_PLAY_ADS
X X Triggered before an ad is played.
Depending on
context:
1. Duration of
ad
2. ID of item to
play
WILL_PLAY_FROM_BEGINNING
X Triggered before a video is played from
the starting point.
Triggers an
Ad Analytics
AD_IMPRESSION
event
Records a "play".
For discussion, see
Displays, Plays, and
Play Starts.
WILL_PLAY_SINGLE_AD
X Triggered before an individual ad (as
opposed to a group of ads) is about to
be played.
WILL_PLAY_STREAM
X Triggered before an individual video
stream (one video, one ad).
URL of stream
PLAYER API REFERENCE | PLAYER MESSAGE BUS EVENTS | 36
Events
Flash
Html5
Description
Arguments
returned
to callback
function
Analytics Data Point
or Behavior
WILL_RESUME_MAIN_VIDEO
Triggered before the main video is
resumed.
WILL_SHOW_COMPANION_ADS
X
Triggered before the companion ads are Depending on
shown.
context:
1. ID of all
companions
ads
2. ID of a
single
companion
ad
PLAYER API REFERENCE | PLAYER MESSAGE BUS EVENTS | 37
PLAYER AUTHORIZATION API
The Authorization API request is the key element in Ooyala's content protection features.
A request to the Authorization API has the following syntax:
[GET] /sas/player_api/v1/authorization/
embed_code/pcode/ListOfCommaSeparatedEmbedCodes?query_string_paramters
Example:
http://player.ooyala.com/sas/player_api/v1/authorization/embed_code/
R0Y3Y6HtBEQtRUoC55GY8DTF4pGA/44azdwNDpSWUvfd8F30d55tXY0YH9njH?
device=html5&domain=www.ooyala.com&supportedFormats=m3u8%2Cmp4
ROUTE ATTRIBUTES
The following table describes all attributes of the route.
Attribute
Description
pcode
Your provider code
ListOfCommaSeparatedEmbedCodes
Embed codes (content IDs or asset IDs) must be
separated by commas in this list.
QUERY STRING PARAMETERS
The following table describes the query string parameters of the routes. The request can have several
optional query string parameters following in suit. The only required parameter is domain.
Parameter
Description
Required?
domain
Domain of the player embed.
Yes
timestamp
Timestamp in which the request
was made (epoch time).
No
Default: Time request received by
server
supported_formats
List of comma-separated values
indicating supported formats.
The value of this parameter is
normally tightly coupled with the
device type, since support for
formats is limited by device.
No
Valid Values: Shown in table
below
device
List of comma-separated devices
for playback.
No
PLAYER API REFERENCE | PLAYER AUTHORIZATION API | 38
Parameter
Description
Valid Values: See table below
Required?
jsonp
Value of this parameter will be
used as the wrapper in returning
JSONP.
No
Default: JSON
embed_token
Discussed in section "Ooyala
Player Token" in the Player
Developer Guide.
No
auth_token
Authorization token, discussed in
Enforcing Per-Viewer Limits on
Concurrent Streams
No
SUPPORTED FORMATS AND DEVICES
The supported_formats parameter can be a list of any of the following values, separated by commas.
Format
Value
HDS
hds
RTMP
RTMP
HLS
m3u8
MP4
mp4
Akamai HD
akamai_hd
Widevine HLS
wv_hls
Widevine MP4
wv_mp4
Widevine WVM
wv_wvm
Adobe Access HLS
faxs_hls
MicroSoft Smooth Streaming.
smooth
Note: For smooth streaming, device (see below)
must be GENERIC.
The device parameter can be a list of any of the following values, separated by commas:
•
•
•
•
•
•
•
•
•
IPHONE
IPAD
APPLE_TV
ANDROID_SDK
ANDROID_3PLUS_SDK
ANDROID_HLS_SDK
HTML5
GENERIC_FLASH
GENERIC
PLAYER API REFERENCE | PLAYER AUTHORIZATION API | 39
RESPONSE FROM THE AUTHORIZATION API
When the caller makes an authorization request, the Authorization API responds to the caller with a JSON
array indicating the authorization status for each of the embed codes included in the list in question. The
following is a sample response from the Authorization API:
{
"debug_data": {
"server_latency": "21.919",
"request_id": "domU-12-31-39-0B-D2-11_1346804527_57",
"user_info": {
"ip_address": "204.124.203.201",
"continent": "NORTH AMERICA",
"country": "US",
"request_timestamp": "1346804527",
"language": "en-us",
"device": "html5",
"timezone": -7,
"domain": "www.ooyala.com"
}
},
"signature": "0pobcTRSLoiSZchrMI7Aeoub05/OKRIavq36BgW74lU=\n",
"authorization_data": {
"44azdwNDpSWUvfd8F30d55tXY0YH9njH": {
"authorized": true,
"message": "authorized",
"code": "0",
"request_timestamp": "1346804527",
"retry": null,
"streams": [
{
"delivery_type": "hls",
"url": {
"data":
"aHR0cDovL3BsYXllci5vb3lhbGEuY29tL3BsYXllci9pcGhvbmUvNDRhemR3TkRwU1dVdmZkOEYzMGQ1NXRYWT
"format": "encoded"
}
}
]
}
}
}
ELEMENTS OF THE RESPONSE
The significant portions of the response are in boldface type in the sample. These parts of the response
are:
1. debug_data is used only for debugging data. It can change at any time.
2. signature in the response (discussed in the following section, How the Output Is Signed) is used to
ensure that the response has not been tampered with by a 3rd party. The most significant hash is
the “authorization-data” hash, which includes the result of the authorization request. Below are all the
enumerations for possible codes:message pairs (authorized has a binary true/false value). This list can
continue to change as we add additional parameters to authorization, providing more system visibility
into the potential failure.
PLAYER API REFERENCE | PLAYER AUTHORIZATION API | 40
3. streams are included if the embed code was authorized, including the base64 encoded url to access
those streams. Each stream can return with an authorization result of:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
"authorized"
“unauthorized parent"
"unauthorized domain"
"unauthorized location"
"unauthorized device"
“current time is before the flight start time" (before flight start time)
"current time is after the flight end time" (after flight end time)
"current time is outside any availability period" (outside recurring flight times)
"this is not a recognized embed code"
"invalid signature" (invalid signature in the request, potentially when using token based playback)
"missing parameters" (required parameters are missing)
"missing rule set" (when authorizing using a rule set rather than a syndication group)
“unauthorized” (this message rarely, if ever, used, in favor of more specific messages)
"missing pcode",
"invalid token" (error code for token based playback and Adobe Pass)
For response that includes a Widevine stream, the additional property widevine_server_path is
returned. This value should be passed along with the stream URL to the playback SDKs for obtaining the
Widevine license and decrypting the token.
{
"authorization_data":{
"huNWp2NjoCaCKrsV_wqBdcSw9P1XmlwW":{
...
"streams":[
{
"delivery_type":"wv_wvm",
"url":{
...
},
"widevine_server_path":"http://player.ooyala.com/sas/drm2/
lvcjAxOj82_rjlIAJ6Jr8ZZqGP-s/huNWp2NjoCaCKrsV_wqBdcSw9P1XmlwW/widevine/
ooyala"
}
]
}
},
"debug_data": ...,
"signature":"Fo6ewzq2tTrLJrFmjo5eQpeKUOoLvhSen7KLjrFU1YQ=\n"
}
For per-viewer concurrent stream limits, additional properties are returned, as detailed in Enforcing PerViewer Limits on Concurrent Streams.
PLAYER API REFERENCE | PLAYER AUTHORIZATION API | 41
FLASH-BASED PLAYER ERROR MESSAGES
Error messages are displayed to the video viewer or audio listener during playback. Errors can be
categorized as general errors, Flash-based errors and Pay-Per-View errors, which are prefixed with a PPV.
These error messages pertain to both V2 and V3 of the Flash player.
Error
Message Displayed to User
ACCOUNT_DISABLED
Account has been disabled.
ADOBE_PASS_ASSET_NOT_AUTHENTICATED
This asset is not authenticated by adobe pass
ADOBE_PASS_LIBARY_NOT_DEFINED Please include Adobe Pass Javascript Library
ADOBE_PASS_LIBARY_NOT_DEFINED Please include Adobe Pass Javascript Library
ADOBE_PASS_REQUIRE_JAVASCRIPT Please enable Javascript for your embed.
ADOBE_PASS_USER_NOT_AUTHORIZEDPlease login into your MVPD account!
Video no longer available
AFTER_FLIGHT_TIME
API_DYNAMIC_AD_SET_IS_NOT_ENABLED_FOR_PROVIDER
The dynamic ad sets feature is not enabled for this provider OR
Invalid API Usage.
API_EXPIRATION_IN_PAST
Expiration time must be ahead of current time OR Invalid API
Usage.
API_EXPIRATION_NOT_IN_WHOLE_HOURS
Expiration time must be rounded to the nearest hour OR Invalid
API Usage.
API_EXPIRATION_TOO_FAR_IN_FUTURE
Expiration time can be no more than {0} hours later than current
GMT time OR Invalid API Usage.
API_INVALID_DYNAMIC_AD_SET_ASSIGNMENT
The specified ad set code does not belong to the provider OR
Invalid API Usage.
API_INVALID_DYNAMIC_AD_SET_CODE
The specified ad set code is invalid OR Invalid API Usage.
API_STANDALONE_AD_SET_IS_EMPTYThe specified ad set does not have any instream ads. OR Invalid
API Usage.
Error generating player response.
BAD_RESPONSE
BAD_SECURE_STREAMING_RESPONSE Malformed streaming token.
BEFORE_FLIGHT_TIME
Available in {0} OR Video available soon
CANNOT_CONTACT_SAS
Cannot contact authorization server.
CANNOT_CONTACT_SERVER
Please check back later.
CANNOT_DOWNLOAD_THIRD_PARTY_MODULE
Problem downloading the third-party module {0}.
CANNOT_FETCH_PAY_PER_VIEW_STATUS
There was an error requesting the payment status.
CANNOT_FETCH_SECURE_STREAMING_TOKEN
Cannot initialize the stream securely.
CANNOT_PARSE_PAY_PER_VIEW_STATUS_RESPONSE
Bad payment status.
CANNOT_RETRIEVE_DOMAIN
Browser failed to report authentication info. Please make sure
that JavaScript is enabled.
CANNOT_SECURELY_STREAM_VIDEO
This video cannot be played securely.
CONTENT_OVER_CAP
This content has been disabled by the provider.
PLAYER API REFERENCE | FLASH-BASED PLAYER ERROR MESSAGES | 42
Error
Message Displayed to User
CONTENT_UNAVAILABLE
Content Unavailable.
CORRUPTED_NETSTREAM
Flash settings prohibit playing video.
DYNAMIC_AD_SET_IS_NOT_ENABLED_FOR_PROVIDER
The dynamic ad sets feature is not enabled for this provider.
EMPTY_CHANNEL
This channel is empty.
EMPTY_CHANNEL_SET
This channel set is empty.
EXPIRATION_IN_PAST
Expiration time must be ahead of current time.
EXPIRATION_NOT_IN_WHOLE_HOURS Expiration time must be rounded to the nearest hour.
EXPIRATION_TOO_FAR_IN_FUTURE
Expiration time can be no more than {0} hours later than current
GMT time.
FLASH_ACCESS_LICENSE_UNAVAILABLE
License server unavailable at this time. Please try again later.
INTERNAL_ERROR
Internal player error occurred.
INTERNAL_PLAYER_ERROR
Error generating player response.
INVALID_API_USAGE
Invalid API Usage.
INVALID_CONTENT
Invalid content specified.
INVALID_CONTENT_SEGMENT
Invalid content segment (not localized)
INVALID_DYNAMIC_AD_SET_ASSIGNMENT
The specified ad set code does not belong to the provider.
INVALID_DYNAMIC_AD_SET_CODE
The specified ad set code is invalid.
INVALID_DYNAMIC_CHANNEL_USAGE Invalid dynamic channel usage.
INVALID_FLASH_ACCESS_LICENSE
Content not authorized. Invalid license. NOTE: This first string
is NOT localized and currently unused.
INVALID_RESPONSE
Invalid server response.
INVALID_SAS_RESPONSE
Invalid authorization response.
INVALID_SERVER_RESPONSE
Invalid server response.
INVALID_TOKEN
You don't have a valid token to view this video.
LIVE_STREAM_FILE_NOT_FOUND
The requested bitrate for this live stream is not currently
available.
LIVE_STREAM_FINISHED
This live stream is over.
LIVE_STREAM_FINISHED_TITLE
Stream Over.
LIVE_STREAM_UNAVAILABLE
Live Stream is off-air.
LIVE_STREAM_UNAVAILABLE_AFTER_PAYMENT
Please come back later to watch your purchased content.
LONG_BEFORE_FLIGHT_TIME
Video available soon
LOST_CONNECTION
Lost Connection.
NO_CONNECTION_PLAYER
Problem downloading the player. Please check your Internet
connection.
NO_CONNECTION_VIDEO
Problem downloading the video. Please check your Internet
connection.
NO_MOVIE_SPECIFIED_FOR_LABELS No movie specified for labels.
PLAYER API REFERENCE | FLASH-BASED PLAYER ERROR MESSAGES | 43
Error
Message Displayed to User
NO_QUERY_STRING_CODE
No code specified in embed.
PPV_ALREADY_PAID
You have already paid for this {0}. Your account has not been
charged.
PPV_CANCEL_PURCHASE
Cancel purchase.
PPV_CHANGE_MIND
Change your mind?
PPV_CHECKOUT_ERROR
There was an error during the checkout process.
PPV_DEFAULT_MESSAGE
This {0} cannot play anymore.
PPV_IS_EXPIRED
This {0} has expired. To continue watching, please buy it again.
PPV_NEEDS_TO_PAY
To keep watching this {0}, buy it now for:
PPV_NEEDS_TO_PAY_AT_START
To start watching this {0}, buy it now for:
PPV_NO_MORE_PLAYS_TODAY
This {0} has reached the maximum amount of plays for today. To
continue watching, please buy it again.
PPV_NO_MORE_PLAYS_TOTAL
This {0} has reached the maximum amount of plays. To continue
watching, please buy it again.
PPV_PREPURCHASE
{0} has not started yet. You can pre-purchase it now for:
PPV_PREPURCHASE_THANK_YOU
Thank you for your purchase. Please come back later to watch
this {0}.
PPV_PURCHASE_IN_PROGRESS
Purchase in progress...
PPV_SUPPORT_MESSAGE
For assistance you can visit the <u><a target '_blank' href ' http://
support.ooyala.com/t5/Ooyala-Support-Center/Why-can-I-notview-the-video-I-purchased/ta-p/975 '>support page</a></u> or
try to repurchase the {0}.
PPV_VIEW_UNAUTHORIZED
This {0} cannot be authorized to play.
PPV_WATCH_VIDEO
Watch video.
PROCESSING_CONTENT
The requested content is being processed.
PROXY_CLASSES_DONT_WORK
Proxy classes aren't properly initialized in the root SWF. Check
the Ooyala Player API documentation for the correct way to
initialize proxy classes when you embed the Ooyala Player
REMOVED_CONTENT
The requested content has been removed.
SAS_AUTH_FAILED
Cannot authorize video.
SAS_HEARTBEAT_FAILED
Authorization failed
SAS_TOO_MANY_ACTIVE_STREAMS
Too many open videos
SECURE_STREAMING_AUTH_FAILED
Authorization to play this video has failed.
STANDALONE_AD_SET_IS_EMPTY
The specified ad set does not have any instream ads.
STREAM_FILE_NOT_FOUND
The requested bitrate is not currently available.
TOKEN_EXPIRED
Your authentication token expired. Try reloading your page.
UNAUTHORIZED_DEVICE
This video is not authorized for playback on this device.
UNAUTHORIZED_DOMAIN
The video is not authorized for this domain ({0}). Please contact
the administrator.
PLAYER API REFERENCE | FLASH-BASED PLAYER ERROR MESSAGES | 44
Error
Message Displayed to User
UNAUTHORIZED_DYNAMIC_CHANNEL
You are not authorized to see the content. Please contact the
administrator.
UNAUTHORIZED_LOCATION
The video is not authorized for your location ({0}).
UNAUTHORIZED_PARENT
Sorry, there are no videos to view in this channel.
UNAUTHORIZED_PAY_PER_VIEW
Pay Per View Unavailable.
UNAUTHORIZED_USAGE
Unauthorized usage.
UNKNOWN_ACCOUNT
Unknown account specified.
UNKNOWN_CONTENT
Unknown content specified.
UNKNOWN_DOMAIN
To view this content you have to enable JavaScript in your
browser.
UNKNOWN_SAS_CONTENT
Unknown content specified.
VERSION
Flash player upgrade needed.
VERSION_NOT_SUPPORTED
Flash player {0} or above is required.
VERSION_UPGRADE_LINK
http://www.adobe.com/products/flashplayer/ .
VERSION_UPGRADE_TEXT
Click here to upgrade.
PLAYER API REFERENCE | FLASH-BASED PLAYER ERROR MESSAGES | 45