同事分享的HTML5 实现HTTP地址MP3播放的方案


<audio>标签属性:

 src:音乐的URL

 preload:预加载

 autoplay:自动播放

 loop:循环播放

 controls:浏览器自带的控制条

Html代码  

1.  <audio id="media" src="http://www.abc.com/test.mp3" controls></audio>  

 

获取HTMLAudioElement对象

 

Js代码  

1.  //audio可以直接通过new创建对象  

2.  Media = new Audio("http://www.abc.com/test.mp3");  

3.  //audiovideo都可以通过标签获取对象  

4.  Media = document.getElementById("media");  

 

 

Media方法和属性:

HTMLAudioElement 均继承自HTMLMediaElement

 Js代码  

1.  //错误状态  

2.     Media.error; //null:正常  

3.     Media.error.code; //1.用户终止 2.网络错误 3.解码错误 4.URL无效  

4.    

5.  //网络状态  

6.     Media.currentSrc; //返回当前资源的URL  

7.     Media.src = value; //返回或设置当前资源的URL  

8.     Media.canPlayType(type); //是否能播放某种格式的资源  

9.     Media.networkState; //0.此元素未初始化  1.正常但没有使用网络  2.正在下载数据  3.没有找到资源  

10.    Media.load(); //重新加载src指定的资源  

11.    Media.buffered; //返回已缓冲区域,TimeRanges  

12.    Media.preload; //none:不预载 metadata:预载资源信息 auto:  

13.   

14. //准备状态  

15.    Media.readyState;    //1:HAVE_NOTHING 2:HAVE_METADATA 3.HAVE_CURRENT_DATA 4.HAVE_FUTURE_DATA 5.HAVE_ENOUGH_DATA  

16.    Media.seeking; //是否正在seeking  

17.   

18. //回放状态  

19.    Media.currentTime = value; //当前播放的位置,赋值可改变位置  

20.    Media.startTime; //一般为0,如果为流媒体或者不从0开始的资源,则不为0  

21.    Media.duration; //当前资源长度 流返回无限  

22.    Media.paused; //是否暂停  

23.    Media.defaultPlaybackRate = value;//默认的回放速度,可以设置  

24.    Media.playbackRate = value;//当前播放速度,设置后马上改变  

25.    Media.played; //返回已经播放的区域,TimeRanges,关于此对象见下文  

26.    Media.seekable; //返回可以seek的区域 TimeRanges  

27.    Media.ended; //是否结束  

28.    Media.autoPlay;  //是否自动播放  

29.    Media.loop;  //是否循环播放  

30.    Media.play();    //播放  

31.    Media.pause();   //暂停  

32.   

33. //控制  

34.    Media.controls;//是否有默认控制条  

35.    Media.volume = value; //音量  

36.    Media.muted = value; //静音  

37.   

38.    //TimeRanges(区域)对象  

39.    TimeRanges.length; //区域段数  

40.    TimeRanges.start(index) //index段区域的开始位置  

41.    TimeRanges.end(index) //index段区域的结束位置  

 事件:

Js代码  

1.         eventTester = function(e){  

2.      Media.addEventListener(e,function(){  

3.          console.log((new Date()).getTime(),e);  

4.      });  

5.  }  

6.    

7.  eventTester("loadstart");   //客户端开始请求数据  

8.  eventTester("progress");    //客户端正在请求数据  

9.  eventTester("suspend");     //延迟下载  

10. eventTester("abort");       //客户端主动终止下载(不是因为错误引起),  

11. eventTester("error");       //请求数据时遇到错误  

12. eventTester("stalled");     //网速失速  

13. eventTester("play");        //play()autoplay开始播放时触发  

14. eventTester("pause");       //pause()触发  

15. eventTester("loadedmetadata");  //成功获取资源长度  

16. eventTester("loadeddata");  //  

17. eventTester("waiting");     //等待数据,并非错误  

18. eventTester("playing");     //开始回放  

19. eventTester("canplay");     //可以播放,但中途可能因为加载而暂停  

20. eventTester("canplaythrough"); //可以播放,歌曲全部加载完毕  

21. eventTester("seeking");     //寻找中  

22. eventTester("seeked");      //寻找完毕  

23. eventTester("timeupdate");  //播放时间改变  

24. eventTester("ended");       //播放结束  

25. eventTester("ratechange");  //播放速率改变  

26. eventTester("durationchange");  //资源长度改变  

27. eventTester("volumechange");    //音量改变  

 

 

 

实例代码:

<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml" >

<head>

<metahttp-equiv="Content-Type" content="text/html;charset=gb2312" />

<title>Test</title>

<script>

   window.onload = function(){

       myAudio = new Audio();//这里去掉var从而将myAudio定义到window对象下,这样可以防止在Chrome中被GC回收的可能。

       document.getElementById("audioBox").appendChild(myAudio);

       myAudio.loop = true;// 循环播放

       myAudio.preload = true;// 预加载

       myAudio.controls = true;// 浏览器自带的控制条

       myAudio.src = "http://www.iyoya.com/material/music/mp3/001.mp3";//音乐的URL

       myAudio.addEventListener('ended', playEndedHandler, false);

       myAudio.play();

       function playEndedHandler(e){

           myAudio.play();

           //alert("play again");

       }

   }

</script>

</head>

<body>

   <div id="audioBox"></div>

</body>

</html>

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值