<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>HTML5 Audio Sample1</title> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous"> <style> footer{ text-align:right; font-size:12px; } #btn-play{ width:100px; height:40px; padding:10px; font-size:18px; } </style> </head> <body> <audio type="audio/mpeg" src="op.mp3"></audio> <button id="btn_play">再生</button> <button id="btn_pause">一時停止</button> <p><time id="playback_position">0:30</time><input type="range" id="progress" value="0" min="0" step="1"><time id="end_position">1:24</time></p> <script type="text/javascript"> window.onload = function() { const btn_play = document.getElementById("btn_play"); const btn_pause = document.getElementById("btn_pause"); const playback_position = document.getElementById("playback_position"); const end_position = document.getElementById("end_position"); const slider_progress = document.getElementById("progress"); const audioElement = document.querySelector("audio"); var playtimer = null; // 再生開始したときに実行 const startTimer = function(){ playtimer = setInterval(function(){ playback_position.textContent = convertTime(audioElement.currentTime); slider_progress.value = Math.floor( (audioElement.currentTime / audioElement.duration) * audioElement.duration); }, 500); }; // 停止したときに実行 const stopTimer = function(){ clearInterval(playtimer); playback_position.textContent = convertTime(audioElement.currentTime); }; // 再生時間の表記を「mm:ss」に整える const convertTime = function(time_position) { time_position = Math.floor(time_position); var res = null; if( 60 <= time_position ) { res = Math.floor(time_position / 60); res += ":" + Math.floor(time_position % 60).toString().padStart( 2, '0'); } else { res = "0:" + Math.floor(time_position % 60).toString().padStart( 2, '0'); } return res; }; // 音声ファイルの再生準備が整ったときに実行 audioElement.addEventListener('loadeddata', (e)=> { slider_progress.max = audioElement.duration; playback_position.textContent = convertTime(audioElement.currentTime); end_position.textContent = convertTime(audioElement.duration); }); // 音声ファイルが最後まで再生されたときに実行 audioElement.addEventListener("ended", e => { stopTimer(); }); // 再生ボタンが押されたときに実行 btn_play.addEventListener("click", e => { var time = 30 audioElement.currentTime=time; audioElement.play(); startTimer(); }); // 一時停止ボタンが押されたときに実行 btn_pause.addEventListener("click", e => { audioElement.pause(); stopTimer(); }); // プログレスバーが操作されたときに実行(メモリを動かしているとき) slider_progress.addEventListener("input", e => { stopTimer(); audioElement.currentTime = slider_progress.value; }); // プログレスバーが操作完了したときに実行 slider_progress.addEventListener("change", e => { startTimer(); }); }; </script> </body> </html>