video要素で読み込んだ動画の長さをJavaScriptで取得しようとして少し詰まったので、実装方法をメモしておきます。
サンプルコード
動画の幅、高さ、長さを取得してみます。
HTML
<div id="video-area"></div>
JavaScript
// videoの埋め込み var video = document.createElement('video'); document.getElementById('video-area').appendChild(video); // 動画のメタデータ読み込み後 video.addEventListener('loadedmetadata', function() { console.group('metadata読み込み後'); console.log('幅:', video.videoWidth); // 640 console.log('高さ:', video.videoHeight); // 360 console.log('長さ:', video.duration); // 12.074376 console.groupEnd(); }); // 動画読み込み video.src = 'movie.mp4'; video.load(); console.group('load直後'); console.log('幅:', video.videoWidth); // 0 console.log('高さ:', video.videoHeight); // 0 console.log('長さ:', video.duration); // NaN console.groupEnd();
動画情報取得のデモページ
最初はload()実行後に取得しようとしていたのですが、loadedmetadataイベントを使ってメタデータ読み込み後でないと取得できないようでした。
【参考サイト】
コメントが承認されるまで時間がかかります。