JSFiddle - React, Tailwind, and code Playground

by kougiland

HTML

<header>
    <audio src="http://ak-media.soundcloud.com/lhyfRN8ZwwoR.128.mp3?AWSAccessKeyId=AKIAJ4IAZE5EOI7PA7VQ&Expires=1354509068&Signature=7C6gHmgE7ylfT070Eb8yfVH1s%2FM%3D&__gda__=1354509068_fc789a17429aa1eb51f9415d394355ed" id="audio" controls></audio>
    <input type="range" step="any" id="seekbar"></input>
  
    <p id=time>
     
    </p>

</header>

JavaScript

var audio = document.getElementById("audio");

    var seekbar = document.getElementById('seekbar');
    function setupSeekbar() {
      seekbar.min = audio.startTime;
      seekbar.max = audio.startTime + audio.duration;
    }
    audio.ondurationchange = setupSeekbar;

    function seekAudio() {
      audio.currentTime = seekbar.value;
    }

    function updateUI() {
      var lastBuffered = audio.buffered.end(audio.buffered.length-1);
      seekbar.min = audio.startTime;
      seekbar.max = lastBuffered;
      seekbar.value = audio.currentTime;
      var s = parseInt(audio.currentTime % 60);
      var m = parseInt((audio.currentTime / 60) % 60); 
      if (m < 10) m = '0' + m; 
      if (s < 10) s = '0' + s;
      document.getElementById('time').innerHTML = m + ':' + s ;
    }

    seekbar.onchange = seekAudio;
    audio.ontimeupdate = updateUI;


    audio.addEventListener('durationchange', setupSeekbar);
    audio.addEventListener('timeupdate', updateUI);