Last Updated: July 17, 2017
·
600
· sarmadgardezi

How to Embed YouTube as an Audio Player

How do you embed the audio portion of any YouTube video into your website? An easy option would be that you convert the YouTube video into an MP3 file and upload it to an audio hosting site like Soundcloud. This will work but YouTube is very likely to have a problem with your approach due to copyright issues.
There’s a simpler approach as well that uses the official YouTube API and requires no file conversion.

You can embed any YouTube video in your web pages and visitors on your site will be able to play and pause the video audio with a simple click. With this technique, you can also use a YouTube video as background audio that runs in a loop.

Check out this live demo. It may resemble an embedded audio player but there’s actually this YouTube video that’s playing in the background.

HOW TO EMBED YOUTUBE AUDIO

It takes just one step to embed a YouTube audio. Open any YouTube video and make a note of the YouTube Video ID (a string of 11 characters).
Next copy-paste the code below anywhere on your website and replace VIDEO_ID with actual ID of your YouTube video.

<div data-video="VIDEOID"

data-autoplay="0"

data-loop="1"

id="youtube-audio">
</div>
<script src="https://www.youtube.com/iframe
api"></script>
<script src="https://cdn.rawgit.com/labnol/files/master/yt.js"></script>
There are few other configuration parameters that you can change depending on requirements. For instance, if you set data-autoplay to 1, the audio will begin playing immediately on page load. Likewise, set data-loop to 1 and the audio will play continuously in a never-ending loop until manually stopped.

This internally renders the YouTube video using the IFRAME player and would thus work on both desktop and mobile browsers.

The JavaScript files are hosted on Github while the images are hosted on Imgur. It is recommended that you copy the assets to your own server before deploying on a heavy-traffic website.

YOUTUBE AUDIO – THE TECHNICAL DETAILS

We are using the YouTube JavaScript API that renders a regular YouTube player but with the width and height set to 0 pixels. When the user clicks the audio button, it toggles the existing YouTube player state and the video begins to play or pauses.

Here’s the annotated version of the source code. It can be extended to embed YouTube playlists, the default playback volume can be changed or you even embed a part of the video.
<div data-video = "VIDEO_ID"

data-startseconds = "100"

data-endseconds = "200"

data-height = "480"
data-width = "640"
id = "youtube-player">
</div>

<script src="https://www.youtube.com/iframe_api"></script>
<script type="text/javascript">
  function onYouTubeIframeAPIReady() {
    var ctrlq = document.getElementById("youtube-player");
    var player = new YT.Player('youtube-player', {
      height: ctrlq.dataset.height,
      width: ctrlq.dataset.width,
      events: {
        'onReady': function(e) {
          e.target.cueVideoById({ 
            videoId: ctrlq.dataset.video,
            startSeconds: ctrlq.dataset.startseconds,
            endSeconds: ctrlq.dataset.endseconds
          });
        }
      } 
    }); 
  } 
</script>