Search code examples
javascripthtmlmp3

Is there a javascript way to check if a browser natively supports MP3?


If the browser can play MP3's then I'll use the audio tag to play a file. If not, I'll have to load in a flash player.


Solution

  • var audio  = document.createElement("audio"),
    canPlayMP3 = (typeof audio.canPlayType === "function" &&
                  audio.canPlayType("audio/mpeg;codecs=mp3") !== "");
    

    Edit:

    If you don't want to use JavaScript (yes, this will work in browsers that support <audio> but not MP3), try this:

    <audio controls="controls">
    <source src="some-audio-file.mp3" type="audio/mpeg;codecs=mp3" />
    <!-- if you have an Opus version, also include this:
    <source src="some-audio-file.opus" type="audio/ogg;codecs=opus" />
    -->
    <!-- flash object goes here -->
    </audio>
    

    If you want auto-play, include an autoplay attribute on the audio element.