videoタグをJavaScriptで色々操作してみます。
対応ブラウザ
videoが対応しているブラウザはこちら。
IE8以下が非対応なので、対応が必要な場合はIE8以下ではFlashにするなどの処理が必要です。
あと、スマホでは自動再生が不可だったり、再生時の挙動が機種によって違ったりなど色々と問題が多いので、対応する場合は注意が必要です。
サンプルコード
HTML
<video id="video" width="480" height="270" controls> <source src="./movie.mp4" type="video/mp4" /> </video> <div id="time"> <span id="currentTime">0</span> / <span id="totalTime">0</span> </div> <div id="control"> <button id="play">play</button> <button id="stop">stop</button> <button id="pause">pause</button> <button id="go">go 10s</button> <button id="back">back 10s</button> <button id="mute">mute</button> <button id="volup">volup</button> <button id="voldown">voldown</button> <button id="rateup">rateup</button> <button id="ratedown">ratedown</button> </div>
JavaScript
// videoの取得 var video = document.getElementById('video'); // 自動再生 video.autoplay = true; // ループ video.loop = true; // 再生状態になったとき video.addEventListener('play', function() { console.log('再生中'); }); // 停止状態になったとき video.addEventListener('pause', function() { console.log('停止中'); }); // 現在の経過時間 var currentTime = document.getElementById('currentTime'); video.addEventListener('timeupdate', function() { currentTime.textContent = Math.floor(video.currentTime); }); // 動画全体の時間 var totalTime = document.getElementById('totalTime'); video.addEventListener('loadedmetadata', function() { totalTime.textContent = Math.floor(video.duration); }); // playボタンを押した時 var play = document.getElementById('play'); play.addEventListener('click', function () { video.play(); }); // stopボタンを押した時 var stop = document.getElementById('stop'); stop.addEventListener('click', function () { video.pause(); video.currentTime = 0; }); // pauseボタンを押した時 var pause = document.getElementById('pause'); pause.addEventListener('click', function () { video.pause(); }); // goボタンを押した時 var go = document.getElementById('go'); go.addEventListener('click', function () { video.currentTime += 10; }); // backボタンを押した時 var back = document.getElementById('back'); back.addEventListener('click', function () { video.currentTime -= 10; }); // muteボタンを押した時 var mute = document.getElementById('mute'); mute.addEventListener('click', function () { if(video.muted){ video.muted = false; }else{ video.muted = true; } }); // volupボタンを押した時 var volup = document.getElementById('volup'); volup.addEventListener('click', function () { video.volume += 0.1; }); // voldownボタンを押した時 var voldown = document.getElementById('voldown'); voldown.addEventListener('click', function () { video.volume -= 0.1; }); // rateupボタンを押した時 var rateup = document.getElementById('rateup'); rateup.addEventListener('click', function () { video.playbackRate = 2; }); // ratedownボタンを押した時 var ratedown = document.getElementById('ratedown'); ratedown.addEventListener('click', function () { video.playbackRate = 0.5; });
video.addEventListener(‘play‘, function() { }); |
再生したときに実行。 |
---|---|
video.addEventListener(‘pause‘, function() { }); |
停止したときに実行。 |
video.addEventListener(‘timeupdate‘, function() { }); |
経過時間が変更されたときに実行。 |
video.addEventListener(‘loadedmetadata‘, function() { }); |
メタデータの読み込みが完了したときに実行。 |
video.autoplay = true; | 自動再生をする。 |
---|---|
video.loop = true; | 動画再生をループする。 |
video.play(); | 動画を再生する。 |
video.pause(); | 動画を停止する。 |
video.currentTime; | 経過時間を返す。 数値を代入することで設定もできる。 |
video.muted; | ミュート状態かどうかを返す。(true/false) trueを代入することでミュート状態にする。 |
video.volume; | ボリューム量を返す(0.0~1.0) 0.0~1.0を代入することでボリュームを変更する。 |
video.playbackRate; | 再生レートを返す。(標準は1.0) 数値を代入することで再生レートの変更。 |
【参考サイト】
- video要素、audio要素をJavaScriptから操作する-HTML5のAPI、および、関連仕様
- HTML5“とか”アプリ開発入門(11):HTML5のvideo/audio+JavaScript APIテクニック – @IT
- HTML5 audioタグでの音源の再生,停止,ミュート,スキップ,初期化,現在の再生時間取得などのまとめ | Stronghold
- Takazudolog – 地獄のvideo/audio要素
- iPhone/Androidブラウザで動画を再生するときのハマりポイントと対処法|U-NOTE [ユーノート]
コメントが承認されるまで時間がかかります。