【问题标题】:Videojs Player HD Toggle changesVideojs Player HD 切换更改
【发布时间】:2014-10-22 05:07:50
【问题描述】:

我有一个关于videojs的高清切换插件(功能)的问题。如果我单击 HD 按钮,通常 HD 状态处于活动状态。但是我们要加载 HD Source onload 并且 HD Button 状态 (css) 应该处于活动状态。有人可以帮助我们吗?我们制作了一个用于测试的 jsfiddle。你可以在这里找到它 -> http://jsfiddle.net/timokuehne/ps22huvp/

这是我们修改前的代码。我们为自己解决了问题。您可以在下面的答案中找到解决方案。

//Javascript Start

function HDtoggle (noHDsrc,HDsrc) {
         
		 var HD1 = false;
		 /* It is the variable which tells us that that HD video is getting played or not.
			HD1 = false ---> video is not HD
			HD1 = true ----> video is HD */
          
             videojs.HD = videojs.Button.extend({
          /* @constructor */
               init: function(player, options){
                 videojs.Button.call(this, player, options);
                 this.on('click', this.onClick);
               }
             });
            
			/* Changing sources by clicking on HD button */
			/* This function is called when HD button is clicked */
            videojs.HD.prototype.onClick = function() {
         	
         	
         	if (HD1) {  /* If video is not HD */
         var css = document.createElement("style");
         css.type = "text/css";
         css.innerHTML = ".vjs-control.vjs-HD-button { color: silver; font-weight:normal; text-shadow: 0 0 5em #fff;}";
		 /* Changing the HD button to initial styling when we play non HD video by clicking on HD button. */
		 document.body.appendChild(css);
         videojs("example_video_1").src([{type: "video/mp4", src: noHDsrc }]);
		 /* noHDsrc is the url provided in the function arguments */
         videojs("example_video_1").play(); 
		 /* This automatically plays the video when we click on HD button to change the source. */
         HD1 = false;
         }
         else { /* if video is HD */
         var css = document.createElement("style");
         css.type = "text/css";
         css.innerHTML = ".vjs-control.vjs-HD-button { color: #36D8DE; font-weight:bold; text-shadow: 0 0 1em #fff;}";
		 /* This css applies when HD video is played. You can easily change the blue color of HD button by changing the value of color above. If you would like to remove the shadow from HD button, remove text-shadow from above. */
         document.body.appendChild(css);
         videojs("example_video_1").src([{type: "video/mp4", src: HDsrc }]); 
		 /* HDsrc is the url provided in the function arguments. */
         videojs("example_video_1").play(); 
		 /* This automatically plays the video when we  click on HD button to change the source. */
         HD1 = true;
         }
         	
         };
         
		 /* Create HD button */
		 var createHDButton = function() {
               var props = {
                   className: 'vjs-HD-button vjs-control',
                   innerHTML: '<div class="vjs-control-content">' + ('HD') + '</div>', 
                   role: 'button',
                   'aria-live': 'polite', 
                   tabIndex: 0
                 };
               
               return videojs.Component.prototype.createEl(null, props);
             };
         
			/* Add HD button to the control bar */
		var HD;
             videojs.plugin('HD', function() {
               var options = { 'el' : createHDButton() };
               HD = new videojs.HD(this, options);
               this.controlBar.el().appendChild(HD.el());
             });
         
           /* Set Up Video.js Player */
		 var vid = videojs("example_video_1", {
              plugins : { HD : {} }
            });
             
}
    
HDtoggle('https://videolyser.r.worldssl.net/videolyser/1016299/2106393.sd_source.mp4','http://test.journalistenaktivisten.de/video/video1.HDsrc.mp4');
/*CSS Start*/

.vjs-default-skin .vjs-control.vjs-HD-button {
         display: block; 
         font-size: 1.5em;
         line-height: 2;
         position: relative;
         top: 0;
         float:right;
         left: 10px;
         height: 100%;
         text-align: center;
         cursor: pointer;

         }
<!--HTML Start-->

<link href="http://vjs.zencdn.net/4.9/video-js.css" rel="stylesheet"/>
<script src="http://vjs.zencdn.net/4.9/video.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<video id="example_video_1" class="video-js vjs-default-skin vjs-big-play-centered" width="640" height="360" controls>
     <source src="https://videolyser.r.worldssl.net/videolyser/1016299/2106393.sd_source.mp4" type='video/mp4' />
     <source src="http://test.journalistenaktivisten.de/video/video1.HDsrc.mp4" type='video/mp4' />
     
</video>

【问题讨论】:

    标签: javascript css video html5-video


    【解决方案1】:

    我们解决了我们的问题。这是我们更改后的完整代码。你可以点击黑色的“Run Code Snippet Button”查看Action的变化。

    //Javascript Start
    
    function HDtoggle (noHDsrc,HDsrc) {
             
    		 var HD1 = true;
    		 /* It is the variable which tells us that that HD video is getting played or not.
    			HD1 = false ---> video is not HD
    			HD1 = true ----> video is HD */
              
                 videojs.HD = videojs.Button.extend({
              /* @constructor */
                   init: function(player, options){
                     videojs.Button.call(this, player, options);
                     this.on('click', this.onClick);
                   }
                 });
                
    			/* Changing sources by clicking on HD button */
    			/* This function is called when HD button is clicked */
                videojs.HD.prototype.onClick = function() {
      	
             	if (HD1) {  /* If video is not HD */
             var css = document.createElement("style");
             css.type = "text/css";
             css.innerHTML = ".vjs-control.vjs-HD-button { color: silver; font-weight:normal; text-shadow: 0 0 5em #fff;}";
    		 /* Changing the HD button to initial styling when we play non HD video by clicking on HD button. */
    		 document.body.appendChild(css);
             videojs("example_video_1").src([{type: "video/mp4", src: noHDsrc }]);
    		 /* noHDsrc is the url provided in the function arguments */
             videojs("example_video_1").play(); 
    		 /* This automatically plays the video when we click on HD button to change the source. */
             HD1 = false;
             }
             else{ /* if video is HD */
             var css = document.createElement("style");
             css.type = "text/css";
             css.innerHTML = ".vjs-control.vjs-HD-button { color: #36D8DE; font-weight:bold; text-shadow: 0 0 1em #fff;}";
    		 /* This css applies when HD video is played. You can easily change the blue color of HD button by changing the value of color above. If you would like to remove the shadow from HD button, remove text-shadow from above. */
             document.body.appendChild(css);
             videojs("example_video_1").src([{type: "video/mp4", src: HDsrc }]); 
    		 /* HDsrc is the url provided in the function arguments. */
             videojs("example_video_1").play(); 
    		 /* This automatically plays the video when we  click on HD button to change the source. */
             HD1 = true;
             }
             	
             };
             
    		 /* Create HD button */
    		 var createHDButton = function() {
                   var props = {
                       className: 'vjs-HD-button vjs-control',
                       innerHTML: '<div class="vjs-control-content">' + ('HD') + '</div>', 
                       role: 'button',
                       'aria-live': 'polite', 
                       tabIndex: 0
                     };
                   
                   return videojs.Component.prototype.createEl(null, props);
                 };
             
    			/* Add HD button to the control bar */
    		var HD;
                 videojs.plugin('HD', function() {
                   var options = { 'el' : createHDButton() };
                   HD = new videojs.HD(this, options);
                   this.controlBar.el().appendChild(HD.el());
                 });
             
               /* Set Up Video.js Player */
    		 var vid = videojs("example_video_1", {
                  plugins : { HD : {} }
                });
                 
    }
    
    $( document ).ready(function() {
    HDtoggle('https://videolyser.r.worldssl.net/videolyser/1016299/2106393.sd_source.mp4','http://test.journalistenaktivisten.de/video/video1.HDsrc.mp4');
    var css = document.createElement("style");
    css.type = "text/css";
    css.innerHTML = ".vjs-control.vjs-HD-button { color: #36D8DE; font-weight:bold; text-shadow: 0 0 1em #fff;}";
        document.body.appendChild(css);
    });
    /*CSS Start*/
    
    .vjs-default-skin .vjs-control.vjs-HD-button {
             display: block; 
             font-size: 1.5em;
             line-height: 2;
             position: relative;
             top: 0;
             float:right;
             left: 10px;
             height: 100%;
             text-align: center;
             cursor: pointer;
    
             }
    <!--HTML Start-->
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <link href="http://vjs.zencdn.net/4.9/video-js.css" rel="stylesheet"/>
    <script src="http://vjs.zencdn.net/4.9/video.js"></script>
    <video id="example_video_1" class="video-js vjs-default-skin vjs-big-play-centered" width="640" height="360" controls>
    
         <source src="http://test.journalistenaktivisten.de/video/video1.HDsrc.mp4" type='video/mp4' />
         <source src="https://videolyser.r.worldssl.net/videolyser/1016299/2106393.sd_source.mp4" type='video/mp4' />
    </video>

    【讨论】:

      猜你喜欢
      • 2016-03-30
      • 2019-09-07
      • 1970-01-01
      • 2017-10-12
      • 1970-01-01
      • 1970-01-01
      • 2022-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多