ブラウザで表示されているVideoの再生をjavascriptで制御します。
ファイルのビデオ再生アプリの作成
ファイルのビデオ再生アプリを次のように作成します。javascriptでの制御については、「HTMLMediaElement」を参考にして作成します。
videoplay/index.html
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous"> <title>動画再生</title> </head> <body> <div class="container"> <div class="row"> <div class="col-6"> <video id="video01" preload="auto" controlsList="nodownload" oncontextmenu="return false;" src="./video/-152740.mp4" type="video/mp4"> </video> <div class="progress"> <div class="progress-bar" role="progressbar" style="width: 0%" aria-valuenow="15" aria-valuemin="0" aria-valuemax="100"></div> </div> <input type="range" class="form-range" id="data-slider"> <button id="play" type="button" class="btn btn-outline-primary">▷</button> <button id="stop" type="button" class="btn btn-outline-primary">||</button> </div> </div> </div> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="js/main.js"></script> </body> </html>
videoplay/js/main.js
let video; let updateBar; let speedvalue = 1 $(function () { video = $('#video01').get(0); $(".progress-bar").attr("style", "width: " + "0%"); }); $('#play').click(function () { console.log("play"); //const newRate = (video.playbackRate + speedvalue).toFixed(1); video.playbackRate = speedvalue; video.play(); updateBar = setInterval(update, 30); }); $('#stop').click(function () { console.log("stop"); window.clearInterval(updateBar); video.pause(); }); $('#data-slider').on('input', function () { let val = $(this).val(); //console.log('data-slider00' + val); let period = video.duration * val / 100 var size = parseInt(period * 100 / video.duration); $(".progress-bar").attr("style", "width: " + size + "%"); playtime = period; video.currentTime = period; }); function update() { console.log("update"); //console.log(video.currentTime); if (!video.ended) { playtime = video.currentTime //console.log('duration: ' + video.duration + ' currentTime: ' + video.currentTime); var size = parseInt(video.currentTime * 100 / video.duration); $(".progress-bar").attr("style", "width: " + size + "%"); } else { playtime = video.currentTime $(".progress-bar").attr("style", "width: " + "100%"); //console.log($(".progress-bar").attr("style")); video.currentTime = 0; playtime = 0; window.clearInterval(updateBar); } }
ファイルのビデオ再生アプリの実行
URL「http://localhost/videoplay/」をアクセスし、再生ボタンやpauseボタンを押すと、画像の再生が制御できます。また、スライダを動かすことにより、ビデオの生成が制御できます。