第一篇随笔,写的不好的地方,各位不要见笑。其他的也不多说了,下面是我在工作中用的一个基于JQuery开源的插件,官方地址:http://www.jplayer.org/。先看下要实现的效果图:

首先引用需要的css和js文件:

 <link href="Styles/jplayer.blue.monday.css" rel="stylesheet" type="text/css" />
<script src="Scripts/jquery-1.8.2.js" type="text/javascript"></script>
<script src="Scripts/jquery.jplayer.min.js" type="text/javascript"></script>
<script src="Scripts/jplayer.playlist.min.js" type="text/javascript"></script>
<script src="Scripts/jquery.blockUI.js" type="text/javascript"></script><!--只是模拟加载等待的一个插件-->

接下来就是播放器的布局了,原本是英文的,在这里我只翻译了常用的:

     <!--播放器设计开始-->
<div style="width: 482px; margin: 0px auto 0px auto;">
<div id="jp_container_N" class="jp-video jp-video-270p">
<div class="jp-type-playlist">
<div id="jquery_jplayer_N" class="jp-jplayer">
</div>
<div class="jp-gui">
<div class="jp-interface">
<div class="jp-progress">
<div class="jp-seek-bar">
<div class="jp-play-bar">
</div>
</div>
</div>
<div class="jp-current-time">
</div>
<div class="jp-duration">
</div>
<div class="jp-controls-holder">
<ul class="jp-controls">
<li><a href="javascript:;" class="jp-previous" tabindex="1" title="上一首">上一首</a></li>
<li><a href="javascript:;" class="jp-play" tabindex="1" title="播放">播放</a></li>
<li><a href="javascript:;" class="jp-pause" tabindex="1" title="暂停">暂停</a></li>
<li><a href="javascript:;" class="jp-next" tabindex="1" title="下一首">下一首</a></li>
<li><a href="javascript:;" class="jp-stop" tabindex="1" title="停止">停止</a></li>
<li><a href="javascript:;" class="jp-mute" tabindex="1" title="静音">静音</a></li>
<li><a href="javascript:;" class="jp-unmute" tabindex="1" title="调节音量">调节音量</a></li>
<li><a href="javascript:;" class="jp-volume-max" tabindex="1" title="最大声音">最大声音</a></li>
</ul>
<div class="jp-volume-bar">
<div class="jp-volume-bar-value">
</div>
</div>
<ul class="jp-toggles">
<li><a href="javascript:;" class="jp-shuffle" tabindex="1" title="shuffle">shuffle</a></li>
<li><a href="javascript:;" class="jp-shuffle-off" tabindex="1" title="shuffle off">shuffle
off</a></li>
<li><a href="javascript:;" class="jp-repeat" tabindex="1" title="单曲循环">单曲循环</a></li>
<li><a href="javascript:;" class="jp-repeat-off" tabindex="1" title="关闭单曲循环">关闭单曲循环</a></li>
</ul>
</div>
<div class="jp-title">
<ul>
<li></li>
</ul>
</div>
</div>
</div>
<div class="jp-playlist" style="height: 500px; overflow-y: auto;">
<ul>
<!-- The method Playlist.displayPlaylist() uses this unordered list -->
<li></li>
</ul>
<div id='divButton' style='width: 103px; height: 30px; margin: 230px auto 200px auto;
display: none;'>
</div>
</div>
<div class="jp-no-solution">
<span>Update Required</span> To play the media you will need to either update your
browser to a recent version or update your <a href="http://get.adobe.com/flashplayer/"
target="_blank">Flash plugin</a>.
</div>
</div>
</div>
</div>
<!--播放器设计结束-->

再来看一下运行的效果图:

然后就是将磁盘的歌曲添加到列表中,我是通过ajax请求将本地歌曲库的所有歌曲重新复制一遍到项目的一个存取歌曲的文件夹中。那先看下js代码:

     <script type="text/javascript">
var mTitle, mArtist, path = "";
var myPlaylist = new jPlayerPlaylist();
$(function () {
myPlaylist = new jPlayerPlaylist({
jPlayer: "#jquery_jplayer_N",
cssSelectorAncestor: "#jp_container_N"
}, [
], {
playlistOptions: {
enableRemoveControls: true
},
swfPath: "Scripts",
supplied: "mp3",
wmode: "window"
});
$("#divButton").html("<input type='button' id='btnSearchMusic' value='单击获取歌曲' style='border:1px solid #48C9EF; background:#48C9EF; cursor:pointer; color:#fff; height:30px;' />").show();
$("#btnSearchMusic").click(function () {
$.blockUI({ message: '<h2>正在加载歌曲,请稍候。。。</h2>' });
$("#divButton").hide();
myPlaylist.remove();
$.ajax({
url: "play.ashx?action=GetResourceLists",
cache: false,
success: function (data) {
var json = eval("(" + data + ")");
if (json.length > 0) {
for (var i = 0; i < json.length; i++) {
var fileName = json[i].OriginalPath;
path = json[i].FullPath;
var singer = fileName.substring(9, fileName.length);
mArtist = singer.substring(0, singer.indexOf("-"));
var song = singer.substring(0, singer.lastIndexOf("."));
mTitle = song.substring(song.lastIndexOf("-") + 1);
//console.log(mArtist);
myPlaylist.add({
title: mTitle,
artist: mArtist,
free: true,
mp3: "http://localhost:3881/MiniPlay/Resources/" + encodeURI(singer)
});
}
}
}
});
$.unblockUI();
});
});
</script>

下面是ashx(一般处理程序)的关键代码:

     //转换json格式
public string FormatJson(int count, List<FileInfo> list)
{
string str = "";
DataContractJsonSerializer json = new DataContractJsonSerializer(list.GetType());
using (MemoryStream ms = new MemoryStream())
{
json.WriteObject(ms, list);
str = Encoding.UTF8.GetString(ms.ToArray());
}
return str;
} //获取所有文件
public void GetResourceLists(HttpContext context)
{
List<FileInfo> files = new List<FileInfo>();
if (File.Exists(context.Server.MapPath(@"~/config.ini")))
{
StreamReader strReader = new StreamReader(context.Server.MapPath(@"~/config.ini"));
var path = strReader.ReadToEnd().Substring();
strReader.Close();
var localFileLists = Directory.GetFiles(path);
var targetPath = context.Server.MapPath(@"~/Resources");
if (!Directory.Exists(targetPath))
{
Directory.CreateDirectory(targetPath);
}
if (localFileLists.Count() > )
{
foreach (var counts in localFileLists)
{
if (counts.Substring(counts.LastIndexOf(".")) == ".mp3")
{
if (!File.Exists(Path.Combine(targetPath, Path.GetFileName(counts)))) //如果目标存在该文件,不复制
{
File.Copy(counts, Path.Combine(targetPath, Path.GetFileName(counts)));
}
files.Add(new FileInfo(counts));
}
}
context.Response.Write(FormatJson(files.Count(), files));
}
}
else
{
context.Response.Write("no exist");
}
}

到这里,要实现上面的功能基本已经完成了!

原文地址:http://www.cnblogs.com/JasonLong/p/jplayer-mp3.html

JPlayer-MP3播放器(带播放列表)的更多相关文章

  1. 嵌入式mp3播放器

    分四部分:按键驱动,声卡驱动,Madplay播放器移植,MP3主播放器处理 按键1:播放,按键2:停止,按键3:上一曲,按键4:下一曲 UA1341内核自带声卡驱动 .解压内核: tar zxvf l ...

  2. 你用java的swing可以做出这么炫的mp3播放器吗?

    这个mp3播放器是基于java的swing编写的,我认为界面还是可以拿出来和大家看一看评一评. 先说说创作的初衷,由于前段时间工作不是很忙,与其闲着,还不如找一些东西来给自己捣腾捣腾,在 之前写的 j ...

  3. 安卓MP3播放器开发实例(1)之音乐列表界面

    学习安卓开发有一年了,想想这一年的努力,确实也收获了不少.也找到了比較如意的工作. 今天准备分享一个以前在初学阶段练习的一个项目.通过这个项目我真正的找到了开发安卓软件的感觉,从此逐渐步入安卓开发的正 ...

  4. x宝23大洋包邮的老式大朝华MP3播放器简单评测

    (纯兴趣测评,非广告) 最近逛X宝,看到了这个古董级MP3播放器居然还在售,于是脑抽+情怀泛滥买了一个. 然后呢,从遥远的深圳跨越好几千公里邮过来了这个玩意: 那节南孚5号电池是我自己的,是为了对比一 ...

  5. C# wave mp3 播放器探寻

    C# wave mp3 播放器探寻   最近无聊,想听听歌曲.可怜新电脑上歌曲就两三首,要听其它的就得在旧电脑上播放.可是,那台古董但不失健壮的本本被老婆无情的霸占了.无奈. 思来想去,得,写个程序播 ...

  6. 团队编程--MP3播放器

    设计思路: 这次的作业是一个MP3播放器,它是一个团队项目.由于我们都没接触过这类的编程.刚开始的时候我们是不知道从什么地方着手的.经过我们的商量我们决定从现在市场主流的音乐播放器上找到几个主要的功能 ...

  7. MP3播放器团队项目

    一.设计思路 程序要求能播放MP3文件,因此需调用库中的播放方法:右键工具箱选择项,添加com组件,选择window media player后工具箱就会多一个控件,然后拖到窗体中就OK了.另在窗体中 ...

  8. 你也可以用java的swing可以做出这么炫的mp3播放器_源码下载

    I had published the blog : 你用java的swing可以做出这么炫的mp3播放器吗? and to display some screenshots about this M ...

  9. MP3播放器的实现

    今天,基本上实现了MP3播放器的基本功能,现在总结一下. 首先,下载服务器端的MP3列表,这里用到了下载技术和解析XML文件技术. 下载参考(http://blog.csdn.net/huim_lin ...

  10. 开源mp3播放器--madplay 编译和移植 简记

    madplay是一款开源的mp3播放器. http://madplay.sourcearchive.com/ 下面简单记录一下madplay的编译与移植到ARM开发板上的过程 一.编译x86版本的ma ...

随机推荐

  1. js课程 1-3 Javascript变量类型详解

    js课程 1-3  Javascript变量类型详解 一.总结 一句话总结:js对象点(属性方法),json对象冒号(属性方法).属性和方法区别只有一个括号. 1.json对象中的函数的使用? 函数名 ...

  2. php实现 求int型数据在内存中存储时1的个数(函数都可自己实现)

    php实现 求int型数据在内存中存储时1的个数(函数都可自己实现) 一.总结 一句话总结:函数我们自己都可以实现,尤其是很多基础函数,没有工具的时候自己写. 1.php进制转换函数? base_co ...

  3. web报表工具FineReport经常使用函数的使用方法总结(文本函数)

    文本函数 CHAR CHAR(number):依据指定数字返回相应的字符.CHAR函数可将计算机其它类型的数字代码转换为字符. Number:用于指定字符的数字,介于1Number:用于指定字符的数字 ...

  4. [tmux] Create collections of panes using tmux windows

    In tmux, a window is a collection of panes. Creating multiple windows is a great way to organize you ...

  5. CSU1323: ZZY and his little friends

    Description zzy养了一只小怪兽和N只凹凸曼,单挑的话每只凹凸曼都不是小怪兽的对手,所以必须由两只凹凸曼合作来和小怪兽战斗.凹凸曼A和凹凸曼B合作的战斗力为他们战斗力的异或值.现在由zzy ...

  6. SharePoint Permission Analyzer 权限分析仪

    SharePoint Permission Analyzer 权限分析仪         这是一个很好的应用,为了分析SharePoint权限.它会扫描整个网站集,建一个站点的权限架构.       ...

  7. java读取.properties文件乱码

    1.config.properties文件写不进中文,写进去都变成了unicode,解决的方法是右键该文件--Properties--Resource--Text file encoding ,选ot ...

  8. cxf maven 依赖 No message body writer foud.. contenttype:application/json

    最近使用cxf发布rest服务时遇到了如题的异常,最后发现是缺少依赖的问题.ps:我并没有使用spring cxf基本运行需要如下依赖 1 <dependency> <groupId ...

  9. PostThreadMessage发送进程间消息(对话框向控制台发消息,控制台也可有消息循环)

    函数原型 BOOL PostThreadMessage( DWORD idThread, UINT Msg, WPARAM wParam, LPARAM lParam ); 1 2 3 4 5 6 T ...

  10. git撤销操作总结

    git checkout . #本地所有修改的.没有的提交的,都返回到原来的状态 git stash #把所有没有提交的修改暂存到stash里面.可用git stash pop回复. git rese ...