js视频播放器

js视频播放器

HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta charset="UTF-8">
    <meta name="Keywords" content="">
    <meta name="description" content="">
    <title></title>
    <!-- Chang URLs to wherever Video.js files will be hosted -->
    <link href="css/video-js.css" rel="stylesheet" type="text/css">
    <link href="css/product-detailzc.css" rel="stylesheet" type="text/css">
    <!-- video.js must be in the <head> for older IEs to work. -->
    <script type="text/javascript" src="js/video.js"></script>

</head>

<body>

<div class="p-detail_con">
    <div class="p-detail_con2">
        <div class="p-detail_con2l">
            <div style="width:675px;height:445px;margin:30px auto">
                <video id="example_video_1" class="video-js vjs-default-skin" controls preload="none" width="640" height="445" poster="images/oceans-clip.png" data-setup="{}">
                    <source src="images/n930.mp4" type='video/mp4' />
                    <track kind="captions" src="demo.captions.vtt" srclang="en" label="English"></track>
                    <!-- Tracks need an ending tag thanks to IE9 -->
                    <track kind="subtitles" src="demo.captions.vtt" srclang="en" label="English"></track>
                    <!-- Tracks need an ending tag thanks to IE9 -->
                </video>
            </div>
        </div>
    </div>
</div>

</body>
</html>
css/video-js.css
/*!
Video.js Default Styles (http://videojs.com)
Version 4.4.0
Create your own skin at http://designer.videojs.com
*/
/* SKIN
================================================================================
The main class name for all skin-specific styles. To make your own skin,
replace all occurances of 'vjs-default-skin' with a new name. Then add your new
skin name to your video tag instead of the default skin.
e.g. <video class="video-js my-skin-name">
*/
.vjs-default-skin {
  color: #cccccc;
}
/* Custom Icon Font
--------------------------------------------------------------------------------
The control icons are from a custom font. Each icon corresponds to a character
(e.g. "\e001"). Font icons allow for easy scaling and coloring of icons.
*/
@font-face {
  font-family: 'VideoJS';
  src: url('../font/vjs.eot');
  src: url('../font/vjs.eot?#iefix') format('embedded-opentype'), url('../font/vjs.woff') format('woff'), url('../font/vjs.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
}
/* Base UI Component Classes
--------------------------------------------------------------------------------
*/
/* Slider - used for Volume bar and Seek bar */
.vjs-default-skin .vjs-slider {
  /* Replace browser focus hightlight with handle highlight */
  outline: 0;
  position: relative;
  cursor: pointer;
  padding: 0;
  /* background-color-with-alpha */
  background-color: #333333;
  background-color: rgba(51, 51, 51, 0.9);
}
.vjs-default-skin .vjs-slider:focus {
  /* box-shadow */
  -webkit-box-shadow: 0 0 2em #ffffff;
  -moz-box-shadow: 0 0 2em #ffffff;
  box-shadow: 0 0 2em #ffffff;
}
.vjs-default-skin .vjs-slider-handle {
  position: absolute;
  /* Needed for IE6 */
  left: 0;
  top: 0;
}
.vjs-default-skin .vjs-slider-handle:before {
  content: "\e009";
  font-family: VideoJS;
  font-size: 1em;
  line-height: 1;
  text-align: center;
  text-shadow: 0em 0em 1em #fff;
  position: absolute;
  top: 0;
  left: 0;
  /* Rotate the square icon to make a diamond */
  /* transform */
}
/* Control Bar
--------------------------------------------------------------------------------
The default control bar that is a container for most of the controls.
*/
.vjs-default-skin .vjs-control-bar {
  /* Start hidden */
  display: none;
  position: absolute;
  /* Place control bar at the bottom of the player box/video.
     If you want more margin below the control bar, add more height. */
  bottom: 0;
  /* Use left/right to stretch to 100% width of player div */
  left: 0;
  right: 0;
  /* Height includes any margin you want above or below control items */
  height: 3.0em;
  /* background-color-with-alpha */
  background-color: #07141e;
  background-color: rgba(7, 20, 30, 0.7);
}
/* Show the control bar only once the video has started playing */
.vjs-default-skin.vjs-has-started .vjs-control-bar {
  display: block;
  /* Visibility needed to make sure things hide in older browsers too. */

  visibility: visible;
  opacity: 1;
  /* transition */
  -webkit-transition: visibility 0.1s, opacity 0.1s;
  -moz-transition: visibility 0.1s, opacity 0.1s;
  -o-transition: visibility 0.1s, opacity 0.1s;
  transition: visibility 0.1s, opacity 0.1s;
}
/* Hide the control bar when the video is playing and the user is inactive  */
.vjs-default-skin.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar {
  display: block;
  visibility: hidden;
  opacity: 0;
  /* transition */
  -webkit-transition: visibility 1s, opacity 1s;
  -moz-transition: visibility 1s, opacity 1s;
  -o-transition: visibility 1s, opacity 1s;
  transition: visibility 1s, opacity 1s;
}
.vjs-default-skin.vjs-controls-disabled .vjs-control-bar {
  display: none;
}
.vjs-default-skin.vjs-using-native-controls .vjs-control-bar {
  display: none;
}
/* IE8 is flakey with fonts, and you have to change the actual content to force
fonts to show/hide properly.
  - "\9" IE8 hack didn't work for this
  - Found in XP IE8 from http://modern.ie. Does not show up in "IE8 mode" in IE9
*/
@media \0screen {
  .vjs-default-skin.vjs-user-inactive.vjs-playing .vjs-control-bar :before {
    content: "";
  }
}
/* General styles for individual controls. */
.vjs-default-skin .vjs-control {
  outline: none;
  position: relative;
  float: left;
  text-align: center;
  margin: 0;
  padding: 0;
  height: 3.0em;
  width: 4em;
}
/* FontAwsome button icons */
.vjs-default-skin .vjs-control:before {
  font-family: VideoJS;
  font-size: 1.5em;
  line-height: 2;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  text-align: center;
  text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5);
}
/* Replacement for focus outline */
.vjs-default-skin .vjs-control:focus:before,
.vjs-default-skin .vjs-control:hover:before {
  text-shadow: 0em 0em 1em #ffffff;
}
.vjs-default-skin .vjs-control:focus {
  /*  outline: 0; */
  /* keyboard-only users cannot see the focus on several of the UI elements when
  this is set to 0 */

}
/* Hide control text visually, but have it available for screenreaders */
.vjs-default-skin .vjs-control-text {
  /* hide-visually */
  border: 0;
  clip: rect(0 0 0 0);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
}
/* Play/Pause
--------------------------------------------------------------------------------
*/
.vjs-default-skin .vjs-play-control {
  width: 5em;
  cursor: pointer;
}
.vjs-default-skin .vjs-play-control:before {
  content: "\e001";
}
.vjs-default-skin.vjs-playing .vjs-play-control:before {
  content: "\e002";
}
/* Volume/Mute
-------------------------------------------------------------------------------- */
.vjs-default-skin .vjs-mute-control,
.vjs-default-skin .vjs-volume-menu-button {
  cursor: pointer;
  float: right;
}
.vjs-default-skin .vjs-mute-control:before,
.vjs-default-skin .vjs-volume-menu-button:before {
  content: "\e006";
}
.vjs-default-skin .vjs-mute-control.vjs-vol-0:before,
.vjs-default-skin .vjs-volume-menu-button.vjs-vol-0:before {
  content: "\e003";
}
.vjs-default-skin .vjs-mute-control.vjs-vol-1:before,
.vjs-default-skin .vjs-volume-menu-button.vjs-vol-1:before {
  content: "\e004";
}
.vjs-default-skin .vjs-mute-control.vjs-vol-2:before,
.vjs-default-skin .vjs-volume-menu-button.vjs-vol-2:before {
  content: "\e005";
}
.vjs-default-skin .vjs-volume-control {
  width: 5em;
  float: right;
}
.vjs-default-skin .vjs-volume-bar {
  width: 5em;
  height: 0.6em;
  margin: 1.1em auto 0;
}
.vjs-default-skin .vjs-volume-menu-button .vjs-menu-content {
  height: 2.9em;
}
.vjs-default-skin .vjs-volume-level {
  position: absolute;
  top: 0;
  left: 0;
  height: 0.5em;
  background: #66a8cc url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAP0lEQVQIHWWMAQoAIAgDR/QJ/Ub//04+w7ZICBwcOg5FZi5iBB82AGzixEglJrd4TVK5XUJpskSTEvpdFzX9AB2pGziSQcvAAAAAAElFTkSuQmCC) -50% 0 repeat;
}
.vjs-default-skin .vjs-volume-bar .vjs-volume-handle {
  width: 0.5em;
  height: 0.5em;
}
.vjs-default-skin .vjs-volume-handle:before {
  font-size: 0.9em;
  top: -3px;
  left: -0.2em;
  width: 1em;
  height: 1em;
}
.vjs-default-skin .vjs-volume-menu-button .vjs-menu .vjs-menu-content {
  width: 6em;
  left: -4em;
}
/* Progress
--------------------------------------------------------------------------------
*/
.vjs-default-skin .vjs-progress-control {
  position: absolute;
  left: 0;
  right: 0;
  width: auto;
  font-size: 0.3em;
  height: 1em;
  /* Set above the rest of the controls. */
  top: -1em;
  /* Shrink the bar slower than it grows. */
  /* transition */
  -webkit-transition: all 0.4s;
  -moz-transition: all 0.4s;
  -o-transition: all 0.4s;
  transition: all 0.4s;
}
/* On hover, make the progress bar grow to something that's more clickable.
    This simply changes the overall font for the progress bar, and this
    updates both the em-based widths and heights, as wells as the icon font */
.vjs-default-skin:hover .vjs-progress-control {
  font-size: .9em;
  /* Even though we're not changing the top/height, we need to include them in
      the transition so they're handled correctly. */

  /* transition */
  -webkit-transition: all 0.2s;
  -moz-transition: all 0.2s;
  -o-transition: all 0.2s;
  transition: all 0.2s;
}
/* Box containing play and load progresses. Also acts as seek scrubber. */
.vjs-default-skin .vjs-progress-holder {
  height: 100%;
}
/* Progress Bars */
.vjs-default-skin .vjs-progress-holder .vjs-play-progress,
.vjs-default-skin .vjs-progress-holder .vjs-load-progress {
  position: absolute;
  display: block;
  height: 100%;
  margin: 0;
  padding: 0;
  /* Needed for IE6 */
  left: 0;
  top: 0;
}
.vjs-default-skin .vjs-play-progress {
  /*
    Using a data URI to create the white diagonal lines with a transparent
      background. Surprisingly works in IE8.
      Created using http://www.patternify.com
    Changing the first color value will change the bar color.
    Also using a paralax effect to make the lines move backwards.
      The -50% left position makes that happen.
  */

  background: #66a8cc url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAP0lEQVQIHWWMAQoAIAgDR/QJ/Ub//04+w7ZICBwcOg5FZi5iBB82AGzixEglJrd4TVK5XUJpskSTEvpdFzX9AB2pGziSQcvAAAAAAElFTkSuQmCC) -50% 0 repeat;
}
.vjs-default-skin .vjs-load-progress {
  background: #646464 /* IE8- Fallback */;
  background: rgba(255, 255, 255, 0.4);
}
.vjs-default-skin .vjs-seek-handle {
  width: 1.5em;
  height: 100%;
}
.vjs-default-skin .vjs-seek-handle:before {
  padding-top: 0.1em /* Minor adjustment */;
}
/* Time Display
--------------------------------------------------------------------------------
*/
.vjs-default-skin .vjs-time-controls {
  font-size: 1em;
  /* Align vertically by making the line height the same as the control bar */
  line-height: 3em;
}
.vjs-default-skin .vjs-current-time {
  float: left;
}
.vjs-default-skin .vjs-duration {
  float: left;
}
/* Remaining time is in the HTML, but not included in default design */
.vjs-default-skin .vjs-remaining-time {
  display: none;
  float: left;
}
.vjs-time-divider {
  float: left;
  line-height: 3em;
}
/* Fullscreen
--------------------------------------------------------------------------------
*/
.vjs-default-skin .vjs-fullscreen-control {
  width: 3.8em;
  cursor: pointer;
  float: right;
}
.vjs-default-skin .vjs-fullscreen-control:before {
  content: "\e000";
}
/* Switch to the exit icon when the player is in fullscreen */
.vjs-default-skin.vjs-fullscreen .vjs-fullscreen-control:before {
  content: "\e00b";
}
/* Big Play Button (play button at start)
--------------------------------------------------------------------------------
Positioning of the play button in the center or other corners can be done more
easily in the skin designer. http://designer.videojs.com/
*/
.vjs-default-skin .vjs-big-play-button {
  left: 50%;
  top: 50%;
  font-size: 3em;
  display: block;
  margin-left: -35px;
  margin-top: -35px;
  z-index: 2;
  position: absolute;
  width:70px;
  height:70px;
  text-align: center;
  vertical-align: middle;
  cursor: pointer;
  opacity: 1;
  /* Need a slightly gray bg so it can be seen on black backgrounds */
  /* background-color-with-alpha */
  background-color: #07141e;
  background-color: rgba(7, 20, 30, 0.7);
  border: 0.1em solid #3b4249;
  /* border-radius */
  -webkit-border-radius:50%;
  -moz-border-radius:50%;
  border-radius:50%;
  /* box-shadow */
  -webkit-box-shadow: 0px 0px 1em rgba(255, 255, 255, 0.25);
  -moz-box-shadow: 0px 0px 1em rgba(255, 255, 255, 0.25);
  box-shadow: 0px 0px 1em rgba(255, 255, 255, 0.25);
  /* transition */
  -webkit-transition: all 0.4s;
  -moz-transition: all 0.4s;
  -o-transition: all 0.4s;
  transition: all 0.4s;
}
/* Optionally center */
.vjs-default-skin.vjs-big-play-centered .vjs-big-play-button {
  /* Center it horizontally */
  left: 50%;
  margin-left: -2.1em;
  /* Center it vertically */
  top: 50%;
  margin-top: -1.4000000000000001em;
}
/* Hide if controls are disabled */
.vjs-default-skin.vjs-controls-disabled .vjs-big-play-button {
  display: none;
}
/* Hide when video starts playing */
.vjs-default-skin.vjs-has-started .vjs-big-play-button {
  display: none;
}
/* Hide on mobile devices. Remove when we stop using native controls
    by default on mobile  */
.vjs-default-skin.vjs-using-native-controls .vjs-big-play-button {
  display: none;
}
.vjs-default-skin:hover .vjs-big-play-button,
.vjs-default-skin .vjs-big-play-button:focus {
  outline: 0;
  border-color: #fff;
  /* IE8 needs a non-glow hover state */
  background-color: #505050;
  background-color: rgba(50, 50, 50, 0.75);
  /* box-shadow */
  -webkit-box-shadow: 0 0 3em #ffffff;
  -moz-box-shadow: 0 0 3em #ffffff;
  box-shadow: 0 0 3em #ffffff;
  /* transition */
  -webkit-transition: all 0s;
  -moz-transition: all 0s;
  -o-transition: all 0s;
  transition: all 0s;
}
.vjs-default-skin .vjs-big-play-button:before {
  content: "\e001";
  font-family: VideoJS;
  line-height: 74px;
  text-shadow: 0.05em 0.05em 0.1em #000;
  text-align: center /* Needed for IE8 */;
  position: absolute;
  left: 2px;
  width: 100%;
  height: 100%;
}
/* Loading Spinner
--------------------------------------------------------------------------------
*/
.vjs-loading-spinner {
  display: none;
  position: absolute;
  top: 50%;
  left: 50%;
  font-size: 4em;
  line-height: 1;
  width: 1em;
  height: 1em;
  margin-left: -0.5em;
  margin-top: -0.5em;
  opacity: 0.75;
  /* animation */
  -webkit-animation: spin 1.5s infinite linear;
  -moz-animation: spin 1.5s infinite linear;
  -o-animation: spin 1.5s infinite linear;
  animation: spin 1.5s infinite linear;
}
.vjs-default-skin .vjs-loading-spinner:before {
  content: "\e01e";
  font-family: VideoJS;
  position: absolute;
  top: 0;
  left: 0;
  width: 1em;
  height: 1em;
  text-align: center;
  text-shadow: 0em 0em 0.1em #000;
}
@-moz-keyframes spin {
  0% {
    -moz-transform: rotate(0deg);
  }
  100% {
    -moz-transform: rotate(359deg);
  }
}
@-webkit-keyframes spin {
  0% {
    -webkit-transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
  }
}
@-o-keyframes spin {
  0% {
    -o-transform: rotate(0deg);
  }
  100% {
    -o-transform: rotate(359deg);
  }
}
@keyframes spin {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(359deg);
  }
}
/* Menu Buttons (Captions/Subtitles/etc.)
--------------------------------------------------------------------------------
*/
.vjs-default-skin .vjs-menu-button {
  float: right;
  cursor: pointer;
}
.vjs-default-skin .vjs-menu {
  display: none;
  position: absolute;
  bottom: 0;
  left: 0em;
  /* (Width of vjs-menu - width of button) / 2 */

  width: 0em;
  height: 0em;
  margin-bottom: 3em;
  border-left: 2em solid transparent;
  border-right: 2em solid transparent;
  border-top: 1.55em solid #000000;
  /* Same width top as ul bottom */

  border-top-color: rgba(7, 40, 50, 0.5);
  /* Same as ul background */

}
/* Button Pop-up Menu */
.vjs-default-skin .vjs-menu-button .vjs-menu .vjs-menu-content {
  display: block;
  padding: 0;
  margin: 0;
  position: absolute;
  width: 10em;
  bottom: 1.5em;
  /* Same bottom as vjs-menu border-top */

  max-height: 15em;
  overflow: auto;
  left: -5em;
  /* Width of menu - width of button / 2 */

  /* background-color-with-alpha */
  background-color: #07141e;
  background-color: rgba(7, 20, 30, 0.7);
  /* box-shadow */
  -webkit-box-shadow: -0.2em -0.2em 0.3em rgba(255, 255, 255, 0.2);
  -moz-box-shadow: -0.2em -0.2em 0.3em rgba(255, 255, 255, 0.2);
  box-shadow: -0.2em -0.2em 0.3em rgba(255, 255, 255, 0.2);
}
.vjs-default-skin .vjs-menu-button:hover .vjs-menu {
  display: block;
}
.vjs-default-skin .vjs-menu-button ul li {
  list-style: none;
  margin: 0;
  padding: 0.3em 0 0.3em 0;
  line-height: 1.4em;
  font-size: 1.2em;
  text-align: center;
  text-transform: lowercase;
}
.vjs-default-skin .vjs-menu-button ul li.vjs-selected {
  background-color: #000;
}
.vjs-default-skin .vjs-menu-button ul li:focus,
.vjs-default-skin .vjs-menu-button ul li:hover,
.vjs-default-skin .vjs-menu-button ul li.vjs-selected:focus,
.vjs-default-skin .vjs-menu-button ul li.vjs-selected:hover {
  outline: 0;
  color: #111;
  /* background-color-with-alpha */
  background-color: #ffffff;
  background-color: rgba(255, 255, 255, 0.75);
  /* box-shadow */
  -webkit-box-shadow: 0 0 1em #ffffff;
  -moz-box-shadow: 0 0 1em #ffffff;
  box-shadow: 0 0 1em #ffffff;
}
.vjs-default-skin .vjs-menu-button ul li.vjs-menu-title {
  text-align: center;
  text-transform: uppercase;
  font-size: 1em;
  line-height: 2em;
  padding: 0;
  margin: 0 0 0.3em 0;
  font-weight: bold;
  cursor: default;
}
/* Subtitles Button */
.vjs-default-skin .vjs-subtitles-button:before {
  content: "\e00c";
}
/* Captions Button */
.vjs-default-skin .vjs-captions-button:before {
  content: "\e008";
}
/* Replacement for focus outline */
.vjs-default-skin .vjs-captions-button:focus .vjs-control-content:before,
.vjs-default-skin .vjs-captions-button:hover .vjs-control-content:before {
  /* box-shadow */
  -webkit-box-shadow: 0 0 1em #ffffff;
  -moz-box-shadow: 0 0 1em #ffffff;
  box-shadow: 0 0 1em #ffffff;
}
/*
REQUIRED STYLES (be careful overriding)
================================================================================
When loading the player, the video tag is replaced with a DIV,
that will hold the video tag or object tag for other playback methods.
The div contains the video playback element (Flash or HTML5) and controls,
and sets the width and height of the video.

** If you want to add some kind of border/padding (e.g. a frame), or special
positioning, use another containing element. Otherwise you risk messing up
control positioning and full window mode. **
*/
.video-js {
  background-color: #000;
  position: relative;
  padding: 0;
  /* Start with 10px for base font size so other dimensions can be em based and
     easily calculable. */

  font-size: 10px;
  /* Allow poster to be vertially aligned. */

  vertical-align: middle;
  /*  display: table-cell; */
  /*This works in Safari but not Firefox.*/

  /* Provide some basic defaults for fonts */

  font-weight: normal;
  font-style: normal;
  /* Avoiding helvetica: issue #376 */

  font-family: Arial, sans-serif;
  /* Turn off user selection (text highlighting) by default.
     The majority of player components will not be text blocks.
     Text areas will need to turn user selection back on. */

  /* user-select */
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
/* Playback technology elements expand to the width/height of the containing div
    <video> or <object> */
.video-js .vjs-tech {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}
/* Fix for Firefox 9 fullscreen (only if it is enabled). Not needed when
   checking fullScreenEnabled. */
.video-js:-moz-full-screen {
  position: absolute;
}
/* Fullscreen Styles */
body.vjs-full-window {
  padding: 0;
  margin: 0;
  height: 100%;
  /* Fix for IE6 full-window. http://www.cssplay.co.uk/layouts/fixed.html */
  overflow-y: auto;
}
.video-js.vjs-fullscreen {
  position: fixed;
  overflow: hidden;
  z-index: 1000;
  left: 0;
  top: 0;
  bottom: 0;
  right: 0;
  width: 100% !important;
  height: 100% !important;
  /* IE6 full-window (underscore hack) */
  _position: absolute;
}
.video-js:-webkit-full-screen {
  width: 100% !important;
  height: 100% !important;
}
.video-js.vjs-fullscreen.vjs-user-inactive {
  cursor: none;
}
/* Poster Styles */
.vjs-poster {
  background-repeat: no-repeat;
  background-position: 50% 50%;
  background-size: contain;
  cursor: pointer;
  height: 100%;
  margin: 0;
  padding: 0;
  position: relative;
  width: 100%;
}
.vjs-poster img {
  display: block;
  margin: 0 auto;
  max-height: 100%;
  padding: 0;
  width: 100%;
}
/* Hide the poster when native controls are used otherwise it covers them */
.video-js.vjs-using-native-controls .vjs-poster {
  display: none;
}
/* Text Track Styles */
/* Overall track holder for both captions and subtitles */
.video-js .vjs-text-track-display {
  text-align: center;
  position: absolute;
  bottom: 4em;
  /* Leave padding on left and right */
  left: 1em;
  right: 1em;
}
/* Individual tracks */
.video-js .vjs-text-track {
  display: none;
  font-size: 1.4em;
  text-align: center;
  margin-bottom: 0.1em;
  /* Transparent black background, or fallback to all black (oldIE) */
  /* background-color-with-alpha */
  background-color: #000000;
  background-color: rgba(0, 0, 0, 0.5);
}
.video-js .vjs-subtitles {
  color: #ffffff /* Subtitles are white */;
}
.video-js .vjs-captions {
  color: #ffcc66 /* Captions are yellow */;
}
.vjs-tt-cue {
  display: block;
}
/* Hide disabled or unsupported controls */
.vjs-default-skin .vjs-hidden {
  display: none;
}
.vjs-lock-showing {
  display: block !important;
  opacity: 1;
  visibility: visible;
}
/* -----------------------------------------------------------------------------
The original source of this file lives at
https://github.com/videojs/video.js/blob/master/src/css/video-js.less */
js
/*! Video.js v4.4.0 Copyright 2014 Brightcove, Inc. https://github.com/videojs/video.js/blob/master/LICENSE */
(function () {
    var b = void 0, f = !0, h = null, l = !1;

    function m() {
        return function () {
        }
    }

    function p(a) {
        return function () {
            return this[a]
        }
    }

    function r(a) {
        return function () {
            return a
        }
    }

    var t;
    document.createElement("video");
    document.createElement("audio");
    document.createElement("track");
    function u(a, c, d) {
        if ("string" === typeof a) {
            0 === a.indexOf("#") && (a = a.slice(1));
            if (u.va[a])return u.va[a];
            a = u.u(a)
        }
        if (!a || !a.nodeName)throw new TypeError("The element or ID supplied is not valid. (videojs)");
        return a.player || new u.Player(a, c, d)
    }

    var videojs = u;
    window.Wd = window.Xd = u;
    u.Qb = "4.4";
    u.Dc = "https:" == document.location.protocol ? "https://" : "http://";
    u.options = {
        techOrder: ["html5", "flash"],
        html5: {},
        flash: {},
        width: 300,
        height: 150,
        defaultVolume: 0,
        children: {
            mediaLoader: {},
            posterImage: {},
            textTrackDisplay: {},
            loadingSpinner: {},
            bigPlayButton: {},
            controlBar: {}
        },
        notSupportedMessage: 'Sorry, no compatible source and playback technology were found for this video. Try using another browser like <a href="http://bit.ly/ccMUEC">Chrome</a> or download the latest <a href="http://adobe.ly/mwfN1">Adobe Flash Player</a>.'
    };
    "GENERATED_CDN_VSN" !== u.Qb && (videojs.options.flash.swf = u.Dc + "vjs.zencdn.net/" + u.Qb + "/video-js.swf");
    u.va = {};
    "function" === typeof define && define.amd ? define([], function () {
        return videojs
    }) : "object" === typeof exports && "object" === typeof module && (module.Ld = videojs);
    u.ka = u.CoreObject = m();
    u.ka.extend = function (a) {
        var c, d;
        a = a || {};
        c = a.init || a.h || this.prototype.init || this.prototype.h || m();
        d = function () {
            c.apply(this, arguments)
        };
        d.prototype = u.k.create(this.prototype);
        d.prototype.constructor = d;
        d.extend = u.ka.extend;
        d.create = u.ka.create;
        for (var e in a)a.hasOwnProperty(e) && (d.prototype[e] = a[e]);
        return d
    };
    u.ka.create = function () {
        var a = u.k.create(this.prototype);
        this.apply(a, arguments);
        return a
    };
    u.d = function (a, c, d) {
        var e = u.getData(a);
        e.z || (e.z = {});
        e.z[c] || (e.z[c] = []);
        d.s || (d.s = u.s++);
        e.z[c].push(d);
        e.U || (e.disabled = l, e.U = function (c) {
            if (!e.disabled) {
                c = u.hc(c);
                var d = e.z[c.type];
                if (d)for (var d = d.slice(0), k = 0, q = d.length; k < q && !c.oc(); k++)d[k].call(a, c)
            }
        });
        1 == e.z[c].length && (document.addEventListener ? a.addEventListener(c, e.U, l) : document.attachEvent && a.attachEvent("on" + c, e.U))
    };
    u.o = function (a, c, d) {
        if (u.lc(a)) {
            var e = u.getData(a);
            if (e.z)if (c) {
                var g = e.z[c];
                if (g) {
                    if (d) {
                        if (d.s)for (e = 0; e < g.length; e++)g[e].s === d.s && g.splice(e--, 1)
                    } else e.z[c] = [];
                    u.dc(a, c)
                }
            } else for (g in e.z)c = g, e.z[c] = [], u.dc(a, c)
        }
    };
    u.dc = function (a, c) {
        var d = u.getData(a);
        0 === d.z[c].length && (delete d.z[c], document.removeEventListener ? a.removeEventListener(c, d.U, l) : document.detachEvent && a.detachEvent("on" + c, d.U));
        u.Ab(d.z) && (delete d.z, delete d.U, delete d.disabled);
        u.Ab(d) && u.sc(a)
    };
    u.hc = function (a) {
        function c() {
            return f
        }

        function d() {
            return l
        }

        if (!a || !a.Bb) {
            var e = a || window.event;
            a = {};
            for (var g in e)"layerX" !== g && ("layerY" !== g && "keyboardEvent.keyLocation" !== g) && ("returnValue" == g && e.preventDefault || (a[g] = e[g]));
            a.target || (a.target = a.srcElement || document);
            a.relatedTarget = a.fromElement === a.target ? a.toElement : a.fromElement;
            a.preventDefault = function () {
                e.preventDefault && e.preventDefault();
                a.returnValue = l;
                a.zb = c
            };
            a.zb = d;
            a.stopPropagation = function () {
                e.stopPropagation && e.stopPropagation();
                a.cancelBubble = f;
                a.Bb = c
            };
            a.Bb = d;
            a.stopImmediatePropagation = function () {
                e.stopImmediatePropagation && e.stopImmediatePropagation();
                a.oc = c;
                a.stopPropagation()
            };
            a.oc = d;
            if (a.clientX != h) {
                g = document.documentElement;
                var j = document.body;
                a.pageX = a.clientX + (g && g.scrollLeft || j && j.scrollLeft || 0) - (g && g.clientLeft || j && j.clientLeft || 0);
                a.pageY = a.clientY + (g && g.scrollTop || j && j.scrollTop || 0) - (g && g.clientTop || j && j.clientTop || 0)
            }
            a.which = a.charCode || a.keyCode;
            a.button != h && (a.button = a.button & 1 ? 0 : a.button & 4 ? 1 : a.button & 2 ? 2 :
                0)
        }
        return a
    };
    u.j = function (a, c) {
        var d = u.lc(a) ? u.getData(a) : {}, e = a.parentNode || a.ownerDocument;
        "string" === typeof c && (c = {type: c, target: a});
        c = u.hc(c);
        d.U && d.U.call(a, c);
        if (e && !c.Bb() && c.bubbles !== l)u.j(e, c); else if (!e && !c.zb() && (d = u.getData(c.target), c.target[c.type])) {
            d.disabled = f;
            if ("function" === typeof c.target[c.type])c.target[c.type]();
            d.disabled = l
        }
        return !c.zb()
    };
    u.T = function (a, c, d) {
        function e() {
            u.o(a, c, e);
            d.apply(this, arguments)
        }

        e.s = d.s = d.s || u.s++;
        u.d(a, c, e)
    };
    var v = Object.prototype.hasOwnProperty;
    u.e = function (a, c) {
        var d, e;
        d = document.createElement(a || "div");
        for (e in c)v.call(c, e) && (-1 !== e.indexOf("aria-") || "role" == e ? d.setAttribute(e, c[e]) : d[e] = c[e]);
        return d
    };
    u.Y = function (a) {
        return a.charAt(0).toUpperCase() + a.slice(1)
    };
    u.k = {};
    u.k.create = Object.create || function (a) {
        function c() {
        }

        c.prototype = a;
        return new c
    };
    u.k.ra = function (a, c, d) {
        for (var e in a)v.call(a, e) && c.call(d || this, e, a[e])
    };
    u.k.B = function (a, c) {
        if (!c)return a;
        for (var d in c)v.call(c, d) && (a[d] = c[d]);
        return a
    };
    u.k.Vc = function (a, c) {
        var d, e, g;
        a = u.k.copy(a);
        for (d in c)v.call(c, d) && (e = a[d], g = c[d], a[d] = u.k.Ma(e) && u.k.Ma(g) ? u.k.Vc(e, g) : c[d]);
        return a
    };
    u.k.copy = function (a) {
        return u.k.B({}, a)
    };
    u.k.Ma = function (a) {
        return !!a && "object" === typeof a && "[object Object]" === a.toString() && a.constructor === Object
    };
    u.bind = function (a, c, d) {
        function e() {
            return c.apply(a, arguments)
        }

        c.s || (c.s = u.s++);
        e.s = d ? d + "_" + c.s : c.s;
        return e
    };
    u.pa = {};
    u.s = 1;
    u.expando = "vdata" + (new Date).getTime();
    u.getData = function (a) {
        var c = a[u.expando];
        c || (c = a[u.expando] = u.s++, u.pa[c] = {});
        return u.pa[c]
    };
    u.lc = function (a) {
        a = a[u.expando];
        return !(!a || u.Ab(u.pa[a]))
    };
    u.sc = function (a) {
        var c = a[u.expando];
        if (c) {
            delete u.pa[c];
            try {
                delete a[u.expando]
            } catch (d) {
                a.removeAttribute ? a.removeAttribute(u.expando) : a[u.expando] = h
            }
        }
    };
    u.Ab = function (a) {
        for (var c in a)if (a[c] !== h)return l;
        return f
    };
    u.n = function (a, c) {
        -1 == (" " + a.className + " ").indexOf(" " + c + " ") && (a.className = "" === a.className ? c : a.className + " " + c)
    };
    u.t = function (a, c) {
        var d, e;
        if (-1 != a.className.indexOf(c)) {
            d = a.className.split(" ");
            for (e = d.length - 1; 0 <= e; e--)d[e] === c && d.splice(e, 1);
            a.className = d.join(" ")
        }
    };
    u.ea = u.e("video");
    u.I = navigator.userAgent;
    u.Jc = /iPhone/i.test(u.I);
    u.Ic = /iPad/i.test(u.I);
    u.Kc = /iPod/i.test(u.I);
    u.Hc = u.Jc || u.Ic || u.Kc;
    var aa = u, w;
    var x = u.I.match(/OS (\d+)_/i);
    w = x && x[1] ? x[1] : b;
    aa.Hd = w;
    u.Gc = /Android/i.test(u.I);
    var ba = u, y;
    var z = u.I.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i), A, B;
    z ? (A = z[1] && parseFloat(z[1]), B = z[2] && parseFloat(z[2]), y = A && B ? parseFloat(z[1] + "." + z[2]) : A ? A : h) : y = h;
    ba.Ec = y;
    u.Lc = u.Gc && /webkit/i.test(u.I) && 2.3 > u.Ec;
    u.Tb = /Firefox/i.test(u.I);
    u.Id = /Chrome/i.test(u.I);
    u.Zb = !!("ontouchstart"in window || window.Fc && document instanceof window.Fc);
    u.wb = function (a) {
        var c, d, e, g;
        c = {};
        if (a && a.attributes && 0 < a.attributes.length) {
            d = a.attributes;
            for (var j = d.length - 1; 0 <= j; j--) {
                e = d[j].name;
                g = d[j].value;
                if ("boolean" === typeof a[e] || -1 !== ",autoplay,controls,loop,muted,default,".indexOf("," + e + ","))g = g !== h ? f : l;
                c[e] = g
            }
        }
        return c
    };
    u.Nd = function (a, c) {
        var d = "";
        document.defaultView && document.defaultView.getComputedStyle ? d = document.defaultView.getComputedStyle(a, "").getPropertyValue(c) : a.currentStyle && (d = a["client" + c.substr(0, 1).toUpperCase() + c.substr(1)] + "px");
        return d
    };
    u.yb = function (a, c) {
        c.firstChild ? c.insertBefore(a, c.firstChild) : c.appendChild(a)
    };
    u.Nb = {};
    u.u = function (a) {
        0 === a.indexOf("#") && (a = a.slice(1));
        return document.getElementById(a)
    };
    u.ta = function (a, c) {
        c = c || a;
        var d = Math.floor(a % 60), e = Math.floor(a / 60 % 60), g = Math.floor(a / 3600), j = Math.floor(c / 60 % 60), k = Math.floor(c / 3600);
        if (isNaN(a) || Infinity === a)g = e = d = "-";
        g = 0 < g || 0 < k ? g + ":" : "";
        return g + (((g || 10 <= j) && 10 > e ? "0" + e : e) + ":") + (10 > d ? "0" + d : d)
    };
    u.Rc = function () {
        document.body.focus();
        document.onselectstart = r(l)
    };
    u.Cd = function () {
        document.onselectstart = r(f)
    };
    u.trim = function (a) {
        return (a + "").replace(/^\s+|\s+$/g, "")
    };
    u.round = function (a, c) {
        c || (c = 0);
        return Math.round(a * Math.pow(10, c)) / Math.pow(10, c)
    };
    u.sb = function (a, c) {
        return {
            length: 1, start: function () {
                return a
            }, end: function () {
                return c
            }
        }
    };
    u.get = function (a, c, d) {
        var e, g;
        "undefined" === typeof XMLHttpRequest && (window.XMLHttpRequest = function () {
            try {
                return new window.ActiveXObject("Msxml2.XMLHTTP.6.0")
            } catch (a) {
            }
            try {
                return new window.ActiveXObject("Msxml2.XMLHTTP.3.0")
            } catch (c) {
            }
            try {
                return new window.ActiveXObject("Msxml2.XMLHTTP")
            } catch (d) {
            }
            throw Error("This browser does not support XMLHttpRequest.");
        });
        g = new XMLHttpRequest;
        try {
            g.open("GET", a)
        } catch (j) {
            d(j)
        }
        e = 0 === a.indexOf("file:") || 0 === window.location.href.indexOf("file:") && -1 === a.indexOf("http");
        g.onreadystatechange = function () {
            4 === g.readyState && (200 === g.status || e && 0 === g.status ? c(g.responseText) : d && d())
        };
        try {
            g.send()
        } catch (k) {
            d && d(k)
        }
    };
    u.ud = function (a) {
        try {
            var c = window.localStorage || l;
            c && (c.volume = a)
        } catch (d) {
            22 == d.code || 1014 == d.code ? u.log("LocalStorage Full (VideoJS)", d) : 18 == d.code ? u.log("LocalStorage not allowed (VideoJS)", d) : u.log("LocalStorage Error (VideoJS)", d)
        }
    };
    u.jc = function (a) {
        a.match(/^https?:\/\//) || (a = u.e("div", {innerHTML: '<a href="' + a + '">x</a>'}).firstChild.href);
        return a
    };
    u.log = function () {
        u.log.history = u.log.history || [];
        u.log.history.push(arguments);
        window.console && window.console.log(Array.prototype.slice.call(arguments))
    };
    u.bd = function (a) {
        var c, d;
        a.getBoundingClientRect && a.parentNode && (c = a.getBoundingClientRect());
        if (!c)return {left: 0, top: 0};
        a = document.documentElement;
        d = document.body;
        return {
            left: c.left + (window.pageXOffset || d.scrollLeft) - (a.clientLeft || d.clientLeft || 0),
            top: c.top + (window.pageYOffset || d.scrollTop) - (a.clientTop || d.clientTop || 0)
        }
    };
    u.ja = {};
    u.ja.Fb = function (a, c) {
        var d, e, g;
        a = u.k.copy(a);
        for (d in c)c.hasOwnProperty(d) && (e = a[d], g = c[d], a[d] = u.k.Ma(e) && u.k.Ma(g) ? u.ja.Fb(e, g) : c[d]);
        return a
    };
    u.b = u.ka.extend({
        h: function (a, c, d) {
            this.c = a;
            this.g = u.k.copy(this.g);
            c = this.options(c);
            this.Q = c.id || (c.el && c.el.id ? c.el.id : a.id() + "_component_" + u.s++);
            this.jd = c.name || h;
            this.a = c.el || this.e();
            this.J = [];
            this.Ia = {};
            this.Ja = {};
            this.mc();
            this.H(d);
            if (c.tc !== l) {
                var e, g;
                e = u.bind(this.C(), this.C().reportUserActivity);
                this.d("touchstart", function () {
                    e();
                    clearInterval(g);
                    g = setInterval(e, 250)
                });
                a = function () {
                    e();
                    clearInterval(g)
                };
                this.d("touchmove", e);
                this.d("touchend", a);
                this.d("touchcancel", a)
            }
        }
    });
    t = u.b.prototype;
    t.dispose = function () {
        this.j({type: "dispose", bubbles: l});
        if (this.J)for (var a = this.J.length - 1; 0 <= a; a--)this.J[a].dispose && this.J[a].dispose();
        this.Ja = this.Ia = this.J = h;
        this.o();
        this.a.parentNode && this.a.parentNode.removeChild(this.a);
        u.sc(this.a);
        this.a = h
    };
    t.c = f;
    t.C = p("c");
    t.options = function (a) {
        return a === b ? this.g : this.g = u.ja.Fb(this.g, a)
    };
    t.e = function (a, c) {
        return u.e(a, c)
    };
    t.u = p("a");
    t.Ka = function () {
        return this.F || this.a
    };
    t.id = p("Q");
    t.name = p("jd");
    t.children = p("J");
    t.dd = function (a) {
        return this.Ia[a]
    };
    t.fa = function (a) {
        return this.Ja[a]
    };
    t.X = function (a, c) {
        var d, e;
        "string" === typeof a ? (e = a, c = c || {}, d = c.componentClass || u.Y(e), c.name = e, d = new window.videojs[d](this.c || this, c)) : d = a;
        this.J.push(d);
        "function" === typeof d.id && (this.Ia[d.id()] = d);
        (e = e || d.name && d.name()) && (this.Ja[e] = d);
        "function" === typeof d.el && d.el() && this.Ka().appendChild(d.el());
        return d
    };
    t.removeChild = function (a) {
        "string" === typeof a && (a = this.fa(a));
        if (a && this.J) {
            for (var c = l, d = this.J.length - 1; 0 <= d; d--)if (this.J[d] === a) {
                c = f;
                this.J.splice(d, 1);
                break
            }
            c && (this.Ia[a.id] = h, this.Ja[a.name] = h, (c = a.u()) && c.parentNode === this.Ka() && this.Ka().removeChild(a.u()))
        }
    };
    t.mc = function () {
        var a = this.g;
        if (a && a.children) {
            var c = this;
            u.k.ra(a.children, function (a, e) {
                e !== l && !e.loadEvent && (c[a] = c.X(a, e))
            })
        }
    };
    t.P = r("");
    t.d = function (a, c) {
        u.d(this.a, a, u.bind(this, c));
        return this
    };
    t.o = function (a, c) {
        u.o(this.a, a, c);
        return this
    };
    t.T = function (a, c) {
        u.T(this.a, a, u.bind(this, c));
        return this
    };
    t.j = function (a, c) {
        u.j(this.a, a, c);
        return this
    };
    t.H = function (a) {
        a && (this.$ ? a.call(this) : (this.Ta === b && (this.Ta = []), this.Ta.push(a)));
        return this
    };
    t.Wa = function () {
        this.$ = f;
        var a = this.Ta;
        if (a && 0 < a.length) {
            for (var c = 0, d = a.length; c < d; c++)a[c].call(this);
            this.Ta = [];
            this.j("ready")
        }
    };
    t.n = function (a) {
        u.n(this.a, a);
        return this
    };
    t.t = function (a) {
        u.t(this.a, a);
        return this
    };
    t.show = function () {
        this.a.style.display = "block";
        return this
    };
    t.D = function () {
        this.a.style.display = "none";
        return this
    };
    function D(a) {
        a.t("vjs-lock-showing")
    }

    t.disable = function () {
        this.D();
        this.show = m()
    };
    t.width = function (a, c) {
        return E(this, "width", a, c)
    };
    t.height = function (a, c) {
        return E(this, "height", a, c)
    };
    t.Xc = function (a, c) {
        return this.width(a, f).height(c)
    };
    function E(a, c, d, e) {
        if (d !== b)return a.a.style[c] = -1 !== ("" + d).indexOf("%") || -1 !== ("" + d).indexOf("px") ? d : "auto" === d ? "" : d + "px", e || a.j("resize"), a;
        if (!a.a)return 0;
        d = a.a.style[c];
        e = d.indexOf("px");
        return -1 !== e ? parseInt(d.slice(0, e), 10) : parseInt(a.a["offset" + u.Y(c)], 10)
    }

    u.q = u.b.extend({
        h: function (a, c) {
            u.b.call(this, a, c);
            var d = l;
            this.d("touchstart", function (a) {
                a.preventDefault();
                d = f
            });
            this.d("touchmove", function () {
                d = l
            });
            var e = this;
            this.d("touchend", function (a) {
                d && e.p(a);
                a.preventDefault()
            });
            this.d("click", this.p);
            this.d("focus", this.Pa);
            this.d("blur", this.Oa)
        }
    });
    t = u.q.prototype;
    t.e = function (a, c) {
        c = u.k.B({
            className: this.P(),
            innerHTML: '<div class="vjs-control-content"><span class="vjs-control-text">' + (this.oa || "Need Text") + "</span></div>",
            role: "button",
            "aria-live": "polite",
            tabIndex: 0
        }, c);
        return u.b.prototype.e.call(this, a, c)
    };
    t.P = function () {
        return "vjs-control " + u.b.prototype.P.call(this)
    };
    t.p = m();
    t.Pa = function () {
        u.d(document, "keyup", u.bind(this, this.aa))
    };
    t.aa = function (a) {
        if (32 == a.which || 13 == a.which)a.preventDefault(), this.p()
    };
    t.Oa = function () {
        u.o(document, "keyup", u.bind(this, this.aa))
    };
    u.N = u.b.extend({
        h: function (a, c) {
            u.b.call(this, a, c);
            this.Qc = this.fa(this.g.barName);
            this.handle = this.fa(this.g.handleName);
            a.d(this.qc, u.bind(this, this.update));
            this.d("mousedown", this.Qa);
            this.d("touchstart", this.Qa);
            this.d("focus", this.Pa);
            this.d("blur", this.Oa);
            this.d("click", this.p);
            this.c.d("controlsvisible", u.bind(this, this.update));
            a.H(u.bind(this, this.update));
            this.O = {}
        }
    });
    t = u.N.prototype;
    t.e = function (a, c) {
        c = c || {};
        c.className += " vjs-slider";
        c = u.k.B({role: "slider", "aria-valuenow": 0, "aria-valuemin": 0, "aria-valuemax": 100, tabIndex: 0}, c);
        return u.b.prototype.e.call(this, a, c)
    };
    t.Qa = function (a) {
        a.preventDefault();
        u.Rc();
        this.O.move = u.bind(this, this.Hb);
        this.O.end = u.bind(this, this.Ib);
        u.d(document, "mousemove", this.O.move);
        u.d(document, "mouseup", this.O.end);
        u.d(document, "touchmove", this.O.move);
        u.d(document, "touchend", this.O.end);
        this.Hb(a)
    };
    t.Ib = function () {
        u.Cd();
        u.o(document, "mousemove", this.O.move, l);
        u.o(document, "mouseup", this.O.end, l);
        u.o(document, "touchmove", this.O.move, l);
        u.o(document, "touchend", this.O.end, l);
        this.update()
    };
    t.update = function () {
        if (this.a) {
            var a, c = this.xb(), d = this.handle, e = this.Qc;
            isNaN(c) && (c = 0);
            a = c;
            if (d) {
                a = this.a.offsetWidth;
                var g = d.u().offsetWidth;
                a = g ? g / a : 0;
                c *= 1 - a;
                a = c + a / 2;
                d.u().style.left = u.round(100 * c, 2) + "%"
            }
            e.u().style.width = u.round(100 * a, 2) + "%"
        }
    };
    function F(a, c) {
        var d, e, g, j;
        d = a.a;
        e = u.bd(d);
        j = g = d.offsetWidth;
        d = a.handle;
        if (a.g.Dd)return j = e.top, e = c.changedTouches ? c.changedTouches[0].pageY : c.pageY, d && (d = d.u().offsetHeight, j += d / 2, g -= d), Math.max(0, Math.min(1, (j - e + g) / g));
        g = e.left;
        e = c.changedTouches ? c.changedTouches[0].pageX : c.pageX;
        d && (d = d.u().offsetWidth, g += d / 2, j -= d);
        return Math.max(0, Math.min(1, (e - g) / j))
    }

    t.Pa = function () {
        u.d(document, "keyup", u.bind(this, this.aa))
    };
    t.aa = function (a) {
        37 == a.which ? (a.preventDefault(), this.wc()) : 39 == a.which && (a.preventDefault(), this.xc())
    };
    t.Oa = function () {
        u.o(document, "keyup", u.bind(this, this.aa))
    };
    t.p = function (a) {
        a.stopImmediatePropagation();
        a.preventDefault()
    };
    u.V = u.b.extend();
    u.V.prototype.defaultValue = 0;
    u.V.prototype.e = function (a, c) {
        c = c || {};
        c.className += " vjs-slider-handle";
        c = u.k.B({innerHTML: '<span class="vjs-control-text">' + this.defaultValue + "</span>"}, c);
        return u.b.prototype.e.call(this, "div", c)
    };
    u.la = u.b.extend();
    function ca(a, c) {
        a.X(c);
        c.d("click", u.bind(a, function () {
            D(this)
        }))
    }

    u.la.prototype.e = function () {
        var a = this.options().Tc || "ul";
        this.F = u.e(a, {className: "vjs-menu-content"});
        a = u.b.prototype.e.call(this, "div", {append: this.F, className: "vjs-menu"});
        a.appendChild(this.F);
        u.d(a, "click", function (a) {
            a.preventDefault();
            a.stopImmediatePropagation()
        });
        return a
    };
    u.M = u.q.extend({
        h: function (a, c) {
            u.q.call(this, a, c);
            this.selected(c.selected)
        }
    });
    u.M.prototype.e = function (a, c) {
        return u.q.prototype.e.call(this, "li", u.k.B({className: "vjs-menu-item", innerHTML: this.g.label}, c))
    };
    u.M.prototype.p = function () {
        this.selected(f)
    };
    u.M.prototype.selected = function (a) {
        a ? (this.n("vjs-selected"), this.a.setAttribute("aria-selected", f)) : (this.t("vjs-selected"), this.a.setAttribute("aria-selected", l))
    };
    u.R = u.q.extend({
        h: function (a, c) {
            u.q.call(this, a, c);
            this.ua = this.La();
            this.X(this.ua);
            this.K && 0 === this.K.length && this.D();
            this.d("keyup", this.aa);
            this.a.setAttribute("aria-haspopup", f);
            this.a.setAttribute("role", "button")
        }
    });
    t = u.R.prototype;
    t.na = l;
    t.La = function () {
        var a = new u.la(this.c);
        this.options().title && a.u().appendChild(u.e("li", {
            className: "vjs-menu-title",
            innerHTML: u.Y(this.A),
            Ad: -1
        }));
        if (this.K = this.createItems())for (var c = 0; c < this.K.length; c++)ca(a, this.K[c]);
        return a
    };
    t.qa = m();
    t.P = function () {
        return this.className + " vjs-menu-button " + u.q.prototype.P.call(this)
    };
    t.Pa = m();
    t.Oa = m();
    t.p = function () {
        this.T("mouseout", u.bind(this, function () {
            D(this.ua);
            this.a.blur()
        }));
        this.na ? G(this) : H(this)
    };
    t.aa = function (a) {
        a.preventDefault();
        32 == a.which || 13 == a.which ? this.na ? G(this) : H(this) : 27 == a.which && this.na && G(this)
    };
    function H(a) {
        a.na = f;
        a.ua.n("vjs-lock-showing");
        a.a.setAttribute("aria-pressed", f);
        a.K && 0 < a.K.length && a.K[0].u().focus()
    }

    function G(a) {
        a.na = l;
        D(a.ua);
        a.a.setAttribute("aria-pressed", l)
    }

    u.Player = u.b.extend({
        h: function (a, c, d) {
            this.L = a;
            a.id = a.id || "vjs_video_" + u.s++;
            c = u.k.B(da(a), c);
            this.v = {};
            this.rc = c.poster;
            this.rb = c.controls;
            a.controls = l;
            c.tc = l;
            u.b.call(this, this, c, d);
            this.controls() ? this.n("vjs-controls-enabled") : this.n("vjs-controls-disabled");
            this.T("play", function (a) {
                u.j(this.a, {
                    type: "firstplay",
                    target: this.a
                }) || (a.preventDefault(), a.stopPropagation(), a.stopImmediatePropagation())
            });
            this.d("ended", this.kd);
            this.d("play", this.Kb);
            this.d("firstplay", this.ld);
            this.d("pause", this.Jb);
            this.d("progress", this.nd);
            this.d("durationchange", this.pc);
            this.d("error", this.Gb);
            this.d("fullscreenchange", this.md);
            u.va[this.Q] = this;
            c.plugins && u.k.ra(c.plugins, function (a, c) {
                this[a](c)
            }, this);
            var e, g, j, k;
            e = u.bind(this, this.reportUserActivity);
            this.d("mousedown", function () {
                e();
                clearInterval(g);
                g = setInterval(e, 250)
            });
            this.d("mousemove", e);
            this.d("mouseup", function () {
                e();
                clearInterval(g)
            });
            this.d("keydown", e);
            this.d("keyup", e);
            j = setInterval(u.bind(this, function () {
                this.ia && (this.ia = l, this.userActive(f),
                    clearTimeout(k), k = setTimeout(u.bind(this, function () {
                    this.ia || this.userActive(l)
                }), 2E3))
            }), 250);
            this.d("dispose", function () {
                clearInterval(j);
                clearTimeout(k)
            })
        }
    });
    t = u.Player.prototype;
    t.g = u.options;
    t.dispose = function () {
        this.j("dispose");
        this.o("dispose");
        u.va[this.Q] = h;
        this.L && this.L.player && (this.L.player = h);
        this.a && this.a.player && (this.a.player = h);
        clearInterval(this.Sa);
        this.wa();
        this.i && this.i.dispose();
        u.b.prototype.dispose.call(this)
    };
    function da(a) {
        var c = {sources: [], tracks: []};
        u.k.B(c, u.wb(a));
        if (a.hasChildNodes()) {
            var d, e, g, j;
            a = a.childNodes;
            g = 0;
            for (j = a.length; g < j; g++)d = a[g], e = d.nodeName.toLowerCase(), "source" === e ? c.sources.push(u.wb(d)) : "track" === e && c.tracks.push(u.wb(d))
        }
        return c
    }

    t.e = function () {
        var a = this.a = u.b.prototype.e.call(this, "div"), c = this.L;
        c.removeAttribute("width");
        c.removeAttribute("height");
        if (c.hasChildNodes()) {
            var d, e, g, j, k;
            d = c.childNodes;
            e = d.length;
            for (k = []; e--;)g = d[e], j = g.nodeName.toLowerCase(), "track" === j && k.push(g);
            for (d = 0; d < k.length; d++)c.removeChild(k[d])
        }
        a.id = c.id;
        a.className = c.className;
        c.id += "_html5_api";
        c.className = "vjs-tech";
        c.player = a.player = this;
        this.n("vjs-paused");
        this.width(this.g.width, f);
        this.height(this.g.height, f);
        c.parentNode && c.parentNode.insertBefore(a,
            c);
        u.yb(c, a);
        return a
    };
    function I(a, c, d) {
        a.i && (a.$ = l, a.i.dispose(), a.Db && (a.Db = l, clearInterval(a.Sa)), a.Eb && J(a), a.i = l);
        "Html5" !== c && a.L && (u.l.fc(a.L), a.L = h);
        a.xa = c;
        a.$ = l;
        var e = u.k.B({source: d, parentEl: a.a}, a.g[c.toLowerCase()]);
        d && (d.src == a.v.src && 0 < a.v.currentTime && (e.startTime = a.v.currentTime), a.v.src = d.src);
        a.i = new window.videojs[c](a, e);
        a.i.H(function () {
            this.c.Wa();
            if (!this.m.progressEvents) {
                var a = this.c;
                a.Db = f;
                a.Sa = setInterval(u.bind(a, function () {
                    this.v.mb < this.buffered().end(0) ? this.j("progress") : 1 == this.bufferedPercent() &&
                    (clearInterval(this.Sa), this.j("progress"))
                }), 500);
                a.i.T("progress", function () {
                    this.m.progressEvents = f;
                    var a = this.c;
                    a.Db = l;
                    clearInterval(a.Sa)
                })
            }
            this.m.timeupdateEvents || (a = this.c, a.Eb = f, a.d("play", a.Ac), a.d("pause", a.wa), a.i.T("timeupdate", function () {
                this.m.timeupdateEvents = f;
                J(this.c)
            }))
        })
    }

    function J(a) {
        a.Eb = l;
        a.wa();
        a.o("play", a.Ac);
        a.o("pause", a.wa)
    }

    t.Ac = function () {
        this.ec && this.wa();
        this.ec = setInterval(u.bind(this, function () {
            this.j("timeupdate")
        }), 250)
    };
    t.wa = function () {
        clearInterval(this.ec)
    };
    t.Kb = function () {
        u.t(this.a, "vjs-paused");
        u.n(this.a, "vjs-playing")
    };
    t.ld = function () {
        this.g.starttime && this.currentTime(this.g.starttime);
        this.n("vjs-has-started")
    };
    t.Jb = function () {
        u.t(this.a, "vjs-playing");
        u.n(this.a, "vjs-paused")
    };
    t.nd = function () {
        1 == this.bufferedPercent() && this.j("loadedalldata")
    };
    t.kd = function () {
        this.g.loop && (this.currentTime(0), this.play())
    };
    t.pc = function () {
        var a = K(this, "duration");
        a && this.duration(a)
    };
    t.md = function () {
        this.isFullScreen() ? this.n("vjs-fullscreen") : this.t("vjs-fullscreen")
    };
    t.Gb = function (a) {
        u.log("Video Error", a)
    };
    function L(a, c, d) {
        if (a.i && !a.i.$)a.i.H(function () {
            this[c](d)
        }); else try {
            a.i[c](d)
        } catch (e) {
            throw u.log(e), e;
        }
    }

    function K(a, c) {
        if (a.i && a.i.$)try {
            return a.i[c]()
        } catch (d) {
            throw a.i[c] === b ? u.log("Video.js: " + c + " method not defined for " + a.xa + " playback technology.", d) : "TypeError" == d.name ? (u.log("Video.js: " + c + " unavailable on " + a.xa + " playback technology element.", d), a.i.$ = l) : u.log(d), d;
        }
    }

    t.play = function () {
        L(this, "play");
        return this
    };
    t.pause = function () {
        L(this, "pause");
        return this
    };
    t.paused = function () {
        return K(this, "paused") === l ? l : f
    };
    t.currentTime = function (a) {
        return a !== b ? (L(this, "setCurrentTime", a), this.Eb && this.j("timeupdate"), this) : this.v.currentTime = K(this, "currentTime") || 0
    };
    t.duration = function (a) {
        if (a !== b)return this.v.duration = parseFloat(a), this;
        this.v.duration === b && this.pc();
        return this.v.duration || 0
    };
    t.buffered = function () {
        var a = K(this, "buffered"), c = a.length - 1, d = this.v.mb = this.v.mb || 0;
        a && (0 <= c && a.end(c) !== d) && (d = a.end(c), this.v.mb = d);
        return u.sb(0, d)
    };
    t.bufferedPercent = function () {
        return this.duration() ? this.buffered().end(0) / this.duration() : 0
    };
    t.volume = function (a) {
        if (a !== b)return a = Math.max(0, Math.min(1, parseFloat(a))), this.v.volume = a, L(this, "setVolume", a), u.ud(a), this;
        a = parseFloat(K(this, "volume"));
        return isNaN(a) ? 1 : a
    };
    t.muted = function (a) {
        return a !== b ? (L(this, "setMuted", a), this) : K(this, "muted") || l
    };
    t.Va = function () {
        return K(this, "supportsFullScreen") || l
    };
    t.nc = l;
    t.isFullScreen = function (a) {
        return a !== b ? (this.nc = a, this) : this.nc
    };
    t.requestFullScreen = function () {
        var a = u.Nb.requestFullScreen;
        this.isFullScreen(f);
        a ? (u.d(document, a.ub, u.bind(this, function (c) {
            this.isFullScreen(document[a.isFullScreen]);
            this.isFullScreen() === l && u.o(document, a.ub, arguments.callee);
            this.j("fullscreenchange")
        })), this.a[a.uc]()) : this.i.Va() ? L(this, "enterFullScreen") : (this.ed = f, this.Yc = document.documentElement.style.overflow, u.d(document, "keydown", u.bind(this, this.ic)), document.documentElement.style.overflow = "hidden", u.n(document.body, "vjs-full-window"),
            this.j("enterFullWindow"), this.j("fullscreenchange"));
        return this
    };
    t.cancelFullScreen = function () {
        var a = u.Nb.requestFullScreen;
        this.isFullScreen(l);
        if (a)document[a.ob](); else this.i.Va() ? L(this, "exitFullScreen") : (M(this), this.j("fullscreenchange"));
        return this
    };
    t.ic = function (a) {
        27 === a.keyCode && (this.isFullScreen() === f ? this.cancelFullScreen() : M(this))
    };
    function M(a) {
        a.ed = l;
        u.o(document, "keydown", a.ic);
        document.documentElement.style.overflow = a.Yc;
        u.t(document.body, "vjs-full-window");
        a.j("exitFullWindow")
    }

    t.src = function (a) {
        if (a instanceof Array) {
            var c;
            a:{
                c = a;
                for (var d = 0, e = this.g.techOrder; d < e.length; d++) {
                    var g = u.Y(e[d]), j = window.videojs[g];
                    if (j.isSupported())for (var k = 0, q = c; k < q.length; k++) {
                        var n = q[k];
                        if (j.canPlaySource(n)) {
                            c = {source: n, i: g};
                            break a
                        }
                    }
                }
                c = l
            }
            c ? (a = c.source, c = c.i, c == this.xa ? this.src(a) : I(this, c, a)) : this.a.appendChild(u.e("p", {innerHTML: this.options().notSupportedMessage}))
        } else a instanceof Object ? window.videojs[this.xa].canPlaySource(a) ? this.src(a.src) : this.src([a]) : (this.v.src = a, this.$ ?
            (L(this, "src", a), "auto" == this.g.preload && this.load(), this.g.autoplay && this.play()) : this.H(function () {
            this.src(a)
        }));
        return this
    };
    t.load = function () {
        L(this, "load");
        return this
    };
    t.currentSrc = function () {
        return K(this, "currentSrc") || this.v.src || ""
    };
    t.Ra = function (a) {
        return a !== b ? (L(this, "setPreload", a), this.g.preload = a, this) : K(this, "preload")
    };
    t.autoplay = function (a) {
        return a !== b ? (L(this, "setAutoplay", a), this.g.autoplay = a, this) : K(this, "autoplay")
    };
    t.loop = function (a) {
        return a !== b ? (L(this, "setLoop", a), this.g.loop = a, this) : K(this, "loop")
    };
    t.poster = function (a) {
        if (a === b)return this.rc;
        this.rc = a;
        L(this, "setPoster", a);
        this.j("posterchange")
    };
    t.controls = function (a) {
        return a !== b ? (a = !!a, this.rb !== a && ((this.rb = a) ? (this.t("vjs-controls-disabled"), this.n("vjs-controls-enabled"), this.j("controlsenabled")) : (this.t("vjs-controls-enabled"), this.n("vjs-controls-disabled"), this.j("controlsdisabled"))), this) : this.rb
    };
    u.Player.prototype.Pb;
    t = u.Player.prototype;
    t.usingNativeControls = function (a) {
        return a !== b ? (a = !!a, this.Pb !== a && ((this.Pb = a) ? (this.n("vjs-using-native-controls"), this.j("usingnativecontrols")) : (this.t("vjs-using-native-controls"), this.j("usingcustomcontrols"))), this) : this.Pb
    };
    t.error = function () {
        return K(this, "error")
    };
    t.ended = function () {
        return K(this, "ended")
    };
    t.seeking = function () {
        return K(this, "seeking")
    };
    t.ia = f;
    t.reportUserActivity = function () {
        this.ia = f
    };
    t.Ob = f;
    t.userActive = function (a) {
        return a !== b ? (a = !!a, a !== this.Ob && ((this.Ob = a) ? (this.ia = f, this.t("vjs-user-inactive"), this.n("vjs-user-active"), this.j("useractive")) : (this.ia = l, this.i.T("mousemove", function (a) {
            a.stopPropagation();
            a.preventDefault()
        }), this.t("vjs-user-active"), this.n("vjs-user-inactive"), this.j("userinactive"))), this) : this.Ob
    };
    var N, O, P;
    P = document.createElement("div");
    O = {};
    P.Jd !== b ? (O.uc = "requestFullscreen", O.ob = "exitFullscreen", O.ub = "fullscreenchange", O.isFullScreen = "fullScreen") : (document.mozCancelFullScreen ? (N = "moz", O.isFullScreen = N + "FullScreen") : (N = "webkit", O.isFullScreen = N + "IsFullScreen"), P[N + "RequestFullScreen"] && (O.uc = N + "RequestFullScreen", O.ob = N + "CancelFullScreen"), O.ub = N + "fullscreenchange");
    document[O.ob] && (u.Nb.requestFullScreen = O);
    u.Ca = u.b.extend();
    u.Ca.prototype.g = {
        Pd: "play",
        children: {
            playToggle: {},
            currentTimeDisplay: {},
            timeDivider: {},
            durationDisplay: {},
            remainingTimeDisplay: {},
            progressControl: {},
            fullscreenToggle: {},
            volumeControl: {},
            muteToggle: {}
        }
    };
    u.Ca.prototype.e = function () {
        return u.e("div", {className: "vjs-control-bar"})
    };
    u.Wb = u.q.extend({
        h: function (a, c) {
            u.q.call(this, a, c);
            a.d("play", u.bind(this, this.Kb));
            a.d("pause", u.bind(this, this.Jb))
        }
    });
    t = u.Wb.prototype;
    t.oa = "Play";
    t.P = function () {
        return "vjs-play-control " + u.q.prototype.P.call(this)
    };
    t.p = function () {
        this.c.paused() ? this.c.play() : this.c.pause()
    };
    t.Kb = function () {
        u.t(this.a, "vjs-paused");
        u.n(this.a, "vjs-playing");
        this.a.children[0].children[0].innerHTML = "Pause"
    };
    t.Jb = function () {
        u.t(this.a, "vjs-playing");
        u.n(this.a, "vjs-paused");
        this.a.children[0].children[0].innerHTML = "Play"
    };
    u.$a = u.b.extend({
        h: function (a, c) {
            u.b.call(this, a, c);
            a.d("timeupdate", u.bind(this, this.ca))
        }
    });
    u.$a.prototype.e = function () {
        var a = u.b.prototype.e.call(this, "div", {className: "vjs-current-time vjs-time-controls vjs-control"});
        this.F = u.e("div", {
            className: "vjs-current-time-display",
            innerHTML: '<span class="vjs-control-text">Current Time </span>0:00',
            "aria-live": "off"
        });
        a.appendChild(this.F);
        return a
    };
    u.$a.prototype.ca = function () {
        var a = this.c.Ua ? this.c.v.currentTime : this.c.currentTime();
        this.F.innerHTML = '<span class="vjs-control-text">Current Time </span>' + u.ta(a, this.c.duration())
    };
    u.ab = u.b.extend({
        h: function (a, c) {
            u.b.call(this, a, c);
            a.d("timeupdate", u.bind(this, this.ca))
        }
    });
    u.ab.prototype.e = function () {
        var a = u.b.prototype.e.call(this, "div", {className: "vjs-duration vjs-time-controls vjs-control"});
        this.F = u.e("div", {
            className: "vjs-duration-display",
            innerHTML: '<span class="vjs-control-text">Duration Time </span>0:00',
            "aria-live": "off"
        });
        a.appendChild(this.F);
        return a
    };
    u.ab.prototype.ca = function () {
        var a = this.c.duration();
        a && (this.F.innerHTML = '<span class="vjs-control-text">Duration Time </span>' + u.ta(a))
    };
    u.ac = u.b.extend({
        h: function (a, c) {
            u.b.call(this, a, c)
        }
    });
    u.ac.prototype.e = function () {
        return u.b.prototype.e.call(this, "div", {
            className: "vjs-time-divider",
            innerHTML: "<div><span>/</span></div>"
        })
    };
    u.gb = u.b.extend({
        h: function (a, c) {
            u.b.call(this, a, c);
            a.d("timeupdate", u.bind(this, this.ca))
        }
    });
    u.gb.prototype.e = function () {
        var a = u.b.prototype.e.call(this, "div", {className: "vjs-remaining-time vjs-time-controls vjs-control"});
        this.F = u.e("div", {
            className: "vjs-remaining-time-display",
            innerHTML: '<span class="vjs-control-text">Remaining Time </span>-0:00',
            "aria-live": "off"
        });
        a.appendChild(this.F);
        return a
    };
    u.gb.prototype.ca = function () {
        this.c.duration() && (this.F.innerHTML = '<span class="vjs-control-text">Remaining Time </span>-' + u.ta(this.c.duration() - this.c.currentTime()))
    };
    u.Da = u.q.extend({
        h: function (a, c) {
            u.q.call(this, a, c)
        }
    });
    u.Da.prototype.oa = "Fullscreen";
    u.Da.prototype.P = function () {
        return "vjs-fullscreen-control " + u.q.prototype.P.call(this)
    };
    u.Da.prototype.p = function () {
        this.c.isFullScreen() ? (this.c.cancelFullScreen(), this.a.children[0].children[0].innerHTML = "Fullscreen") : (this.c.requestFullScreen(), this.a.children[0].children[0].innerHTML = "Non-Fullscreen")
    };
    u.fb = u.b.extend({
        h: function (a, c) {
            u.b.call(this, a, c)
        }
    });
    u.fb.prototype.g = {children: {seekBar: {}}};
    u.fb.prototype.e = function () {
        return u.b.prototype.e.call(this, "div", {className: "vjs-progress-control vjs-control"})
    };
    u.Xb = u.N.extend({
        h: function (a, c) {
            u.N.call(this, a, c);
            a.d("timeupdate", u.bind(this, this.za));
            a.H(u.bind(this, this.za))
        }
    });
    t = u.Xb.prototype;
    t.g = {
        children: {loadProgressBar: {}, playProgressBar: {}, seekHandle: {}},
        barName: "playProgressBar",
        handleName: "seekHandle"
    };
    t.qc = "timeupdate";
    t.e = function () {
        return u.N.prototype.e.call(this, "div", {className: "vjs-progress-holder", "aria-label": "video progress bar"})
    };
    t.za = function () {
        var a = this.c.Ua ? this.c.v.currentTime : this.c.currentTime();
        this.a.setAttribute("aria-valuenow", u.round(100 * this.xb(), 2));
        this.a.setAttribute("aria-valuetext", u.ta(a, this.c.duration()))
    };
    t.xb = function () {
        return this.c.currentTime() / this.c.duration()
    };
    t.Qa = function (a) {
        u.N.prototype.Qa.call(this, a);
        this.c.Ua = f;
        this.Ed = !this.c.paused();
        this.c.pause()
    };
    t.Hb = function (a) {
        a = F(this, a) * this.c.duration();
        a == this.c.duration() && (a -= 0.1);
        this.c.currentTime(a)
    };
    t.Ib = function (a) {
        u.N.prototype.Ib.call(this, a);
        this.c.Ua = l;
        this.Ed && this.c.play()
    };
    t.xc = function () {
        this.c.currentTime(this.c.currentTime() + 5)
    };
    t.wc = function () {
        this.c.currentTime(this.c.currentTime() - 5)
    };
    u.cb = u.b.extend({
        h: function (a, c) {
            u.b.call(this, a, c);
            a.d("progress", u.bind(this, this.update))
        }
    });
    u.cb.prototype.e = function () {
        return u.b.prototype.e.call(this, "div", {
            className: "vjs-load-progress",
            innerHTML: '<span class="vjs-control-text">Loaded: 0%</span>'
        })
    };
    u.cb.prototype.update = function () {
        this.a.style && (this.a.style.width = u.round(100 * this.c.bufferedPercent(), 2) + "%")
    };
    u.Vb = u.b.extend({
        h: function (a, c) {
            u.b.call(this, a, c)
        }
    });
    u.Vb.prototype.e = function () {
        return u.b.prototype.e.call(this, "div", {
            className: "vjs-play-progress",
            innerHTML: '<span class="vjs-control-text">Progress: 0%</span>'
        })
    };
    u.Fa = u.V.extend({
        h: function (a, c) {
            u.V.call(this, a, c);
            a.d("timeupdate", u.bind(this, this.ca))
        }
    });
    u.Fa.prototype.defaultValue = "00:00";
    u.Fa.prototype.e = function () {
        return u.V.prototype.e.call(this, "div", {className: "vjs-seek-handle", "aria-live": "off"})
    };
    u.Fa.prototype.ca = function () {
        var a = this.c.Ua ? this.c.v.currentTime : this.c.currentTime();
        this.a.innerHTML = '<span class="vjs-control-text">' + u.ta(a, this.c.duration()) + "</span>"
    };
    u.ib = u.b.extend({
        h: function (a, c) {
            u.b.call(this, a, c);
            a.i && (a.i.m && a.i.m.volumeControl === l) && this.n("vjs-hidden");
            a.d("loadstart", u.bind(this, function () {
                a.i.m && a.i.m.volumeControl === l ? this.n("vjs-hidden") : this.t("vjs-hidden")
            }))
        }
    });
    u.ib.prototype.g = {children: {volumeBar: {}}};
    u.ib.prototype.e = function () {
        return u.b.prototype.e.call(this, "div", {className: "vjs-volume-control vjs-control"})
    };
    u.hb = u.N.extend({
        h: function (a, c) {
            u.N.call(this, a, c);
            a.d("volumechange", u.bind(this, this.za));
            a.H(u.bind(this, this.za));
            setTimeout(u.bind(this, this.update), 0)
        }
    });
    t = u.hb.prototype;
    t.za = function () {
        this.a.setAttribute("aria-valuenow", u.round(100 * this.c.volume(), 2));
        this.a.setAttribute("aria-valuetext", u.round(100 * this.c.volume(), 2) + "%")
    };
    t.g = {children: {volumeLevel: {}, volumeHandle: {}}, barName: "volumeLevel", handleName: "volumeHandle"};
    t.qc = "volumechange";
    t.e = function () {
        return u.N.prototype.e.call(this, "div", {className: "vjs-volume-bar", "aria-label": "volume level"})
    };
    t.Hb = function (a) {
        this.c.muted() && this.c.muted(l);
        this.c.volume(F(this, a))
    };
    t.xb = function () {
        return this.c.muted() ? 0 : this.c.volume()
    };
    t.xc = function () {
        this.c.volume(this.c.volume() + 0.1)
    };
    t.wc = function () {
        this.c.volume(this.c.volume() - 0.1)
    };
    u.bc = u.b.extend({
        h: function (a, c) {
            u.b.call(this, a, c)
        }
    });
    u.bc.prototype.e = function () {
        return u.b.prototype.e.call(this, "div", {
            className: "vjs-volume-level",
            innerHTML: '<span class="vjs-control-text"></span>'
        })
    };
    u.jb = u.V.extend();
    u.jb.prototype.defaultValue = "00:00";
    u.jb.prototype.e = function () {
        return u.V.prototype.e.call(this, "div", {className: "vjs-volume-handle"})
    };
    u.da = u.q.extend({
        h: function (a, c) {
            u.q.call(this, a, c);
            a.d("volumechange", u.bind(this, this.update));
            a.i && (a.i.m && a.i.m.volumeControl === l) && this.n("vjs-hidden");
            a.d("loadstart", u.bind(this, function () {
                a.i.m && a.i.m.volumeControl === l ? this.n("vjs-hidden") : this.t("vjs-hidden")
            }))
        }
    });
    u.da.prototype.e = function () {
        return u.q.prototype.e.call(this, "div", {
            className: "vjs-mute-control vjs-control",
            innerHTML: '<div><span class="vjs-control-text">Mute</span></div>'
        })
    };
    u.da.prototype.p = function () {
        this.c.muted(this.c.muted() ? l : f)
    };
    u.da.prototype.update = function () {
        var a = this.c.volume(), c = 3;
        0 === a || this.c.muted() ? c = 0 : 0.33 > a ? c = 1 : 0.67 > a && (c = 2);
        this.c.muted() ? "Unmute" != this.a.children[0].children[0].innerHTML && (this.a.children[0].children[0].innerHTML = "Unmute") : "Mute" != this.a.children[0].children[0].innerHTML && (this.a.children[0].children[0].innerHTML = "Mute");
        for (a = 0; 4 > a; a++)u.t(this.a, "vjs-vol-" + a);
        u.n(this.a, "vjs-vol-" + c)
    };
    u.ma = u.R.extend({
        h: function (a, c) {
            u.R.call(this, a, c);
            a.d("volumechange", u.bind(this, this.update));
            a.i && (a.i.m && a.i.m.Bc === l) && this.n("vjs-hidden");
            a.d("loadstart", u.bind(this, function () {
                a.i.m && a.i.m.Bc === l ? this.n("vjs-hidden") : this.t("vjs-hidden")
            }));
            this.n("vjs-menu-button")
        }
    });
    u.ma.prototype.La = function () {
        var a = new u.la(this.c, {Tc: "div"}), c = new u.hb(this.c, u.k.B({Dd: f}, this.g.Yd));
        a.X(c);
        return a
    };
    u.ma.prototype.p = function () {
        u.da.prototype.p.call(this);
        u.R.prototype.p.call(this)
    };
    u.ma.prototype.e = function () {
        return u.q.prototype.e.call(this, "div", {
            className: "vjs-volume-menu-button vjs-menu-button vjs-control",
            innerHTML: '<div><span class="vjs-control-text">Mute</span></div>'
        })
    };
    u.ma.prototype.update = u.da.prototype.update;
    u.Ea = u.q.extend({
        h: function (a, c) {
            u.q.call(this, a, c);
            a.poster() && this.src(a.poster());
            (!a.poster() || !a.controls()) && this.D();
            a.d("posterchange", u.bind(this, function () {
                this.src(a.poster())
            }));
            a.d("play", u.bind(this, this.D))
        }
    });
    var Q = "backgroundSize"in u.ea.style;
    u.Ea.prototype.e = function () {
        var a = u.e("div", {className: "vjs-poster", tabIndex: -1});
        Q || a.appendChild(u.e("img"));
        return a
    };
    u.Ea.prototype.src = function (a) {
        var c = this.u();
        a !== b && (Q ? c.style.backgroundImage = 'url("' + a + '")' : c.firstChild.src = a)
    };
    u.Ea.prototype.p = function () {
        this.C().controls() && this.c.play()
    };
    u.Ub = u.b.extend({
        h: function (a, c) {
            u.b.call(this, a, c);
            a.d("canplay", u.bind(this, this.D));
            a.d("canplaythrough", u.bind(this, this.D));
            a.d("playing", u.bind(this, this.D));
            a.d("seeked", u.bind(this, this.D));
            a.d("seeking", u.bind(this, this.show));
            a.d("seeked", u.bind(this, this.D));
            a.d("error", u.bind(this, this.show));
            a.d("waiting", u.bind(this, this.show))
        }
    });
    u.Ub.prototype.e = function () {
        return u.b.prototype.e.call(this, "div", {className: "vjs-loading-spinner"})
    };
    u.Ya = u.q.extend();
    u.Ya.prototype.e = function () {
        return u.q.prototype.e.call(this, "div", {
            className: "vjs-big-play-button",
            innerHTML: '<span aria-hidden="true"></span>',
            "aria-label": "play video"
        })
    };
    u.Ya.prototype.p = function () {
        this.c.play()
    };
    u.r = u.b.extend({
        h: function (a, c, d) {
            c = c || {};
            c.tc = l;
            u.b.call(this, a, c, d);
            var e, g;
            g = this;
            e = this.C();
            a = function () {
                if (e.controls() && !e.usingNativeControls()) {
                    var a;
                    g.d("mousedown", g.p);
                    g.d("touchstart", function (c) {
                        c.preventDefault();
                        a = this.c.userActive()
                    });
                    g.d("touchmove", function () {
                        a && this.C().reportUserActivity()
                    });
                    var c, d, n, s;
                    c = 0;
                    g.d("touchstart", function () {
                        c = (new Date).getTime();
                        n = f
                    });
                    s = function () {
                        n = l
                    };
                    g.d("touchmove", s);
                    g.d("touchleave", s);
                    g.d("touchcancel", s);
                    g.d("touchend", function () {
                        n === f && (d = (new Date).getTime() -
                        c, 250 > d && this.j("tap"))
                    });
                    g.d("tap", g.od)
                }
            };
            c = u.bind(g, g.rd);
            this.H(a);
            e.d("controlsenabled", a);
            e.d("controlsdisabled", c)
        }
    });
    u.r.prototype.rd = function () {
        this.o("tap");
        this.o("touchstart");
        this.o("touchmove");
        this.o("touchleave");
        this.o("touchcancel");
        this.o("touchend");
        this.o("click");
        this.o("mousedown")
    };
    u.r.prototype.p = function (a) {
        0 === a.button && this.C().controls() && (this.C().paused() ? this.C().play() : this.C().pause())
    };
    u.r.prototype.od = function () {
        this.C().userActive(!this.C().userActive())
    };
    u.r.prototype.m = {volumeControl: f, fullscreenResize: l, progressEvents: l, timeupdateEvents: l};
    u.media = {};
    u.media.Xa = "play pause paused currentTime setCurrentTime duration buffered volume setVolume muted setMuted width height supportsFullScreen enterFullScreen src load currentSrc preload setPreload autoplay setAutoplay loop setLoop error networkState readyState seeking initialTime startOffsetTime played seekable ended videoTracks audioTracks videoWidth videoHeight textTracks defaultPlaybackRate playbackRate mediaGroup controller controls defaultMuted".split(" ");
    function ea() {
        var a = u.media.Xa[i];
        return function () {
            throw Error('The "' + a + "\" method is not available on the playback technology's API");
        }
    }

    for (var i = u.media.Xa.length - 1; 0 <= i; i--)u.r.prototype[u.media.Xa[i]] = ea();
    u.l = u.r.extend({
        h: function (a, c, d) {
            this.m.volumeControl = u.l.Sc();
            this.m.movingMediaElementInDOM = !u.Hc;
            this.m.fullscreenResize = f;
            u.r.call(this, a, c, d);
            for (d = u.l.bb.length - 1; 0 <= d; d--)u.d(this.a, u.l.bb[d], u.bind(this.c, this.$c));
            (c = c.source) && this.a.currentSrc === c.src && 0 < this.a.networkState ? a.j("loadstart") : c && (this.a.src = c.src);
            if (u.Zb && a.options().nativeControlsForTouch !== l) {
                var e, g, j, k;
                e = this;
                g = this.C();
                c = g.controls();
                e.a.controls = !!c;
                j = function () {
                    e.a.controls = f
                };
                k = function () {
                    e.a.controls = l
                };
                g.d("controlsenabled",
                    j);
                g.d("controlsdisabled", k);
                c = function () {
                    g.o("controlsenabled", j);
                    g.o("controlsdisabled", k)
                };
                e.d("dispose", c);
                g.d("usingcustomcontrols", c);
                g.usingNativeControls(f)
            }
            a.H(function () {
                this.L && (this.g.autoplay && this.paused()) && (delete this.L.poster, this.play())
            });
            this.Wa()
        }
    });
    t = u.l.prototype;
    t.dispose = function () {
        u.r.prototype.dispose.call(this)
    };
    t.e = function () {
        var a = this.c, c = a.L, d;
        if (!c || this.m.movingMediaElementInDOM === l)c ? (d = c.cloneNode(l), u.l.fc(c), c = d, a.L = h) : c = u.e("video", {
            id: a.id() + "_html5_api",
            className: "vjs-tech"
        }), c.player = a, u.yb(c, a.u());
        d = ["autoplay", "preload", "loop", "muted"];
        for (var e = d.length - 1; 0 <= e; e--) {
            var g = d[e];
            a.g[g] !== h && (c[g] = a.g[g])
        }
        return c
    };
    t.$c = function (a) {
        this.j(a);
        a.stopPropagation()
    };
    t.play = function () {
        this.a.play()
    };
    t.pause = function () {
        this.a.pause()
    };
    t.paused = function () {
        return this.a.paused
    };
    t.currentTime = function () {
        return this.a.currentTime
    };
    t.td = function (a) {
        try {
            this.a.currentTime = a
        } catch (c) {
            u.log(c, "Video is not ready. (Video.js)")
        }
    };
    t.duration = function () {
        return this.a.duration || 0
    };
    t.buffered = function () {
        return this.a.buffered
    };
    t.volume = function () {
        return this.a.volume
    };
    t.yd = function (a) {
        this.a.volume = a
    };
    t.muted = function () {
        return this.a.muted
    };
    t.wd = function (a) {
        this.a.muted = a
    };
    t.width = function () {
        return this.a.offsetWidth
    };
    t.height = function () {
        return this.a.offsetHeight
    };
    t.Va = function () {
        return "function" == typeof this.a.webkitEnterFullScreen && (/Android/.test(u.I) || !/Chrome|Mac OS X 10.5/.test(u.I)) ? f : l
    };
    t.gc = function () {
        var a = this.a;
        a.paused && a.networkState <= a.Gd ? (this.a.play(), setTimeout(function () {
            a.pause();
            a.webkitEnterFullScreen()
        }, 0)) : a.webkitEnterFullScreen()
    };
    t.ad = function () {
        this.a.webkitExitFullScreen()
    };
    t.src = function (a) {
        this.a.src = a
    };
    t.load = function () {
        this.a.load()
    };
    t.currentSrc = function () {
        return this.a.currentSrc
    };
    t.poster = function () {
        return this.a.poster
    };
    t.Ra = function () {
        return this.a.Ra
    };
    t.xd = function (a) {
        this.a.Ra = a
    };
    t.autoplay = function () {
        return this.a.autoplay
    };
    t.sd = function (a) {
        this.a.autoplay = a
    };
    t.controls = function () {
        return this.a.controls
    };
    t.loop = function () {
        return this.a.loop
    };
    t.vd = function (a) {
        this.a.loop = a
    };
    t.error = function () {
        return this.a.error
    };
    t.seeking = function () {
        return this.a.seeking
    };
    t.ended = function () {
        return this.a.ended
    };
    u.l.isSupported = function () {
        return !!u.ea.canPlayType
    };
    u.l.nb = function (a) {
        try {
            return !!u.ea.canPlayType(a.type)
        } catch (c) {
            return ""
        }
    };
    u.l.Sc = function () {
        var a = u.ea.volume;
        u.ea.volume = a / 2 + 0.1;
        return a !== u.ea.volume
    };
    u.l.bb = "loadstart suspend abort error emptied stalled loadedmetadata loadeddata canplay canplaythrough playing waiting seeking seeked ended durationchange timeupdate progress play pause ratechange volumechange".split(" ");
    u.l.fc = function (a) {
        if (a) {
            a.player = h;
            for (a.parentNode && a.parentNode.removeChild(a); a.hasChildNodes();)a.removeChild(a.firstChild);
            a.removeAttribute("src");
            "function" === typeof a.load && a.load()
        }
    };
    u.Lc && (document.createElement("video").constructor.prototype.canPlayType = function (a) {
        return a && -1 != a.toLowerCase().indexOf("video/mp4") ? "maybe" : ""
    });
    u.f = u.r.extend({
        h: function (a, c, d) {
            u.r.call(this, a, c, d);
            var e = c.source;
            d = c.parentEl;
            var g = this.a = u.e("div", {id: a.id() + "_temp_flash"}), j = a.id() + "_flash_api";
            a = a.g;
            var k = u.k.B({
                readyFunction: "videojs.Flash.onReady",
                eventProxyFunction: "videojs.Flash.onEvent",
                errorEventProxyFunction: "videojs.Flash.onError",
                autoplay: a.autoplay,
                preload: a.Ra,
                loop: a.loop,
                muted: a.muted
            }, c.flashVars), q = u.k.B({wmode: "opaque", bgcolor: "#000000"}, c.params), n = u.k.B({
                id: j,
                name: j,
                "class": "vjs-tech"
            }, c.attributes), s;
            e && (e.type && u.f.gd(e.type) ?
                (a = u.f.yc(e.src), k.rtmpConnection = encodeURIComponent(a.qb), k.rtmpStream = encodeURIComponent(a.Mb)) : k.src = encodeURIComponent(u.jc(e.src)));
            this.setCurrentTime = function (a) {
                s = a;
                this.a.vjs_setProperty("currentTime", a)
            };
            this.currentTime = function () {
                return this.seeking() ? s : this.a.vjs_getProperty("currentTime")
            };
            u.yb(g, d);
            c.startTime && this.H(function () {
                this.load();
                this.play();
                this.currentTime(c.startTime)
            });
            u.Tb && this.H(function () {
                u.d(this.u(), "mousemove", u.bind(this, function () {
                    this.C().j({
                        type: "mousemove",
                        bubbles: l
                    })
                }))
            });
            if (c.iFrameMode === f && !u.Tb) {
                var C = u.e("iframe", {
                    id: j + "_iframe",
                    name: j + "_iframe",
                    className: "vjs-tech",
                    scrolling: "no",
                    marginWidth: 0,
                    marginHeight: 0,
                    frameBorder: 0
                });
                k.readyFunction = "ready";
                k.eventProxyFunction = "events";
                k.errorEventProxyFunction = "errors";
                u.d(C, "load", u.bind(this, function () {
                    var a, d = C.contentWindow;
                    a = C.contentDocument ? C.contentDocument : C.contentWindow.document;
                    a.write(u.f.kc(c.swf, k, q, n));
                    d.player = this.c;
                    d.ready = u.bind(this.c, function (c) {
                        var d = this.i;
                        d.a = a.getElementById(c);
                        u.f.pb(d)
                    });
                    d.events = u.bind(this.c, function (a, c) {
                        this && "flash" === this.xa && this.j(c)
                    });
                    d.errors = u.bind(this.c, function (a, c) {
                        u.log("Flash Error", c)
                    })
                }));
                g.parentNode.replaceChild(C, g)
            } else u.f.Zc(c.swf, g, k, q, n)
        }
    });
    t = u.f.prototype;
    t.dispose = function () {
        u.r.prototype.dispose.call(this)
    };
    t.play = function () {
        this.a.vjs_play()
    };
    t.pause = function () {
        this.a.vjs_pause()
    };
    t.src = function (a) {
        u.f.fd(a) ? (a = u.f.yc(a), this.Td(a.qb), this.Ud(a.Mb)) : (a = u.jc(a), this.a.vjs_src(a));
        if (this.c.autoplay()) {
            var c = this;
            setTimeout(function () {
                c.play()
            }, 0)
        }
    };
    t.currentSrc = function () {
        var a = this.a.vjs_getProperty("currentSrc");
        if (a == h) {
            var c = this.Rd(), d = this.Sd();
            c && d && (a = u.f.zd(c, d))
        }
        return a
    };
    t.load = function () {
        this.a.vjs_load()
    };
    t.poster = function () {
        this.a.vjs_getProperty("poster")
    };
    t.buffered = function () {
        return u.sb(0, this.a.vjs_getProperty("buffered"))
    };
    t.Va = r(l);
    t.gc = r(l);
    var R = u.f.prototype, S = "rtmpConnection rtmpStream preload defaultPlaybackRate playbackRate autoplay loop mediaGroup controller controls volume muted defaultMuted".split(" "), T = "error currentSrc networkState readyState seeking initialTime duration startOffsetTime paused played seekable ended videoTracks audioTracks videoWidth videoHeight textTracks".split(" ");

    function fa() {
        var a = S[U], c = a.charAt(0).toUpperCase() + a.slice(1);
        R["set" + c] = function (c) {
            return this.a.vjs_setProperty(a, c)
        }
    }

    function V(a) {
        R[a] = function () {
            return this.a.vjs_getProperty(a)
        }
    }

    var U;
    for (U = 0; U < S.length; U++)V(S[U]), fa();
    for (U = 0; U < T.length; U++)V(T[U]);
    u.f.isSupported = function () {
        return 10 <= u.f.version()[0]
    };
    u.f.nb = function (a) {
        if (!a.type)return "";
        a = a.type.replace(/;.*/, "").toLowerCase();
        if (a in u.f.cd || a in u.f.zc)return "maybe"
    };
    u.f.cd = {"video/flv": "FLV", "video/x-flv": "FLV", "video/mp4": "MP4", "video/m4v": "MP4"};
    u.f.zc = {"rtmp/mp4": "MP4", "rtmp/flv": "FLV"};
    u.f.onReady = function (a) {
        a = u.u(a);
        var c = a.player || a.parentNode.player, d = c.i;
        a.player = c;
        d.a = a;
        u.f.pb(d)
    };
    u.f.pb = function (a) {
        a.u().vjs_getProperty ? a.Wa() : setTimeout(function () {
            u.f.pb(a)
        }, 50)
    };
    u.f.onEvent = function (a, c) {
        u.u(a).player.j(c)
    };
    u.f.onError = function (a, c) {
        u.u(a).player.j("error");
        u.log("Flash Error", c, a)
    };
    u.f.version = function () {
        var a = "0,0,0";
        try {
            a = (new window.ActiveXObject("ShockwaveFlash.ShockwaveFlash")).GetVariable("$version").replace(/\D+/g, ",").match(/^,?(.+),?$/)[1]
        } catch (c) {
            try {
                navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin && (a = (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]).description.replace(/\D+/g, ",").match(/^,?(.+),?$/)[1])
            } catch (d) {
            }
        }
        return a.split(",")
    };
    u.f.Zc = function (a, c, d, e, g) {
        a = u.f.kc(a, d, e, g);
        a = u.e("div", {innerHTML: a}).childNodes[0];
        d = c.parentNode;
        c.parentNode.replaceChild(a, c);
        var j = d.childNodes[0];
        setTimeout(function () {
            j.style.display = "block"
        }, 1E3)
    };
    u.f.kc = function (a, c, d, e) {
        var g = "", j = "", k = "";
        c && u.k.ra(c, function (a, c) {
            g += a + "=" + c + "&amp;"
        });
        d = u.k.B({movie: a, flashvars: g, allowScriptAccess: "always", allowNetworking: "all"}, d);
        u.k.ra(d, function (a, c) {
            j += '<param name="' + a + '" value="' + c + '" />'
        });
        e = u.k.B({data: a, width: "100%", height: "100%"}, e);
        u.k.ra(e, function (a, c) {
            k += a + '="' + c + '" '
        });
        return '<object type="application/x-shockwave-flash"' + k + ">" + j + "</object>"
    };
    u.f.zd = function (a, c) {
        return a + "&" + c
    };
    u.f.yc = function (a) {
        var c = {qb: "", Mb: ""};
        if (!a)return c;
        var d = a.indexOf("&"), e;
        -1 !== d ? e = d + 1 : (d = e = a.lastIndexOf("/") + 1, 0 === d && (d = e = a.length));
        c.qb = a.substring(0, d);
        c.Mb = a.substring(e, a.length);
        return c
    };
    u.f.gd = function (a) {
        return a in u.f.zc
    };
    u.f.Nc = /^rtmp[set]?:\/\//i;
    u.f.fd = function (a) {
        return u.f.Nc.test(a)
    };
    u.Mc = u.b.extend({
        h: function (a, c, d) {
            u.b.call(this, a, c, d);
            if (!a.g.sources || 0 === a.g.sources.length) {
                c = 0;
                for (d = a.g.techOrder; c < d.length; c++) {
                    var e = u.Y(d[c]), g = window.videojs[e];
                    if (g && g.isSupported()) {
                        I(a, e);
                        break
                    }
                }
            } else a.src(a.g.sources)
        }
    });
    u.Player.prototype.textTracks = function () {
        return this.ya = this.ya || []
    };
    function W(a, c, d) {
        for (var e = a.ya, g = 0, j = e.length, k, q; g < j; g++)k = e[g], k.id() === c ? (k.show(), q = k) : d && (k.G() == d && 0 < k.mode()) && k.disable();
        (c = q ? q.G() : d ? d : l) && a.j(c + "trackchange")
    }

    u.w = u.b.extend({
        h: function (a, c) {
            u.b.call(this, a, c);
            this.Q = c.id || "vjs_" + c.kind + "_" + c.language + "_" + u.s++;
            this.vc = c.src;
            this.Wc = c["default"] || c.dflt;
            this.Bd = c.title;
            this.Od = c.srclang;
            this.hd = c.label;
            this.Z = [];
            this.kb = [];
            this.ga = this.ha = 0;
            this.c.d("fullscreenchange", u.bind(this, this.Pc))
        }
    });
    t = u.w.prototype;
    t.G = p("A");
    t.src = p("vc");
    t.tb = p("Wc");
    t.title = p("Bd");
    t.label = p("hd");
    t.Uc = p("Z");
    t.Oc = p("kb");
    t.readyState = p("ha");
    t.mode = p("ga");
    t.Pc = function () {
        this.a.style.fontSize = this.c.isFullScreen() ? 140 * (screen.width / this.c.width()) + "%" : ""
    };
    t.e = function () {
        return u.b.prototype.e.call(this, "div", {className: "vjs-" + this.A + " vjs-text-track"})
    };
    t.show = function () {
        X(this);
        this.ga = 2;
        u.b.prototype.show.call(this)
    };
    t.D = function () {
        X(this);
        this.ga = 1;
        u.b.prototype.D.call(this)
    };
    t.disable = function () {
        2 == this.ga && this.D();
        this.c.o("timeupdate", u.bind(this, this.update, this.Q));
        this.c.o("ended", u.bind(this, this.reset, this.Q));
        this.reset();
        this.c.fa("textTrackDisplay").removeChild(this);
        this.ga = 0
    };
    function X(a) {
        0 === a.ha && a.load();
        0 === a.ga && (a.c.d("timeupdate", u.bind(a, a.update, a.Q)), a.c.d("ended", u.bind(a, a.reset, a.Q)), ("captions" === a.A || "subtitles" === a.A) && a.c.fa("textTrackDisplay").X(a))
    }

    t.load = function () {
        0 === this.ha && (this.ha = 1, u.get(this.vc, u.bind(this, this.pd), u.bind(this, this.Gb)))
    };
    t.Gb = function (a) {
        this.error = a;
        this.ha = 3;
        this.j("error")
    };
    t.pd = function (a) {
        var c, d;
        a = a.split("\n");
        for (var e = "", g = 1, j = a.length; g < j; g++)if (e = u.trim(a[g])) {
            -1 == e.indexOf("--\x3e") ? (c = e, e = u.trim(a[++g])) : c = this.Z.length;
            c = {id: c, index: this.Z.length};
            d = e.split(" --\x3e ");
            c.startTime = Y(d[0]);
            c.sa = Y(d[1]);
            for (d = []; a[++g] && (e = u.trim(a[g]));)d.push(e);
            c.text = d.join("<br/>");
            this.Z.push(c)
        }
        this.ha = 2;
        this.j("loaded")
    };
    function Y(a) {
        var c = a.split(":");
        a = 0;
        var d, e, g;
        3 == c.length ? (d = c[0], e = c[1], c = c[2]) : (d = 0, e = c[0], c = c[1]);
        c = c.split(/\s+/);
        c = c.splice(0, 1)[0];
        c = c.split(/\.|,/);
        g = parseFloat(c[1]);
        c = c[0];
        a += 3600 * parseFloat(d);
        a += 60 * parseFloat(e);
        a += parseFloat(c);
        g && (a += g / 1E3);
        return a
    }

    t.update = function () {
        if (0 < this.Z.length) {
            var a = this.c.currentTime();
            if (this.Lb === b || a < this.Lb || this.Na <= a) {
                var c = this.Z, d = this.c.duration(), e = 0, g = l, j = [], k, q, n, s;
                a >= this.Na || this.Na === b ? s = this.vb !== b ? this.vb : 0 : (g = f, s = this.Cb !== b ? this.Cb : c.length - 1);
                for (; ;) {
                    n = c[s];
                    if (n.sa <= a)e = Math.max(e, n.sa), n.Ha && (n.Ha = l); else if (a < n.startTime) {
                        if (d = Math.min(d, n.startTime), n.Ha && (n.Ha = l), !g)break
                    } else g ? (j.splice(0, 0, n), q === b && (q = s), k = s) : (j.push(n), k === b && (k = s), q = s), d = Math.min(d, n.sa), e = Math.max(e, n.startTime), n.Ha =
                        f;
                    if (g)if (0 === s)break; else s--; else if (s === c.length - 1)break; else s++
                }
                this.kb = j;
                this.Na = d;
                this.Lb = e;
                this.vb = k;
                this.Cb = q;
                a = this.kb;
                c = "";
                d = 0;
                for (e = a.length; d < e; d++)c += '<span class="vjs-tt-cue">' + a[d].text + "</span>";
                this.a.innerHTML = c;
                this.j("cuechange")
            }
        }
    };
    t.reset = function () {
        this.Na = 0;
        this.Lb = this.c.duration();
        this.Cb = this.vb = 0
    };
    u.Rb = u.w.extend();
    u.Rb.prototype.A = "captions";
    u.Yb = u.w.extend();
    u.Yb.prototype.A = "subtitles";
    u.Sb = u.w.extend();
    u.Sb.prototype.A = "chapters";
    u.$b = u.b.extend({
        h: function (a, c, d) {
            u.b.call(this, a, c, d);
            if (a.g.tracks && 0 < a.g.tracks.length) {
                c = this.c;
                a = a.g.tracks;
                var e;
                for (d = 0; d < a.length; d++) {
                    e = a[d];
                    var g = c, j = e.kind, k = e.label, q = e.language, n = e;
                    e = g.ya = g.ya || [];
                    n = n || {};
                    n.kind = j;
                    n.label = k;
                    n.language = q;
                    j = u.Y(j || "subtitles");
                    g = new window.videojs[j + "Track"](g, n);
                    e.push(g)
                }
            }
        }
    });
    u.$b.prototype.e = function () {
        return u.b.prototype.e.call(this, "div", {className: "vjs-text-track-display"})
    };
    u.W = u.M.extend({
        h: function (a, c) {
            var d = this.ba = c.track;
            c.label = d.label();
            c.selected = d.tb();
            u.M.call(this, a, c);
            this.c.d(d.G() + "trackchange", u.bind(this, this.update))
        }
    });
    u.W.prototype.p = function () {
        u.M.prototype.p.call(this);
        W(this.c, this.ba.Q, this.ba.G())
    };
    u.W.prototype.update = function () {
        this.selected(2 == this.ba.mode())
    };
    u.eb = u.W.extend({
        h: function (a, c) {
            c.track = {
                G: function () {
                    return c.kind
                }, C: a, label: function () {
                    return c.kind + " off"
                }, tb: r(l), mode: r(l)
            };
            u.W.call(this, a, c);
            this.selected(f)
        }
    });
    u.eb.prototype.p = function () {
        u.W.prototype.p.call(this);
        W(this.c, this.ba.Q, this.ba.G())
    };
    u.eb.prototype.update = function () {
        for (var a = this.c.textTracks(), c = 0, d = a.length, e, g = f; c < d; c++)e = a[c], e.G() == this.ba.G() && 2 == e.mode() && (g = l);
        this.selected(g)
    };
    u.S = u.R.extend({
        h: function (a, c) {
            u.R.call(this, a, c);
            1 >= this.K.length && this.D()
        }
    });
    u.S.prototype.qa = function () {
        var a = [], c;
        a.push(new u.eb(this.c, {kind: this.A}));
        for (var d = 0; d < this.c.textTracks().length; d++)c = this.c.textTracks()[d], c.G() === this.A && a.push(new u.W(this.c, {track: c}));
        return a
    };
    u.Aa = u.S.extend({
        h: function (a, c, d) {
            u.S.call(this, a, c, d);
            this.a.setAttribute("aria-label", "Captions Menu")
        }
    });
    u.Aa.prototype.A = "captions";
    u.Aa.prototype.oa = "Captions";
    u.Aa.prototype.className = "";
    u.Ga = u.S.extend({
        h: function (a, c, d) {
            u.S.call(this, a, c, d);
            this.a.setAttribute("aria-label", "Subtitles Menu")
        }
    });
    u.Ga.prototype.A = "subtitles";
    u.Ga.prototype.oa = "Subtitles";
    u.Ga.prototype.className = "";
    u.Ba = u.S.extend({
        h: function (a, c, d) {
            u.S.call(this, a, c, d);
            this.a.setAttribute("aria-label", "Chapters Menu")
        }
    });
    t = u.Ba.prototype;
    t.A = "chapters";
    t.oa = "Chapters";
    t.className = "vjs-chapters-button";
    t.qa = function () {
        for (var a = [], c, d = 0; d < this.c.textTracks().length; d++)c = this.c.textTracks()[d], c.G() === this.A && a.push(new u.W(this.c, {track: c}));
        return a
    };
    t.La = function () {
        for (var a = this.c.textTracks(), c = 0, d = a.length, e, g, j = this.K = []; c < d; c++)if (e = a[c], e.G() == this.A && e.tb()) {
            if (2 > e.readyState()) {
                this.Kd = e;
                e.d("loaded", u.bind(this, this.La));
                return
            }
            g = e;
            break
        }
        a = this.ua = new u.la(this.c);
        a.a.appendChild(u.e("li", {className: "vjs-menu-title", innerHTML: u.Y(this.A), Ad: -1}));
        if (g) {
            e = g.Z;
            for (var k, c = 0, d = e.length; c < d; c++)k = e[c], k = new u.Za(this.c, {
                track: g,
                cue: k
            }), j.push(k), a.X(k)
        }
        0 < this.K.length && this.show();
        return a
    };
    u.Za = u.M.extend({
        h: function (a, c) {
            var d = this.ba = c.track, e = this.cue = c.cue, g = a.currentTime();
            c.label = e.text;
            c.selected = e.startTime <= g && g < e.sa;
            u.M.call(this, a, c);
            d.d("cuechange", u.bind(this, this.update))
        }
    });
    u.Za.prototype.p = function () {
        u.M.prototype.p.call(this);
        this.c.currentTime(this.cue.startTime);
        this.update(this.cue.startTime)
    };
    u.Za.prototype.update = function () {
        var a = this.cue, c = this.c.currentTime();
        this.selected(a.startTime <= c && c < a.sa)
    };
    u.k.B(u.Ca.prototype.g.children, {subtitlesButton: {}, captionsButton: {}, chaptersButton: {}});
    if ("undefined" !== typeof window.JSON && "function" === window.JSON.parse)u.JSON = window.JSON; else {
        u.JSON = {};
        var Z = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
        u.JSON.parse = function (a, c) {
            function d(a, e) {
                var k, q, n = a[e];
                if (n && "object" === typeof n)for (k in n)Object.prototype.hasOwnProperty.call(n, k) && (q = d(n, k), q !== b ? n[k] = q : delete n[k]);
                return c.call(a, e, n)
            }

            var e;
            a = String(a);
            Z.lastIndex = 0;
            Z.test(a) && (a = a.replace(Z, function (a) {
                return "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4)
            }));
            if (/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]").replace(/(?:^|:|,)(?:\s*\[)+/g, "")))return e = eval("(" + a + ")"), "function" === typeof c ? d({"": e}, "") : e;
            throw new SyntaxError("JSON.parse(): invalid or malformed JSON data");
        }
    }
    u.cc = function () {
        var a, c, d = document.getElementsByTagName("video");
        if (d && 0 < d.length)for (var e = 0, g = d.length; e < g; e++)if ((c = d[e]) && c.getAttribute)c.player === b && (a = c.getAttribute("data-setup"), a !== h && (a = u.JSON.parse(a || "{}"), videojs(c, a))); else {
            u.lb();
            break
        } else u.Cc || u.lb()
    };
    u.lb = function () {
        setTimeout(u.cc, 1)
    };
    "complete" === document.readyState ? u.Cc = f : u.T(window, "load", function () {
        u.Cc = f
    });
    u.lb();
    u.qd = function (a, c) {
        u.Player.prototype[a] = c
    };
    var ga = this;
    ga.Fd = f;
    function $(a, c) {
        var d = a.split("."), e = ga;
        !(d[0]in e) && e.execScript && e.execScript("var " + d[0]);
        for (var g; d.length && (g = d.shift());)!d.length && c !== b ? e[g] = c : e = e[g] ? e[g] : e[g] = {}
    };
    $("videojs", u);
    $("_V_", u);
    $("videojs.options", u.options);
    $("videojs.players", u.va);
    $("videojs.TOUCH_ENABLED", u.Zb);
    $("videojs.cache", u.pa);
    $("videojs.Component", u.b);
    u.b.prototype.player = u.b.prototype.C;
    u.b.prototype.options = u.b.prototype.options;
    u.b.prototype.init = u.b.prototype.h;
    u.b.prototype.dispose = u.b.prototype.dispose;
    u.b.prototype.createEl = u.b.prototype.e;
    u.b.prototype.contentEl = u.b.prototype.Ka;
    u.b.prototype.el = u.b.prototype.u;
    u.b.prototype.addChild = u.b.prototype.X;
    u.b.prototype.getChild = u.b.prototype.fa;
    u.b.prototype.getChildById = u.b.prototype.dd;
    u.b.prototype.children = u.b.prototype.children;
    u.b.prototype.initChildren = u.b.prototype.mc;
    u.b.prototype.removeChild = u.b.prototype.removeChild;
    u.b.prototype.on = u.b.prototype.d;
    u.b.prototype.off = u.b.prototype.o;
    u.b.prototype.one = u.b.prototype.T;
    u.b.prototype.trigger = u.b.prototype.j;
    u.b.prototype.triggerReady = u.b.prototype.Wa;
    u.b.prototype.show = u.b.prototype.show;
    u.b.prototype.hide = u.b.prototype.D;
    u.b.prototype.width = u.b.prototype.width;
    u.b.prototype.height = u.b.prototype.height;
    u.b.prototype.dimensions = u.b.prototype.Xc;
    u.b.prototype.ready = u.b.prototype.H;
    u.b.prototype.addClass = u.b.prototype.n;
    u.b.prototype.removeClass = u.b.prototype.t;
    u.b.prototype.buildCSSClass = u.b.prototype.P;
    u.Player.prototype.ended = u.Player.prototype.ended;
    $("videojs.MediaLoader", u.Mc);
    $("videojs.TextTrackDisplay", u.$b);
    $("videojs.ControlBar", u.Ca);
    $("videojs.Button", u.q);
    $("videojs.PlayToggle", u.Wb);
    $("videojs.FullscreenToggle", u.Da);
    $("videojs.BigPlayButton", u.Ya);
    $("videojs.LoadingSpinner", u.Ub);
    $("videojs.CurrentTimeDisplay", u.$a);
    $("videojs.DurationDisplay", u.ab);
    $("videojs.TimeDivider", u.ac);
    $("videojs.RemainingTimeDisplay", u.gb);
    $("videojs.Slider", u.N);
    $("videojs.ProgressControl", u.fb);
    $("videojs.SeekBar", u.Xb);
    $("videojs.LoadProgressBar", u.cb);
    $("videojs.PlayProgressBar", u.Vb);
    $("videojs.SeekHandle", u.Fa);
    $("videojs.VolumeControl", u.ib);
    $("videojs.VolumeBar", u.hb);
    $("videojs.VolumeLevel", u.bc);
    $("videojs.VolumeMenuButton", u.ma);
    $("videojs.VolumeHandle", u.jb);
    $("videojs.MuteToggle", u.da);
    $("videojs.PosterImage", u.Ea);
    $("videojs.Menu", u.la);
    $("videojs.MenuItem", u.M);
    $("videojs.MenuButton", u.R);
    u.R.prototype.createItems = u.R.prototype.qa;
    u.S.prototype.createItems = u.S.prototype.qa;
    u.Ba.prototype.createItems = u.Ba.prototype.qa;
    $("videojs.SubtitlesButton", u.Ga);
    $("videojs.CaptionsButton", u.Aa);
    $("videojs.ChaptersButton", u.Ba);
    $("videojs.MediaTechController", u.r);
    u.r.prototype.features = u.r.prototype.m;
    u.r.prototype.m.volumeControl = u.r.prototype.m.Bc;
    u.r.prototype.m.fullscreenResize = u.r.prototype.m.Md;
    u.r.prototype.m.progressEvents = u.r.prototype.m.Qd;
    u.r.prototype.m.timeupdateEvents = u.r.prototype.m.Vd;
    $("videojs.Html5", u.l);
    u.l.Events = u.l.bb;
    u.l.isSupported = u.l.isSupported;
    u.l.canPlaySource = u.l.nb;
    u.l.prototype.setCurrentTime = u.l.prototype.td;
    u.l.prototype.setVolume = u.l.prototype.yd;
    u.l.prototype.setMuted = u.l.prototype.wd;
    u.l.prototype.setPreload = u.l.prototype.xd;
    u.l.prototype.setAutoplay = u.l.prototype.sd;
    u.l.prototype.setLoop = u.l.prototype.vd;
    u.l.prototype.enterFullScreen = u.l.prototype.gc;
    u.l.prototype.exitFullScreen = u.l.prototype.ad;
    $("videojs.Flash", u.f);
    u.f.isSupported = u.f.isSupported;
    u.f.canPlaySource = u.f.nb;
    u.f.onReady = u.f.onReady;
    $("videojs.TextTrack", u.w);
    u.w.prototype.label = u.w.prototype.label;
    u.w.prototype.kind = u.w.prototype.G;
    u.w.prototype.mode = u.w.prototype.mode;
    u.w.prototype.cues = u.w.prototype.Uc;
    u.w.prototype.activeCues = u.w.prototype.Oc;
    $("videojs.CaptionsTrack", u.Rb);
    $("videojs.SubtitlesTrack", u.Yb);
    $("videojs.ChaptersTrack", u.Sb);
    $("videojs.autoSetup", u.cc);
    $("videojs.plugin", u.qd);
    $("videojs.createTimeRange", u.sb);
    $("videojs.util", u.ja);
    u.ja.mergeOptions = u.ja.Fb;
})();

 



转载于:https://www.cnblogs.com/wzzl/p/4990692.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值