登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

梦想之鹰的天空

天高任鸟飞......放飞....心情..........放飞.....梦想

 
 
 

日志

 
 

使用jQuery插件设计在线音乐播放器  

2011-05-11 16:56:06|  分类: 程序设计 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
jQuery的确是十分强大的工具,在网页上,你甚至可以用它配合其他jQuery插件设计一款在线网页播放器。本文就介绍了如何使用PHP,CSS和jQuery及一个开源的jQuery插件jPlayer,设计一个简单的在线网页音乐播放器。

  一、准备数据库

  首先,我们设计MYSQL数据库如下:

CREATE TABLE `songs` (
`song_id`
int(11) NOT NULL AUTO_INCREMENT,
`url` varchar(
500) NOT NULL,
`artist` varchar(
250) NOT NULL,
`title` varchar(
250) NOT NULL,
PRIMARY KEY (`song_id`)
) ENGINE
=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

  这里,url字段表示是mp3音乐的存放地址,artist是歌曲的演唱者,title是歌曲的名称。我们再加入一些样例数据,如下:

INSERT INTO `songs` (`song_id`, `url`, `artist`, `title`) VALUES ('', 'http://mysongs.com/songurl.mp3', 'Artist name', 'Song name');
INSERT INTO `songs` (`song_id`, `url`, `artist`, `title`) VALUES (
'', 'http://mysongs.com/anothersongurl.mp3', 'Another artist', 'Another song');
INSERT INTO `songs` (`song_id`, `url`, `artist`, `title`) VALUES (
'', 'http://mysongs.com/onemoresongurl.mp3', 'One more artist', 'One more song');

  二、设计HTML页面

  在完成数据库的设计后,我们就可以开始设计HTML页面了。这里我们首先要下载jQuery的一个音乐播放插件jPlayer(http://jplayer.org/)。把下载下来的包解压缩后,把js和skin两个文件夹的内容放到你的应用的根目录下,它们是要用到的javascript文件和CSS样式应用文件。现在可以开始设计HTML页了,把文件命名为demo.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' lang='en' xml:lang='en'>
<head>
<title>Online radio using jQuery</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<link href="skin/jplayer.blue.monday.css" rel="stylesheet" type="text/css" />

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.jplayer.min.js"></script>
</head>

<body>
<div id="jquery_jplayer_1" class="jp-jplayer"></div>
<div class="jp-audio">
<div class="jp-type-single">
<div id="jp_interface_1" class="jp-interface">
<ul class="jp-controls">
<li><a href="#" class="jp-play" tabindex="1">play</a></li>
<li><a href="#" class="jp-pause" tabindex="1">pause</a></li>
<li><a href="#" class="jp-stop" tabindex="1">stop</a></li>
<li><a href="#" class="jp-mute" tabindex="1">mute</a></li>
<li><a href="#" class="jp-unmute" tabindex="1">unmute</a></li>
</ul>

<div class="jp-progress">
<div class="jp-seek-bar">
<div class="jp-play-bar"></div>
</div>
</div>

<div class="jp-volume-bar">
<div class="jp-volume-bar-value"></div>
</div>

<div class="jp-current-time"></div>
<div class="jp-duration"></div>
</div>

<div id="jp_playlist_1" class="jp-playlist">
<ul>
<li><strong id="artist">Artist</strong> - <span id="songname">Song name</span></li>
</ul>
</div>
</div>
</div>
</div>
</body>

</html>

  以上代码其实很简单,只是引入了jQuery和jPlayer插件的必须要的文件和样式,然后设置好播放器的外观,这里都是通过DIV去预先定位指定所在的层,比如播放进度条,播放的按钮(开始/暂停),声音的控制大小等。

  三、读取数据库中的曲目

  接下来,我们就可以从数据库中读取要播放的歌曲了,本文将采用ezSQL的PHP开源库去连接数据库,当然你也可以用传统的MYSQL连接方法。ezSQL的使用方法教程见这篇文章(http://www.catswhocode.com/blog/php-fast-and-easy-sql-queries-using-ezsql)。使用其实很简单,把ez_sql_core.php和ez_sql_mysql.php两个文件放到项目的根目录下即可,我们编写php文件如下,命名为getsong.php,代码如下:

<?php

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){

include_once
"ez_sql_core.php";
include_once
"ez_sql_mysql.php";
$db
= new ezSQL_mysql('db_user','db_password','db_name','db_host');

$song
= $db->get_row("SELECT * FROM songs ORDER BY RAND() LIMIT 1");

$artist
= $song->artist;
$songname
= $song->title;
$url
= $song->url;
$separator
= '|';
echo $url.$separator.$artist.$separator.$songname;
}


?>

  这里,用rand()随机在MYSQL中取出一条记录(曲目),然后分别用变量保存其歌曲的名称,歌手名和地址,将它们用符号“|”连接起来。而因为我们要使用ajax去调用这个PHP,所以注意语句:

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH'])&& strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')

  主要的目的是防止用户在浏览器地址栏中只是输入比如http://www.yousite.com/getsong.php就能获得歌曲的URL地址,只允许是通过AJAX发出的请求才予以接受。

  四、最终实现完善代码

  最后,我们可以修改jPlayer的代码,让我们的播放器运行起来,修改demo.html代码如下:

  <script type="text/javascript">
//<![CDATA[

$(document).ready(function()
{
$(
"#jquery_jplayer_1").jPlayer({
ready: function ()
{
var data
= $.ajax({
url:
"getsong.php",
async:
false
}
).responseText;

var string
= data.split('|');
$(
this).jPlayer("setMedia", {
mp3: string[
0]
}
).jPlayer("play");

$(
'#artist').html(string[1]);
$(
'#songname').html(string[2]);
}
,
ended: function (event)
{
var data
= $.ajax({
url:
"getsong.php",
async:
false
}
).responseText;

var string
= data.split('|');
$(
this).jPlayer("setMedia", {
mp3: string[
0]
}
).jPlayer("play");

$(
'#artist').html(string[1]);
$(
'#songname').html(string[2]);
}
,
swfPath:
"js",
supplied:
"mp3"
}
);
}
);
//]]>
</script>

  可以看到,在jPlayer插件的ready方法中,发起了一个ajax请求,请求getsong.php, 随机地获得一首播放的歌曲,然后对返回的数据重新用split方法分割“|”符号,其中得出的字符串数组string[0]即为mp3歌曲的URL地址,stringp[1]为歌手的名称,这里通过

  $('#artist').html(string[1])显示出来, $('#songname').html(string[2])则显示出歌的名称。swfPath指定该播放器的FLASH所在的目录为js目录,当然你可以自己定义路径,supplied指出只支持MP3格式。

  运行后,可以看到如下播放器的效果:

读取数据库中的曲目

  代码下载地址为:http://www.catswhocode.com/blog/wp-content/uploads/2011/05/cwc-radio-player.zip

  评论这张
 
阅读(703)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018