DEV Community

Sh Raj
Sh Raj

Posted on

Creating a Custom JavaScript Audio Player with CDN Integration

Sure, I can help you create a custom JavaScript audio player that can be integrated with an HTML5 audio tag. Here are the steps you can follow:

  1. First, you need to create the basic HTML structure for the audio player. You can create a container element for the player and add the necessary controls like play, pause, volume, and progress bar.
<div id="audio-player">
  <audio id="audio" src="" controls></audio>
  <div id="controls">
    <button id="play-button"></button>
    <button id="pause-button"></button>
    <div id="volume-slider">
      <input type="range" min="0" max="100" value="100" step="1" id="volume-range">
    </div>
    <div id="progress-bar">
      <div id="progress"></div>
    </div>
  </div>
</div>
Enter fullscreen mode Exit fullscreen mode
  1. Add some styles to the player using CSS. You can customize the look and feel of the player according to your preference.
#audio-player {
  width: 100%;
  height: 60px;
  background-color: #f4f4f4;
  border-radius: 5px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 20px;
}

#audio-player #controls {
  display: flex;
  align-items: center;
}

#audio-player #controls button {
  width: 40px;
  height: 40px;
  background-color: transparent;
  border: none;
  margin-right: 10px;
  background-size: cover;
  cursor: pointer;
}

#audio-player #controls button#play-button {
  background-image: url('play.svg');
}

#audio-player #controls button#pause-button {
  background-image: url('pause.svg');
}

#audio-player #volume-slider {
  width: 100px;
  margin-right: 10px;
}

#audio-player #volume-range {
  width: 100%;
}

#audio-player #progress-bar {
  height: 4px;
  width: 100%;
  background-color: #ccc;
  position: relative;
}

#audio-player #progress {
  height: 4px;
  width: 0%;
  background-color: #333;
  position: absolute;
  top: 0;
  left: 0;
}
Enter fullscreen mode Exit fullscreen mode
  1. Now, you can start writing your JavaScript code to handle the audio player controls. You can add event listeners to the play and pause buttons to start and stop the audio respectively.
const audio = document.getElementById('audio');
const playButton = document.getElementById('play-button');
const pauseButton = document.getElementById('pause-button');

playButton.addEventListener('click', () => {
  audio.play();
});

pauseButton.addEventListener('click', () => {
  audio.pause();
});
Enter fullscreen mode Exit fullscreen mode
  1. You can also add an event listener to the volume range input to adjust the volume of the audio.
const volumeRange = document.getElementById('volume-range');

volumeRange.addEventListener('input', () => {
  audio.volume = volumeRange.value / 100;
});
Enter fullscreen mode Exit fullscreen mode
  1. Finally, you can add an event listener to the audio element to update the progress bar when the audio is playing.
const progress = document.getElementById('progress');

audio.addEventListener('timeupdate', () => {
  const { currentTime, duration } = audio;
  const progressPercent = (currentTime / duration) * 100;
  progress.style.width = `${progressPercent}%`;
});
Enter fullscreen mode Exit fullscreen mode

That's it! You now have a custom JavaScript audio player that can be integrated with CDN and replace the default audio tag with your custom audio player. Here's how you can do it:

  1. Upload your JavaScript file and any necessary assets like icons and images to a CDN. You can use a service like AWS S3, Cloudflare, or GitHub Pages to host your files.

  2. Add a script tag to your HTML file that loads your JavaScript file from the CDN. Make sure to add the defer attribute to ensure that the audio player is loaded after the HTML content.

<script src="https://your-cdn-url.com/your-audio-player.js" defer></script>
Enter fullscreen mode Exit fullscreen mode
  1. Replace any audio tags in your HTML with your custom audio player using JavaScript. You can use the querySelectorAll method to select all audio tags on the page and then loop through them to create a new audio player for each one.
const audioTags = document.querySelectorAll('audio');

audioTags.forEach(audioTag => {
  const audioPlayer = document.createElement('div');
  audioPlayer.innerHTML = `
    <audio src="${audioTag.src}" controls></audio>
    <div id="controls">
      <button id="play-button"></button>
      <button id="pause-button"></button>
      <div id="volume-slider">
        <input type="range" min="0" max="100" value="100" step="1" id="volume-range">
      </div>
      <div id="progress-bar">
        <div id="progress"></div>
      </div>
    </div>
  `;
  audioTag.parentNode.replaceChild(audioPlayer, audioTag);
});
Enter fullscreen mode Exit fullscreen mode

That's it! You now have a custom JavaScript audio player that can be easily integrated with any HTML page using a CDN. You can further customize the player by adding more controls or styling the player using CSS.

Top comments (0)