2017-01-31 4 views
4

私はHTML5ビデオで悩んでいます。私はバニラHTML5に<video>タグを使用して作業したビデオを持って、このような何か:HTML5ビデオカスタム追加のシークバー

<video id="video" width="250" height="250" controls> 
    <source src="video_src.mp4" type="video/mp4"> 
</video> 

すべてが順調です。私が探しているのは、ビデオの最後にシークバーを追加する方法です。シークバーはビデオを表すイメージです。画像の任意の場所をクリックすると、動画がその場所に移動します。

これも、デフォルトのビデオ機能に付属するデフォルトのプログレスバーに加えて機能します。デフォルトのシークバーとカスタムシークバーは同期していなければならないので、一方が更新されたときに他方が動くようにする必要があります。

誰でも正しい方向に向けることができますか?

ありがとうございます!

+0

私は個人的にそれを概念化するために苦労していますが、私はあなたのシークバーの幅間のビデオの合計時間の区分をマップする必要があるだろうと想像することができ、およびクリック特定の場所では、現在の時間とシークバーのそのセクタに割り当てられた時間の差を計算し、ビデオに追加します。 – Crowes

+0

あなたは正しいです@Crowes。私は以下を同じように実装しました。 –

答えて

13

var vid = document.getElementById("video"); 
 
vid.ontimeupdate = function(){ 
 
    var percentage = (vid.currentTime/vid.duration) * 100; 
 
    $("#custom-seekbar span").css("width", percentage+"%"); 
 
}; 
 

 
$("#custom-seekbar").on("click", function(e){ 
 
    var offset = $(this).offset(); 
 
    var left = (e.pageX - offset.left); 
 
    var totalWidth = $("#custom-seekbar").width(); 
 
    var percentage = (left/totalWidth); 
 
    var vidTime = vid.duration * percentage; 
 
    vid.currentTime = vidTime; 
 
});//click()
#custom-seekbar 
 
{ 
 
    cursor: pointer; 
 
    height: 10px; 
 
    margin-bottom: 10px; 
 
    outline: thin solid orange; 
 
    overflow: hidden; 
 
    position: relative; 
 
    width: 400px; 
 
} 
 
#custom-seekbar span 
 
{ 
 
    background-color: orange; 
 
    position: absolute; 
 
    top: 0; 
 
    left: 0; 
 
    height: 10px; 
 
    width: 0px; 
 
} 
 

 
/* following rule is for hiding Stack Overflow's console */ 
 
.as-console-wrapper{ display: none !important;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
 
<div id="custom-seekbar"> 
 
    <span></span> 
 
</div> 
 
<video id="video" width="400" controls autoplay> 
 
    <source src="http://www.w3schools.com/html/mov_bbb.mp4" type="video/mp4"> 
 
</video>

+0

これは素晴らしいです。一番上のカスタムシークバーをクリックしてビデオの位置を変更するにはどうしたらいいですか?今、あなたはデフォルトのバーでしか見つけることができません。 – intl

+1

@intl私はそれを含めるために私の答えを更新しました。これは基本的な実装であり、微調整を行う必要があるかもしれないことに注意してください。 –

+0

パーフェクト。ありがとう、これは非常に便利です。 – intl

関連する問題