`
CshBBrain
  • 浏览: 650104 次
  • 性别: Icon_minigender_1
  • 来自: 成都
博客专栏
B7d9bf34-126e-301f-819e-81f2615b5a2a
开源WebSocket服务...
浏览量:144905
Group-logo
HTML5移动开发
浏览量:137853
社区版块
存档分类
最新评论

HTML5开发学习(1):使用aduio标签打造音乐播放器

 
阅读更多

转自:http://www.2cto.com/kf/201203/124944.html

关于html5的炒作已经有一段时间了,小弟亦是个跟风之人,对该新鲜事物也充满好奇和期待。本文为该系列(HTML5尝鲜)第一节,先以一个简单的demo开胃,希望能勾起各位同学对html5的兴趣和关注。

  html5里有一个新标签audio,该标签用以定义声音,比如音乐或其他音频流。
既然audio标签可以播放音频,那我们可以不再使用flash、wmp等其他任何第三方组件,轻而易举的使用纯html来打造一个音乐播放器。

  例子:
<audio src="someaudio.MP3"></audio>

  或
<audio >
<source src="someaudio.MP3"/>

  </audio>

  下面是小弟用audio做的一个音乐播放器的界面,先睹为快:






audio 有几个属性:
          src:String型,所播放音频的 url。
          autoplay:bool型,如果是 true,则音频在就绪后马上播放。默认为false。
          controls:bool型,如果是 true,则向用户显示控件,比如播放按钮。默认为false。
          更多详细属性:http://www.w3school.com.cn/html5/html5_audio.asp
  audio 有几个事件:
          onended:当媒介已抵达结尾时运行脚本,也就是当前歌曲播放完了,这里的“媒介”是指audio标签。
          onloadstart:当浏览器开始加载媒介数据时运行脚本。
          onplay:当媒介数据将要开始播放时运行脚本。这里的“媒介数据”是指播放的文件。
          onplaying:当媒介数据已开始播放时运行脚本。
          onpause:当媒介数据暂停时运行脚本。
          onerror:当加载媒介数据出错时运行的脚本。(w3school不是这样解释的)
          更多详细事件:http://www.w3school.com.cn/html5/html5_ref_eventattributes.asp#Media_Events
 
打造该播放器的完整代码如下:
  HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>无标题页</title>
    <style type="text/css">
    body
    { font-size:13px;
      font-family:宋体;
    }
    #ul_musicList
    {
      width:300px;
      list-style-type:none; 
      margin:5px 0 3px 0;
      padding:0px;  
    }
     #ul_musicList li
     {
          padding:5px;
          border:solid 1px #EEEEEE;
     } 
    </style>
    <script src="Scripts/jquery-1.3.2.js" type="text/javascript"></script>
    <script src="Scripts/MusicBox.js" type="text/javascript"></script>
    <script type="text/javascript">
    var mb=null;
    $().ready(function(){
    mb=new MusicBox();
    mb.init();
    });
    </script>
</head>
<body >
    <div>
  <audio id="musicBox"  controls="true"
    onended="mb.nextMusic()"
    onloadstart="mb.loadStart()"
    onplaying="mb.playing()"
    onpause="mb.pausePaly()"
    onerror="mb.loadError()"
    >
  </audio>
  <br /> <input id="btnNext" type="button" value="下一首" onclick="javascript:mb.nextMusic()"  />
  <span id="sn_status"></span><br />
  <div style=" margin-top:5px">歌曲列表:</div>
    <ul id="ul_musicList"  >
  </ul>
<div style="width:300px; text-align:right">
       播放模式:<select id="slt_playMode">
            <option value="1">全部循环</option>
            <option value="2">单曲循环</option>
        </select>
        </div>
  </div>
</body>


  MusicBox.js
MusicBox=function (){
    var _this=this;
    var  media= document.getElementById("musicBox");
    var  musicFiles=[
                   {name:"犯错",url:"http://www.yandui.com/upload/sound/2009-9-20/20_34_25_953_.mp3"} ,
                   {name:"天使的翅膀",url:"http://www.masradio.com.cn/uploadfile/program/uploadfile/200805/20080522090800196.mp3"},
                   {name:"无名轻音乐",url:"http://audio.ngfiles.com/88000/88260_Zanarkan_Mastered_Piano_Ve.mp3"},
                   {name:"草马之歌",url:"http://www.cnblogs.com"},//错误的资源
                   {name:"相思风雨中",url:"http://www.czopen.com/club/forum/files/247.mp3"}
                   ];
    //当前正在播放的歌曲的索引             
    var index=-1;
    //当前正在播放的歌曲
    var playingFile=null;
    //播放模式
    var playMode=1;
    //下一首
    this.nextMusic=function(){
       if(playMode=="1"){
            index+=1;
        }
        if(index==musicFiles.length){
            index=0;
        }
        playingFile=musicFiles[index];
        media.setAttribute("src",playingFile.url);
        media.play();
        $("#ul_musicList").children().css({"background-color":"#FFF","border":"solid 1px #EEEEEE","color":"#000"});
        $( $("#ul_musicList").children()[index]).css({"background-color":"#2C7DE2","border":"solid 1px #206DDF","color":"#FFF"});
   
    }
    //加载
    this. loadStart=function(){
        $("#sn_status").text("加载中....");
    }
    //播放
    this. playing=function(){
         $("#sn_status").text("当前正在播放:"+playingFile.name);
    }
    //暂停
    this. pausePaly=function(){
         $("#sn_status").text("暂停:"+playingFile.name);
    }
    //加载出错
    this. loadError=function(){
        $("#sn_status").text("加载“"+playingFile.name+"”失败,可能资源不存在~");
    }
    //初始化
    this.init=function(){
        for(var a in musicFiles){
        $("#ul_musicList").append("<li>"+musicFiles[a].name+"</li>");
        }
        _this.nextMusic();
        $("#slt_playMode").change(function(){
        playMode=$("#slt_playMode").val();
        });
    }
}


如果您能在下面看到播放器并听到背景音乐,那说明您当前使用的浏览器支持HTML5 。


示例源码下载(建议使用 Google Chrome测试)http://www.2cto.com/uploadfile/2012/0327/20120327094903323.rar
分享到:
评论

相关推荐

    aduio recognition

    - **框架**:使用深度学习框架(如TensorFlow、PyTorch)构建和训练模型,处理大量的语音数据。 - **数据预处理**:包括去噪、分帧、加窗、梅尔滤波、倒谱变换等步骤,准备输入到模型的特征向量。 - **模型构建**...

    aduio视频监控

    标题中的"aduio视频监控"可能是指一种集成音频处理的视频监控系统,它通过摄像头模块捕获视频信号,并结合音频信息,为用户提供更全面的监控体验。在现代监控技术中,这种结合音频和视频的系统能更好地识别环境变化...

    Android C++高级编程:使用NDK_Onur Cinar, 于红PDF电子书下载 带书签目录 完整版

    Android C++高级编程:使用NDK_Onur Cinar, 于红PDF电子书下载 带书签目录 完整版 原书名:Pro Android C++ with the NDK 原出版社: Apress 作者: (美)Onur Cinar 译者: 于红 佘建伟 冯艳红 丛书名: 移动开发...

    xine-lib-1.1.8.tar.gz_LINUX lib_mpeg-1 aduio lin_xine-0.2.3.ta

    为了优化资源使用,xine-lib允许开发者选择使用硬件加速解码,如果系统支持的话。此外,xine-lib还支持多线程处理,可以在多核处理器上分配解码任务,以减轻单个CPU核心的压力。用户也可以通过调整播放器设置,比如...

    乐果蓝牙音箱固件升级软件F5系列

    这款“乐果F5mini蓝牙音箱官方升级软件”是专门为该型号音箱设计的,用于提升其内部软件版本,确保用户能够获得最佳的音乐体验。 固件,全称为固件(Firmware),是存储在电子设备硬件中的非易失性程序代码,它控制...

    usb aduio class

    文档从2002年9月3日的初版(1.7版本)开始,经历了多次修改和升级,最终在2006年5月31日正式发布。这一过程中,众多参与者如Geert Knapen、Mike Kent、Kaoru Ishimine等,分别在各个修订版本中引入了不同的改进和...

    gupnp-av(aduio&video)

    gupnp is a lib for development digital media controller as a part of DLNA

    element-audio:元素用户界面

    本项目的目的是教你如何实现一个简单的音乐播放器(这并不难) 本项目并不是一个可以用于生产环境的element播放器,所以并没有考虑太多的兼容性问题 本项目不是ElementUI的一个音频插件,只是一个教程,不过你可以...

    ex_aduio.zip_ wm8978 mp3_8978_WM8978 sch_mp3 to wav_stm32 wm8978

    在本项目中,我们关注的是一个使用STM32103微控制器,配合WM8978音频编解码器,实现MP3音频文件解码并播放WAV文件的系统。这个系统涉及到嵌入式开发、音频处理以及文件格式转换等多个IT领域的知识点。 首先,STM...

    预览多个文件

    6. **Aduio预览**:音频文件预览通常以波形图的形式显示,让用户知道音频长度和大致内容,但可能无法播放全音质音频,需使用专业音频播放器。 7. **CHM预览**:CHM是微软的HTML帮助文件,用于软件的帮助文档。预览...

    ESP32-A1S-AudioKit:Ai-Thinker AudioKit Board SDK - 安信可 esp32-a1s 音频模组开发板

    音乐播放器或录音机支持音频格式,例如MP3,AAC,FLAC,WAV,OGG,OPUS,AMR,TS,EQ,Downmixer,Sonic,ALC,G.711 ... 从以下来源播放音乐:HTTP,HLS(HTTP实时流),SPIFFS,SDCARD,A2DP来源,A2DP接收器,...

    ODeus ASIO LinkPro实现网络K歌的方法

    在IT领域,音频接口的选择和使用对于音乐制作和网络K歌体验至关重要。"ODeus ASIO LinkPro"是一款专门针对提升音频传输性能的工具,它允许用户通过虚拟ASIO驱动来扩展声音通道,从而实现专业声卡在网络K歌时的无延迟...

    voice-to-speech:一个为语音转文字而设计的React应用,然后使用内置的浏览器API进行语音转文字

    使用public文件夹 更改HTML 在模块系统之外添加资产 何时使用public文件夹 使用全局变量 添加引导程序使用自定义主题 增加流量 添加路由器 添加自定义环境变量 在HTML中引用环境变量 在Shell中添加临时环境变量 在....

    群晖NAS权限体系介绍.docx

    * Aduio Station:音乐、电台播放和收藏,配合移动端DS audio使用,默认不授权。 * Cloud Sync:可以和各种公有云之间无缝同步,分享文件,默认不授权。 * DSM 操作系统:供用户访问系统使用,默认授权。 * Download...

    IO6下载软件

    标题中的“IO6下载软件”指的是苹果公司的iOS 6操作系统,这是一个针对iPhone、iPad和iPod touch设备的操作系统...5. 在使用这类音频工具时,确保设备的系统版本与工具兼容是至关重要的,以避免可能出现的兼容性问题。

    KX驱动win10

    驱动纯净版是小编为大家分享的一款支持win7/8/10系统的声卡驱动包,驱动可以搭载sam等vst机架支持各种效果一键闪避、电音以及变声等效果。 该驱动可以一步安装到位,无需重启电脑,同时一个驱动完美兼容XP/Win7/Win...

    MD231_OPENAT平台数传模块简介.ppt

    MD231_OPENAT平台是一种基于MD231无线数传硬件模块的二次开发平台,由MobileTech Co. Ltd.设计并提供。该平台的主要目标是简化和加速SMS/GSM/GPRS通信应用的开发过程。MD231_OPENAT的核心在于其提供的OPENAT SDK开发...

    超酷Audio播放软件

    超酷AUDIO播放软件是由三陀工作室开发的,是一个高质量的AUDIO播放软件,占用CPU资源非小功能强大,操作简单,支持歌词秀、SKIN、Plugins(支持播放格式插件和工具插件),还留有接口,外接程序可以完全控制播放器,...

    usb_audio+cdc复合设备驱动.rar

    linux/android 实现uac + cdc串口的复合设备驱动,此驱动基于legacy,即开机无需配置脚本...也可改为使用脚本方式,不编译legacy下的驱动即可,配置usb脚本中功能为acm,uac1.本驱动是基于rk平台实现,理论全平台适用。

    mediastreamer2_book.pdf

    通过学习这本书,开发者不仅可以掌握Mediastreamer2的使用,还能深入理解VoIP和流媒体技术,为创建高效、高质量的语音/视频通信系统打下坚实的基础。书中的内容涵盖了从基础的音频和视频处理,到高级的过滤器开发和...

Global site tag (gtag.js) - Google Analytics