2012-06-26 35 views
7

HTML5を使用して制作したい動画(13分)があります。私たちはユーザーが再生したいビデオの部分を制御して選択できるようにしたいと考えています。好ましくは、この制御は2つの入力フィールドを介して行われる。最初のボックスで開始時間(秒)を入力し、2番目のボックスで再生する時間(秒)を入力します。たとえば、10秒間ビデオを開始して15秒間再生したい場合があります。これを行うために必要なJavascriptに関する提案やガイダンスはありますか?HTML5ビデオの再生開始位置と再生時間

注:は、私は次の認められません:

しかし、それだけで特定の時間に開始アドレス、および時間の指定された長さのためにビデオを再生すると、何も。

答えて

9

timeupdateイベントリスナーを使用できます。

開始時刻と継続時間をloadedmetadataイベントの後の変数に保存します。

// Set video element to variable 
var video = document.getElementById('player1'); 

var videoStartTime = 0; 
var durationTime = 0; 

video.addEventListener('loadedmetadata', function() { 
    videoStartTime = 2; 
    durationTime = 4; 
    this.currentTime = videoStartTime; 
}, false); 

現在の時刻が開始時刻プラス継続時間を超える場合は、動画を一時停止します。

video.addEventListener('timeupdate', function() { 
    if(this.currentTime > videoStartTime + durationTime){ 
    this.pause(); 
    } 
}); 
+0

私はtimeupdateイベントリスナーの使用に取り組んできましたが、私はそれをうまく動作させることができませんでした。周囲を読んで、videoStartTimeを動作させるためにloadedmetadataイベントリスナーを使用する必要があることがわかりました。 'document.getElementById( 'player1')。addEventListener( 'loadedmetadata'、function(){ var videoStartTime = 2; var durationTime = 4; this.currentTime = videoStartTime; }、false); のdocument.getElementById( 'player1')のaddEventListener( 'timeupdate'、関数(){ IF(this.currentTime> videoStartTime + durationTime){ this.pause();} }、偽); ' –

+0

上のインラインコードをごめんね。私はそれを修正しようとしているし、成功していない。ノブであることに対する謝罪。 –

+0

@chudコメントに改行を入れることはできません。私はあなたの変更を含めるために私の答えを更新しました。それが正しいかどうか確認してください。私は 'timeupdate'関数のスコープ内にある必要があると思うので、' loadedmetadata'イベントの外でvideoStartTimeとdurationTime変数を設定しました。 –

0

Paul Shamが提案したjavascriptソリューションを使用する場合、多くのニュアンスがあります。はるかに簡単な方法は、Media Fragment URI Specを使用することです。それはあなたが再生するより大きいオーディオやビデオファイルの小さなセグメントを指定することができます。これを使用するには、ストリーミングするファイルのソースを変更し、#t=start,endを追加します。ここで、startは開始時間(秒)で、endは終了時間(秒)です。例えば

var start = document.getElementById('startInput').value; 
var end = document.getElementById('endInput').value; 

document.getElementById('videoPlayer').src = 'http://www.example.com/example.ogv#t='+start+','+end; 

これは、指定した時刻に指定された時刻と終了時にソースビデオを開始するためにプレーヤーを更新します。ブラウザのメディアフラグメントもサポートされているので、HTML5をサポートするすべてのブラウザで動作するはずです。

+0

IEではサポートされていません!!!!!! IEではサポートされていません!!!!!! IEではサポートされていません!!!!!! –

+1

@michaelhanon IE 11がそれらをサポートしていることは言うまでもなく、このためにいくつかのポリフィルがあります。 –

+0

@MichaelHanon IEとは何ですか? :p –

8

ビデオURLの設定中にビデオの開始時間と終了時間を設定できる場合は、 あなたはそれが第50秒に20秒から再生されます

src="future technology_n.mp4#t=20,50" 

のようなURL自体に開始時間と終了時間を指定することができます。

+0

IEではサポートされていません!!!!!! –

0

マイケル・ハノンに拡張コメント: IEはbuffered.length = 0とseekable.length = 0.を返します。ビデオは再生されません。だから、解決策:

SRC = "video.mp4#T = 10,30"

はIEで動作しません。あなたがIEの唯一の方法をサポートしたい場合は、JavaScriptを使用して0秒から開始した直後にビデオを探すことです。