Skip to content

DotRice/videojs-product

 
 

Repository files navigation

##修改内容

  • 打开sandbox中的demo.html可以直接使用 或者在线访问

  • 所有的样式都是在src/css/custom中进行补充修改的; 由于最开始是在一个gaiamount中开始修改的,所以在样式中都有一个class叫做gaia

###增加了在播放视频格式错误的时候调用flash播放器,改功能主要是在chrome上播放MPG4-VISUAL格式的视频时出现

  • player.js 2240
    //判断当前是否使用的flash播放,如果不是,那么尝试使用flash
    if(this.techName_.toLowerCase() !== 'flash'){
      this.loadTech_('Flash', null);
      this.techCall_('reset');
      return this;
    }

###增加了在没有url地址的时候提示视频正在转码中...

  • control-bar/play-resolutions.js
  var message = '没有播放地址';
  if(videos[idx]){
    message = videos[idx].errorMessage || '视频正在转码中,暂时不能播放...';
  }

### 移除`bigPlayButton` 使用自定义的控制条作为播放控制器。 - player.js ```javascript children: [ 'mediaLoader', 'posterImage', 'textTrackDisplay', 'loadingSpinner', //'bigPlayButton', 'controlBar', 'errorDisplay', 'textTrackSettings' ], ```
    .video-js.show-control .vjs-control-bar{
      display: -webkit-box;
      display: -webkit-flex;
      display: -ms-flexbox;
      display: flex;
      visibility: visible;
      opacity: 1;
      -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;
    }
    <video id="vid1" class="video-js gaia show-control vjs-default-skin " controls preload="auto" width="860" height="482" poster="img/B3.jpg">
      <source src="http://vjs.zencdn.net/v/oceans.mp4" type="video/mp4">
      <source src="http://vjs.zencdn.net/v/oceans.webm" type="video/webm">
      <source src="http://vjs.zencdn.net/v/oceans.ogv" type="video/ogg">
      <p>Video Playback Not Supported</p>
    </video>

增加class show-control,将vjs-control-bar display属性设置为flex.

###time-control 将时间修改为00:00

    //remaining-time-display
  let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();
  let formattedTime = formatTime(time, this.player_.duration());
  let formattedTime1 = formatTime(this.player_.duration());
  this.contentEl_.innerHTML = `<span class="vjs-control-text">${localizedText}</span>${formattedTime} | ${formattedTime1}`;

###分辨率选择 增加分辨率选择组件,play-resolutions.js

调用方式:

  vid1 = videojs('vid1',{
    controlBar: {
      volumeMenuButton: {
        inline: false,
        vertical: true
      },
      PlayResolutions:{
        idx:2,   //默认使用分辨率序号,videos序号 0开始
        videos:[
          {
            name:'2K',
            src:'./m3u8/2K.m3u8',
            type: 'application/vnd.apple.mpegurl'
          },
          {
            name:'1080p',
            src:'./m3u8/1080.m3u8',
            type: 'application/vnd.apple.mpegurl'
          },
          {
            name:'720p',
            src:'./m3u8/720.m3u8',
            type: 'application/vnd.apple.mpegurl'
          },
          {
            name:'480p',
            src:'./m3u8/480.m3u8',
            type: 'application/vnd.apple.mpegurl'
          }
        ]
      }
    }
  });

###长宽比选择 增加长宽比选择组件,play-ratio.js

  PlayerRatio:{
    idx:1,
    ratios:[
      {
        name:'16:9',
        width:'860',
        height:'483'
      },
      {
        name:'4:3',
        width:'860',
        height:'645'
      }
    ]
  }

###logo 在toolbar中增加logo logo-text.js

  LogoText:{
    click:function(){
      console.log('this is logo');
    }
  }

click点击调用函数。

  .video-js.gaia .vjs-logo-control:before{
    border-left: 1px solid #666;
    border-right: none;
    content: '';
    background: url("/favicon.ico") center center no-repeat;
    display: inline-block;
    width: 66px;
    height: 50px;
  }

默认使用favicon图标

###关于hls aes加密下的一个坑

  if (error || !request.response || request.response.byteLength !== 16) {
          key.retries = key.retries || 0;
          key.retries++;
          if (!request.aborted) {
            // try fetching again
            self.fetchKey_(segment);
          }
          return;
        }

注意,如果请求的是一个文件,并且该文件是被IDE进行了修改的。有一些IDE会在文件后面加一个换行符。这回导致这里判断失败。

About

修改videojs源码以实现生产需要

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 94.5%
  • CSS 5.2%
  • Other 0.3%