カスタム インターフェースを使用して HTML5 ビデオ プレーヤーの構築に取り組んでいますが、ビデオの長さの情報を表示するのに問題があります。
私の HTML は単純です:
<video id="video" poster="image.jpg" controls>
<source src="video_path.mp4" type="video/mp4" />
<source src="video_path.ogv" type="video/ogg" />
</video>
<ul class="controls">
<li class="time"><p><span id="timer">0</span> of <span id="duration">0</span></p></li>
</ul>
そして、期間を取得して挿入するために使用しているjavascriptは
var duration = $('#duration').get(0);
var vid_duration = Math.round(video.duration);
duration.firstChild.nodeValue = vid_duration;
問題は、何も起こらないことです。デフォルトのコントロールをそのまま使用すると問題なく表示されるため、動画ファイルに継続時間データがあることはわかっています。
しかし、本当に奇妙なのは、私のコードに alert(duration) を入れた場合です
alert(duration);
var vid_duration = Math.round(video.duration);
duration.firstChild.nodeValue = vid_duration;
その後、正常に動作します(ポップアップする迷惑なアラートは除きます)。ここで何が起こっているのか、またはどうすれば修正できるのでしょうか?
更新: この問題を正確に解決したわけではありませんが、私の最大の懸念であるユーザー エクスペリエンスを処理する回避策を見つけました。
まず、視聴者が再生ボタンを押すまでビデオの読み込みが開始されないため、期間情報を取得できなかったと想定しています (この特定の問題を修正する方法はわかりません...ビデオとは別にビデオのメタデータをロードするだけで済むと思いますが、それが可能かどうかさえわかりません)。
そこで、デュレーション データがないという事実を回避するために、再生ボタンを押すまで、デュレーション情報 (および実際にはコントロール全体) を完全に非表示にすることにしました。
とはいえ、ビデオ ファイルとは別にビデオ メタデータを読み込む方法を知っている人がいる場合は、共有してください。私はそれがこの問題を完全に解決するはずだと思います。