厦门哈喽贝比早教中心:实例310 在线点播

来源:百度文库 编辑:中财网 时间:2024/05/05 11:16:55
在线播放与下载
随着网络信息的飞速增长,人们已不再局限于使用收音机、电视机等来收听或收看音乐和电视节目,一些支持多种格式的音频、视频媒体播放器逐渐流行起来,为了使读者更多地了解在线播放原理,本节通过几个实例进行详细说明。
实例310  在线点播
实例说明
在一般音乐网站中,都提供在线欣赏的功能,把多个歌曲放在播放列表中连续播放,这样方便了访问者收听音乐。本实例是一个在线点播的程序,访问者可以根据歌曲名称或歌手名字的关键字查询想听的歌曲,在每一栏中的复选框中,选中要听歌曲对应的复选框,然后单击【播放文件】按钮,选中的文件就会在弹出的播放器中轮流播放,本实例运行结果如图13.23所示。
  
图13.23  在线点播
技术要点
在线点播是指客户端利用播放器播放服务器端的音乐文件,其原理是客户端服务器提交音乐选单后,服务器端生成.m3u文件,生成.m3u文件的代码如下:
StreamWriter srd = new StreamWriter(Server.
MapPath("Video/list.m3u"),true, System.Text.
Encoding.GetEncoding("gb2312"));
注意:使用GB2312编码格式,可以防止在播放音乐文件中汉字乱码的产生。
客户端选择完需要播放的影片名称,单击【播放】按钮,将影片名称写入到.m3u文件中,代码如下:
srd.Write("http://" + Request.ServerVariables["LOCAL_ADDR"]
+ "/Video/" + baseclass.filmName("select FilmPath from
tb_22 where id=" + ((Label)dlList.Items[i].FindControl
("labID")).Text) + "\n\r");
服务器端生成.m3u文件后,将该文件通过HTTP协议下载到客户端;客户端将被激发,且调用相应的播放器执行文件实现在线点播。支持.m3u的文件播放器有Winamp、RealPlayer、Musucmath等。实例中播放影片时,是通过链接文件的网络路径完成的。
实现过程
(1)新建一个网站,将其命名为Ex13_23,默认主页名为Default.aspx。
(2)Default.aspx页的控件及用途如表13.7所示。
表13.7 Default.aspx页面控件列表
控 件 类 型
控 件 名 称
用    途
HTML/Table
table
页面布局
标准/Button
btnPlay
播放文件
btnFirst
转到DataList控件的首页
btnUp
转到DataList控件当前页的上一页
btnNext
转到DataList控件当前页的下一页
btnLast
转到DataList控件的尾页
续表
控 件 类 型
控 件 名 称
用    途
标准/Label
labCurrently
显示DataList当前页页码
labTotel
显示DataList总共页码
标准/DataList
dlList
显示影片信息
为了使数据能够显示,在DataList内部拖放下列控件来布局,控件类型、名称及用途如表13.8所示。
表13.8 DataList内部控件布局列表
控 件 类 型
控 件 名 称
用    途
HTML/Table
table
布局DataList
标准/CheckBox
CheckBox1
选中当前选项
标准/DataList
labID
显示影片在数据库中ID号
labFilmName
显示影片名称
(3)为了在DataList控件中显示数据库中的数据,需要将DataList控件在前台中进行代码绑定,由于绑定控件的格式相同,这里就以绑定“影片名称”为例,代码如下:
Eval(Container.DataItem,"FilmName") %>>
为了在DataList控件中显示指定的数据,需要在后台代码中编写一个自定义方法dlBind( ),完成DataList控件的分页功能。dlBind( )方法主要代码如下:
public void dlBind( )
{
int curpage = Convert.ToInt32(this.labCurrently.Text);
PagedDataSource ps = new PagedDataSource( );
ps.DataSource = baseclass.SqlDs("select * from tb_22",
"tb_22").Tables["tb_22"].DefaultView;
ps.AllowPaging = true; //是否可以分页
ps.PageSize = 6; //显示的数量
ps.CurrentPageDefault = curpage - 1; //取得当前页的页码
this.btnUp.Enabled = true;
this.btnNext.Enabled = true;
this.btnFirst.Enabled = true;
this.btnLast.Enabled = true;
if (curpage == 1)
{
this.btnFirst.Enabled = false;//不显示第一页按钮
this.btnUp.Enabled = false;//不显示上一页按钮
}
if (curpage == ps.PageCount)
{
this.btnNext.Enabled = false;//不显示下一页
this.btnLast.Enabled = false;//不显示最后一页
}
this.labTotel.Text=Convert.ToString(ps.PageCount);
this.dlList.DataSource = ps;
this.dlList.DataBind( );
}
在单击【播放文件】按钮时,客户端需要将.m3u文件下载到本地机器中,以进行列表播放,完成该功能的主要代码如下:
protected void btnPlay_Click(object sender, EventArgs e)
{
StreamWriter srd = new StreamWriter(Server.MapPath
("Video/list.m3u"),false, System.Text.Encoding.GetEncoding("gb2312"));
for (int i = 0; i < dlList.Items.Count; i++)
{
if (((CheckBox)dlList.Items[i].FindControl
("CheckBox1")).Checked == true)
{
srd.Write("http://" + Request.ServerVariables
["LOCAL_ADDR"] + "/Video/" + baseclass.filmName("select
Film Path from tb_22 where id=" + ((Label)dlList.Items[i].
FindControl("labID")).Text) + "\n\r");
}
}
srd.Close( );
Response.Redirect("Video/list.m3u");
}
举一反三
根据本实例,读者可以:
实现手机铃声在线下载;
实现彩铃在线点播。