2013-10-29 108 views
2

我使用VideoJs播放器4.2VideoJS播放器覆蓋按鈕

,當我在Safari瀏覽器在iOS設備上打開一個videojs播放器,它在默認情況下適用於本機控件。當我暫停播放器時,我會在視頻上顯示覆蓋按鈕(用於轉到其他頁面的鏈接)。如果我點擊按鈕,它不會在ios中觸發。它在桌面瀏覽器中運行良好。 如果我將nativeControlsForTouch設置爲false,它將顯示自定義控件。這裏的覆蓋按鈕和自定義控件的作品,但它會緩慢,我不能滾動視頻,並會與本機控件相比,不光滑。 請建議我的任何想法

  1. 如果我使用本機控件,然後覆蓋按鈕有工作
  2. 如果我使用自定義的控件,然後與本地對照組相比,視頻播放器會順利

這裏是我的代碼

videojs("ex_video",{"controls":true, "preload":"metadata","width":"auto", "height":"auto", 
     "poster":"/images/test.png"},function(){ 
     var current_player=this; 
     current_player.imageOverlay({ 
      opacity: 0.5, 
      height: '100%', 
      width: '50%' 
     }); 
     current_player.on("pause", function(){ 
     current_player.bigPlayButton.show(); 

     }); 
    current_player.on("play", function(){ 
     current_player.bigPlayButton.hide(); 
    }); 
}); 

覆蓋按鈕代碼

(function(vjs) { 
    var 
    extend = function(obj) { 
    var arg, i, k; 
    for (i = 1; i < arguments.length; i++) { 
    arg = arguments[i]; 
    for (k in arg) { 
     if (arg.hasOwnProperty(k)) { 
     obj[k] = arg[k]; 
     } 
    } 
    } 
return obj; 
}, 

defaults = { 
    image_url: '', 
    click_url: '', 
    start_time: null, 
    end_time: null, 
    opacity: 0.7, 
    height: '15%', 
    width: '100%' 
}, 

imageOverlay = function(options) { 

var player = this, 
    settings = extend({}, defaults, options || {}), 
    showingImage = false; 

if (settings.start_time === null) 
    settings.start_time = 0; 

if (settings.end_time === null) 
    settings.end_time = player.duration() + 1; 

overlay = { 

    showImage: function() { 
    if (showingImage) { 

     return; 
    } 
    showingImage = true; 
    var holderDiv = document.createElement('div'); 
    holderDiv.id = 'vjs-image-overlay-holder'; 
    holderDiv.style.height = settings.height; 
    holderDiv.style.width = settings.width; 
    holderDiv.style.opacity=settings.opacity; 

    var overlayLbl1= document.createElement('label'); 
    overlayLbl1.setAttribute('class','heading-overlay-video'); 
    overlayLbl1.innerHTML= "Like this class? Why not:"; 
    var topVideoP=overlay.createEl(overlayLbl1); 
    topVideoP.className=topVideoP.className+' top-video-control-overlay'; 
    holderDiv.appendChild(topVideoP); 

    //Save to queue 
    var overlayBtn1=document.createElement('button'); 
    overlayBtn1.value = 'Save to queue'; 
    overlayBtn1.innerHTML='Save to queue'; 
    overlayBtn1.setAttribute('class','white medium'); 
    holderDiv.appendChild(overlay.createEl(overlayBtn1)); 

    //Add to series button 
    var overlayBtn2=document.createElement('button'); 
    overlayBtn2.value = 'Add to series'; 
    overlayBtn2.innerHTML='Add to series'; 
    overlayBtn2.setAttribute('class','white medium'); 
    holderDiv.appendChild(overlay.createEl(overlayBtn2)); 

    var overlayLbl2= document.createElement('label'); 
    overlayLbl2.innerHTML= "music credits"; 
    overlayLbl2.setAttribute('class','msg-blue'); 
    var btmVideoP=overlay.createEl(overlayLbl2); 
    btmVideoP.className=btmVideoP.className+' bottom-video-control'; 
    holderDiv.appendChild(btmVideoP); 



    player.el().appendChild(holderDiv); 
    }, 
    hideImage: function() { 
    if (!showingImage) { 
     return; 
    } 
    showingImage = false; 
    player.el().removeChild(document.getElementById('vjs-image-overlay-holder')); 
    }, 
    createEl:function(ele_obj){ 
    var overlayP=document.createElement('p'); 
    overlayP.setAttribute('class','overlay-video-content-in'); 
    overlayP.appendChild(ele_obj); 
    return overlayP ; 
    } 
}; 
var setTimeoutControl; 

player.on('pause', function(){ 
setTimeoutControl= setTimeout(function(){overlay.showImage()},5000); 

}); 
player.on('play', function(){ 
    clearTimeout(setTimeoutControl); 
    overlay.hideImage(); 
});  
}; 
vjs.plugin('imageOverlay', imageOverlay); 
}(window.videojs)); 
+0

顯示您的代碼。你有什麼嘗試? –

回答

1

默認情況下,瀏覽器中的HTML5視頻將在iPod,iPhone中的本地播放器中打開。 你必須在webview中包裝HTML內容,並像原生應用程序一樣運行它,以查看iPod,iPhone中的視頻。

看到這個HTML5 inline video on iPhone vs iPad/Browser

所以這兩個變化也要做HTML

<video id="xxx" width="xx" height="xx" webkit-playsinline> 

對象 -

webview.allowsInlineMediaPlayback = YES; 

在所有其他設備將正常工作與這些

+0

感謝您的迴應,我沒有使用obj-c。它只是一個html5視頻播放器(videojs)。我在視頻標籤中使用了webkit-playsinline,但它不起作用。 – maheshiv

+0

您不能在iPod或帶有自定義控件的iPhone中播放HTML5視頻,除非將其包裝到本機webview並添加這兩個屬性。 – Sarath

+0

你會告訴我一個例子,我怎麼能在javascript中使用webview.allowsInlineMediaPlayback = YES – maheshiv