MaxxSports and are now one

By welcoming TSRN to our family, our video content extends from NHL hockey to baseball, football and basketball. TSRN’s camera configuration is different though. Our cameras are permanent installed, and therefore on all the time, while TSRN cameras are only set up during game time. Here are the two integration challenges, and enhancements.

  1. For live streaming, there have to be a mechanism for us to know the cameras are ready.
  2. For DVR, we used to assume the video from camera is continuous, but this is no longer true for TSRN. We have to some how handles gaps in video.
  3. Video advertising. Meridix was handling ads for TSRN; now it becomes our own responsibility.
  4. Audio. Our audio was not well synchronized with video. For TSRN, this has to be fixed.
  5. Live subtitles to show score and commentator’s input. Subtitles for live is not as straightforward as VOD.
  6. Commentator has control to switch camera so that viewers can watch from different angle.
  7. AI/AR based advertising. This is two folds:
    1. Find a proper location to put the ad, e.g. a bench on the side.
    2. Render a 3D movable ad object, e.g. a airplane pulling a banner above the baseball field.



Subtitle Live Streaming

Demo page:  Mouse over the player, click the CC button to choose language.
Even though this video is pre-recorded, the way the components are setup is well-suited for live subtitles.
With regular WebVTT, .vtt file name is in “tracks:”, a property of the player, parallel to “file:” property, and it’s loaded during player initialization. Therefore it only supports VOD subtitles.
With Segmented WebVtt, newly generated .vtt files are appended to the subtitle .m3u8 files, just like new .ts files are appended to video .m3u8 files. Subtitle .m3u8 is EXT-X-MEDIA of the master playlist, and therefore subtitle playlist are refreshed along with video playlist to render live video and subtitle.


Ads in Video

Video contains ads, which are interactive, skippable, and hooked to DoubleClick for payment process.

Tools needed:

  1. Player: enterprise version of JW Player, which in turn calls Google IMA SDK.
  2. An account from Google DFP, which examine our domain name and web site content for eligibility.


  1. VAST: Video Ad Serving Template
  2. Google IMA SDK: Google Interactive Media Ads SDK, an implementation of VAST specification.
  3. Google DFP: Google DoubleClick For Publishers:

The URL from DFP becomes the value of “advertising” property of JW Player, parallel to the “file” property for video. This URL returns a VAST document in XML format with info such as MediaFiles and VideoClicks. Here is quick demo, which play ads before my gym video.  (sometimes a F5 refersh is needed)

Background Replacement

It’s much appreciated that James Gambrell from Supponor visited our office May 24th 2018.
I demostrated our background virtualization prototype, which is to monetize video content by replacing part of the background with ads in the stadium.
As seen in the demo, the overlay is constrained to the screen that I was pulling.
Here is what was happening during the demo: in real time, raw video comes out of the GeniCam camera -> the screen is replaced with ads overlay -> raw video encoded with H.264 -> video to our streaming server on AWS -> repackaging to HLS -> video travel from AWS to users -> video played by VLC on Windows.
While Supponor enhances video for TV broadcasters, we focuses more on OTT video processing and delivery.