JS使用AudioContext播放音乐

笔记心得 0
window.AudioContext = window.AudioContext || window.webkitAudioContext || window.mozAudioContext || window.msAudioContext;
try {
  var context = new window.AudioContext();
  var source = null;
  var audioBuffer = null;
  function stopSound() {
    if ( source ) {
      source.stop( 0 ); //立即停止
    }
  }
  function playSound() {
    source = context.createBufferSource();
    source.buffer = audioBuffer;
    source.loop = true; //循环播放
    source.connect( context.destination );
    source.start( 0 ); //立即播放
  }
  function initSound( arrayBuffer ) {
    context.decodeAudioData( arrayBuffer, function( buffer ) { //解码成功时的回调函数
      audioBuffer = buffer;
      playSound();
    }, function( e ) { //解码出错时的回调函数
      console.log( 'Error decoding file', e );
    } );
  }
  function loadAudioFile( url ) {
    var xhr = new XMLHttpRequest(); //通过XHR下载音频文件
    xhr.open( 'GET', url, true );
    xhr.responseType = 'arraybuffer';
    xhr.onload = function( e ) { //下载完成
      initSound( this.response );
    };
    xhr.send();
  }
  loadAudioFile( '../Content/public/mp3/music2.mp3' );
  $( "#stop" ).click( function() {
    stopSound();
  } );
} catch ( e ) {
  console.log( '!Your browser does not support AudioContext' );
}