Results

production data collected on 05.05.2015

Results Filter
Control Current Sequential
page-start to video-start --- --- ---
page-start to video-init --- --- ---
page-start to script-start --- --- ---
script-start to video-init --- --- ---
video-init to video-start --- --- ---

Platform Video

video-head

An overview of collected data used to identify issues affecting video performance. Download this application as a package and run locally.

Credit Justin Reade, Hector Reyes, Chris DePauw.


Setup

Define video and advertisement values, then 'play' or visit urls where same content is seen in foxsports.com. Similar to the neodigital reference player, but with added control to define interactive unit and video id.

NEO params
Release URL

How

Scripting added to the application is used to measure important video time sequences. 'Yields a consistent data for various form factors, environments, browsers, etc...

Added to document head:

<head>
  <script type="text/javascript">
    var pagestartms = Date.now();
  </script>

Added at bottom of document, above our app.js script element:

  <script type="text/javascript">
    var scriptstartms = Date.now();
  </script>
  <script src="${path:getEx...app.full.js...</script>

Added to occur at 'platformPlayer' init method:

var videoinitms = Date.now();

Added to occur at 'platformPlayer' init completion where video play starts:

var videostartms = Date.now();

Data is printed to console in JSON format, for example:

{
  "browserName" : "Chrome",
  "browserFullVersion" : "41.0.2272.89",
  "browserMajorVersion" : "41",
  "navigatorappName" : "Netscape",
  "navigatoruserAgent" : "Mozilla/5.0 (Maci ... ",
  "whArr" : [1750, 376],
  "fullURL" : "http%3A%2F%2Fchris.foxsports ... ",
  "releaseURL" : "http%3A%2F%2Flink.theplat ... ",
  "isCached" : true,
  "strategy" : "current",
  "err" : "null",
  "page-load to video-start" : 33.34,
    "page-load to video-init"   : 26.57,
      "page-load to script-start"  : 25.64,
      "script-start to video-init" : 0.93,
    "video-init to video-start" : 6.77
}

Experiment

We scripted a new initialization strategy and tested it alongside the current strategy.

  1. Current strategy initializes many definitions simultanaeously. Before platformPlayer is 'done', stacks generated by GlobalNavigation, Analytics and others appear on the event loop in uncontrolled ways.

    viewfoxbox.init();
    Social.init();
    ModuleLoader.init();
      // ModuleLoader will 'init' more modules.
      // loops an array of modules calling 'init' on each.
    adManager.init();
    platformPlayer.init();
    Analytitics.init();
    Transitions.init();
    autocomplete.init();
    GlobalNavigqtion.init();
    InjectorScriptRunner.init();
    

    many non-video-related requests are made during video init video-head

  2. Sequential strategy initializes definitions in sequence. Until platformPlayer is 'done' (or expires) no other initialization begins.

    var startms = Date.now();
    platformPlayer.init(opts, function (err, res) {
      if (err) {
        console.warn('error loading player');
      } else {
        console.log('finish loading player', Date.now() - startms);
      }
      loadnext();
    }, 1000); // expire, 1 second
    

    mostly video-related requests are made using a sequential strategy video-head

  3. Local strategy initializes a the video to this page, which doesn't have much else.

  4. ¿Auto strategy? use the packaged version of this application to run many automated tests using a headless browser.


Results

Filters below are applied to this collection of JSON data.

Results Filter
Control Current Sequential
page-start to video-start --- --- ---
page-start to video-init --- --- ---
page-start to script-start --- --- ---
script-start to video-init --- --- ---
video-init to video-start --- --- ---
bumblehead.com