ロード時に特定の位置でHTML5ビデオを開始しますか?


91

ある時点で開始するにはHTML5ビデオが必要です。50秒以降の時間としましょう。

試しましたが、期待どおりに動作しませんでした。私が間違っていることはありますか?

コードは次のとおりです。

   <video id="vid1" width="640" height="360">
       <source src="file.webm" type="video/webm" /> 
       Your browser does not support the video tag.
   </video>
   <script>
       document.getElementById('vid1').currentTime = 50;
   </script> 

ページが読み込まれると、最初から再生が始まります。しかし、しばらくしてからのように再生中にこれを呼び出すと、正常に動作します。足りないものはありますか?


2
どのブラウザですか?通話を数ミリ秒遅らせてみましたか?ビデオ要素を完全にロードするのに少し時間がかかるかもしれません
Ortiga

回答:


130

特定の時間を探す前に、ブラウザがビデオの長さを認識するまで待つ必要があります。したがって、次のような「loadedmetadata」イベントを待ちたいと思います。

document.getElementById('vid1').addEventListener('loadedmetadata', function() {
  this.currentTime = 50;
}, false);

2
これはSafariでは機能しません。私もloadeddataイベントを試しました。何か案は?
Simon Perepelitsa 2012年

気にしないで。これはWEBM形式の問題です。MP4は正常に動作します。
Simon Perepelitsa 2012年

'durationchange'イベントを使用し、ビデオの再生に変更を加える前に常に一時停止を呼び出します
Jason White

53

Media Fragments URIと直接リンクでき、ファイル名をfile.webm#t = 50に変更するだけです。

これが例です

これはかなりクールです、あなたはあらゆる種類のことをすることができます。しかし、ブラウザのサポートの現状はわかりません。


ブラウザのサポートは良好です。HTML5をサポートするすべてのブラウザーは、少なくとも基本的な一時的なメディアフラグメントもサポートしていると思います。
ジムS.

@michaelhanon、それを達成するためにIE用のポリフィルを書くのはかなり簡単でしょう。ブラウザを検出し、サポートされていない場合は、URLを
分割し

終了時間を設定するフラグメントはありますか?
dGoiko 2018

ドットの後に数分の1秒も許可されます:#t=17.79^ _ ^
Klesun

51

JavaScriptを使用せずに

#t=[(start_time), (end_time)]メディアURLの最後に追加するだけです。唯一の欠点は(そのように見たい場合)、ビデオが終了時間を示すのにどれくらいの時間がかかるかを知る必要があることです。 例:

<video>
    <source src="splash.mp4#t=10,20" type="video/mp4">
</video>

注: IEではサポートされていません


2桁目は、最初に読み込まれたビデオの量を終了していないようです... 1桁目は機能しました。何かご意見は?
Martian2049 2018年

これは実際にはうまく機能しません。ブラウザはまだ必要なだけプリロードします。おそらく、決定した場所で開始および終了するだけですが、プリロードは停止しませんでした...
Martian2049 2018年

28

html5でビデオタグを使用するときにビデオの開始時間と終了時間を調整します。

http://www.yoursite.com/yourfolder/yourfile.mp4#t=5,15

ここで、コンマの左側は秒単位の開始時間、コンマの右側は秒単位の終了時間です。開始時間のみを有効にするには、コンマと終了時間を削除します。


2桁目は、最初に読み込まれたビデオの量を終了していないようです... 1桁目は機能しました。何かご意見は?
Martian2049 2018年

ブラウザを使用する場合は、W3C仕様とcaniuse.comをチェックして、機能がどの程度広くサポートされているかを確認することをお勧めします。(最良のStackOverflow回答は仕様へのリンクです。)この場合、それらは「メディアフラグメント」と呼ばれ、仕様はここにあります。w3.org/TR/media-frags
Michael Scheper

3

HLSソース用のSafariMacでは、メタデータイベントの代わりにloadeddataイベントを使用する必要がありました。


ロードされたメタデータは正しいイベントであると思われますが、データロードをリッスンしない限り、私もseekable.length 0(OSX上のSafariでのみ)を取得していました。ありがとう
Statuswoe 2015

1
なぜこれが反対票を投じられたのですか?それはおそらくOPによって提供された例に直接関連していませんが、事実上正確であり、質問の一般的な主題に関連しています。
JayPea 2015年

3

#t=10,20フラグメントを使用することは私のために働いた。


1
これは、約5年前に書かれた他の2つの投票数の多い回答の繰り返しです。
Michael Scheper
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.