您的当前位置:首页基于Delphi的新型多媒体播放器的制作

基于Delphi的新型多媒体播放器的制作

来源:小侦探旅游网
维普资讯 http://www.cqvip.com 7卷 2删 浙江工贸职业技术学院学报 Vl01.7 NO.2 2007年6月 JOURNAL OF ZHEJIANG INDUSTRY&TRADE PO【 YTECHNIC Jun.2007 基于Delphi的新型多媒体播放器的制作 钱冬云 (浙江工贸职业技术学院,浙江温州 325003) 摘要:针对现有常用多媒体播放器功能不全的局面,本文开发制作了基于Delphi的新型多媒体播放器。此 播放器能实现多种常见的音频、视频格式和ID3v1标签格式的播放,并具有歌词下载、歌词音乐同步播放功能。 关键词:媒体播放器;Delphi;控件;歌词下载;同步播放 中图分类号:TP311.52 文献标识码:B 文章编号:1672-01-05(2007)02—0050—05 Making New Multi-media Player Based on Delphi Qian Dongyun (Zhqiang Industry&Trade Polytechnic Wenzhou Zh ̄iang 325003) Abstract:In view of the less function of the multi—media player commonly used,this paper develops and makes hte new multi—media player on the basis of Delphi.This player Can play video frequency,audio frequency and the Id3vl label form which are commonly seen and also has the function of downloading hte lyrics,playing the lyrics and music synchronously. Key words:Media player;Delphi;Controls;Lyrics downloading;Play synchronously‘ 1 引言 多媒体信息作为计算机相关的重要的数据资源,如何实现有效的管理,并高效地处理这方面的资源, 这就需要一个多种功能兼备的媒体播放器。就目前多媒体播放器市场情况来看,Media Player、Real Player、 暴风影音等播放器占据着媒体播放的重要地位,而国产软件如:千千静听、酷狗等则只占据了音乐媒体播 放的部分份额且功能参差不齐,较难满足用户对视频和音乐的双重需求,因此开发一个功能综合的媒体 播放器软件具有较大的实际应用意义。因此,本文基于Delphi开发平台,利用其自带的Tmediaplayer控 件的媒体播放功能,二次开发出能支持目前大部分的媒体文件类型的并具有自己特色的播放器。 2播放器的功能 衡量媒体播放器质量的重要标志是其媒体播放功能,也就是媒体播放器能够播放媒体文件类型的种 类的多少,以及媒体播放器的人机交互性能强弱,人性化界面设计的好坏。本文设计的媒体播放器具有 如下几项功能: (1)歌曲列表操作:新建列表、编辑列表、删除列表、删除列表全部、导出列表和导人列表等功能。 (2)播放模式:单曲播放、单曲循环、顺序播放、随机播放和选择播放的功能。 收稿日期:2007—04—23 作者简介:钱冬云(t969一 ),女,硕士研究生,讲师。主要研究方向:数据库和数据挖掘。 50 维普资讯 http://www.cqvip.com 钱冬云:基于Delphi的新型多媒体播放器的制作 (3)功能按钮:暂停按纽、播放按纽、上一曲按纽、下一曲按纽、全屏按纽、打开/关闭歌词秀、 打开 关闭视频和声音控制的功能。 (4)媒体文件的筛选操作:全部支持文件、视频文件、音乐文件、Real Player文件、Media Player文 件、RM格式文件、MP3格式文件、WMV格式文件、WMA格式文件等功能。 (5)曲目操作:增加本地文件、增加网络文件、编辑、删除、搜索歌词、文件属性、数据库浏览、 播放、暂停、停止、上一曲和下一曲等功能。 3播放器功能的实现 由于Tmediaplayer控件可以播放.mp3、.wma、.wmv、.rm、.rmvb、.asf、.mpg、.mpeg等多种格式的媒 体文件,所以利用Tmediaplayer控件能较方便地实现各种常见媒体文件类型的播放。本文开发的媒体播 放器主要包含了以下几种功能:左右声道的控制、歌曲的选取、播放时问和播放进程的显示、歌词的同 步和歌曲的下载。 3.1数据源 在媒体播放器中,将当前播放的媒体文件的相关信息组成歌曲列表形式存放在数据库中。数据源使 用Access数据库,数据库playlist.dat文件中的数据表list中存放歌曲列表的相关信息:歌曲名称(NAME)、 歌曲存放地址(ADDRESS)和歌曲所属列表(GROUP o Delphi可以通过多种接口形式访问Access数据 库文件,在此本文使用了ADO:接口,访问控件为Tadoquery,通过Tadoquery实现了动态数据源的链接。 通过设置adoquery的属性实现动态链接数据源,代码如下: ADOquery 1.Connecti0nString:=’Provider=Microsoft.Jet.OLEDB.4.O; Data Source=’+ExtractFilet ath(Application.ExeName)+’/playlist.dat;Persist Security Info=False。; 3.2播放方法的控制 在窗体创建时动态链接数据库文件playlist.dat,形成最新的播放列表并存放到list数据表中。播放列 表的编辑可以通过编辑list数据表的记录来实现。 播放器界面上的播放功能可通过单击“播放”、“暂停”、“停止”、“上一曲”、“下一曲”、“全屏”等 按钮来实现播放功能。“播放”和“停止”按钮的功能可以通过Tmediaplayer控件的play方法和stop方 法来实现。“上一曲”和“下-ttt ̄”按钮的功能相类似,则必须考虑媒体文件的存在性问题,所以通过自 定义函数play,实现播放功能。“上一曲”播放功能实现如下: if musicnum<=l then ——BitBtn1.Enabled:=false else play(music—item[music—nilm—l】); end; 3-3播放模式的实现 此播放器有“单曲播放”、“顺序播放”、“随机播放”和“选择播放”等播放模式。要实现以上的 功能需要设置计时器的ontime事件,以及通过设置播放文件列表ItemIndex和count属性来实现。 “顺序播放”功能的实现。首先判断是否超过播放文件的总数,如果已超过文件总数,则显示相应 51 维普资讯 http://www.cqvip.com 浙江工贸职业技术学院学报 的提示,否则将文件列表序号加1,再利用playO ̄数来实现: if form1.CheckListB0x1.hemIndex<form1.CheckListB0x1.Items.Count then begin form1.CheckListB0x1.:=form1.CheckListB0x1.hemIndex+1; play(form1.CheckListBox1.hems[form1.CheckListBox1.Itemlndex]); end else form1.1abel1.Caption:=’文件已经播放完毕’; “随机播放”的功能实现类似于“顺序播放”,不同的是播放列表的序号要随机产生。代码如下: Randomize; form1.CheckListBox1.Itemlndex:=random(form1.CheckListBox1.Items.Count); play(form1.CheckListBox1.hems[form1.CheckListBox1.Itemlndex]) “选择播放”的功能实现也类似与“顺序播放”,不同点在于按顺序播放时要判断文件列表的checked 属性。实现代码如下: f0ml1.CheckListBox1.Itemlndex:=form1.CheckListB0x1.hemlndex+1; while f(form1.CheckListBox1.Itemlndex<form1.CheckListBox1.Items.Count—1)and (form1.CheckListBox1.Checked[form1.CheckListBox1.ItemIndex】=false))d0 form1.CheckListB0x1.Itemlndex:=form1.CheckListB0x1.hemlndex+1; ifform1.CheckListBox1.Itemlndex<>form1.CheckListBox1.Items.Count一1 then play(form1.CheckListBox1.hems[form1.CheckListBox1.Itemlndex]1: 3.4声音与声道的控制 直接调用AC97模块,进行声音控制。代码如下: ShellExecute(handle,’open’,’C:\WINNrnsystem32\sndv0l32.exe’,nil,nil,sw_SHOWNORMAL); //Win9x及win2k系统等。 ShellExecute(handle,’open’,’C:\wINDOWS\system32\sndv0l32.exe’,nil,nil,SW—SHOWNORMAL); //WinXP系统等。 在u es单元中加入MMSystem,然后调用mcisendstring函数,可以较为容易地实现声道的控制: 左声道:mcisendstring(’set all audio left on’,nil,0,handle); 右声道:mcisendstring( set all audio fight on ,nil,0,handle); 立体声:mcisendstring(’set all audio all on’,nil,0,handle)。 3.5歌词功能 在播放歌曲时可以同步播放对应的歌词,歌词可以存放在多个本地文件夹中并通过搜索得到,如果对 应的本地文件夹不存在,则可以通过网络搜索来下载歌词文件,并自动匹配。 如果要通过网络下载歌词,首先可利用idhttp控件的Connect属性来确定网络是否连接在线。如果网 络连接成功,则通过百度搜索此歌曲的歌词。下载歌词流程图,如下: 52 维普资讯 http://www.cqvip.com 钱冬云:基于Delphi的新型多媒体播放器的制作 图1下载歌词的流程图 代码实现如下: try strm:=TMemoryStream.Create;//l ̄请内存流 strm.Clear; try if hang=0 then hang:=1; if not DirectoryExists(StringGrid 1.Cells[2,hang])then begin IdHTFP1.Get(StringGrid1.Cells[2,hang],strm); strm.SaveToFi]_e dit3.Text); showmessage(’下载成功!’); Lyrics2(edit3.Text);//读取歌词文件 i:=0: end; //以下对歌词、歌曲进行匹配 while form1.mediaPlayer1.Position>=unit1.1rc.n[i】do begin unit1.i:=unit1.i+l; unit1.1rch:=unit1.1rch+18; ————SendMessage(tbrm2.richedit1.Handle,WM_VSCROLL,MakeWParam(SB_THUMBPOSITION, unit 1.1rc一 0); end; end 53 维普资讯 http://www.cqvip.com 浙江工贸职业技术学院学报 else showmessage(’下载失败!’); except showmessage(’下载失败!’): end; finally strm.Free; 3.6媒体文件的属性显示 媒体文件的属性可以通过ID3vl控件的属性得到,实现如下: ID3v1.ReadFromFile(adoquery1.FieldByName(’address’).AsString); if form5=nil then Application.CreateForm(TForm5,Form5); form5.Edit 1.Text:=adoquery 1.FieldByName(’address’).AsString; form5.Edit2.Text:=ID3v1.Title; form5.Edit3.Text:=ID3v1.Artist; form5.Edit4.Text:=ID3v1.Genre; form5.Edit5.Text:=ID3v 1.Album; form5.Edit6.Text:=ID3v 1.Year; form5.Memo1.Text:=ID3v1.Comment; showmessage(’艺术家:’+ID3v1.Artist+’标题:’+ID3v1.Title+’专辑:’+ID3v1.Album+’年代:’+ID3v1.Year+’备 注:’+ID3v1.Comment+’流派’+ID3v1.Genre); form5.show; ID3v 1.Free; 4结束语 此多媒体播放器不仅可以实现媒体文件的播放,而且具备媒体文件的浏览功能,媒体文件的属性显 示、歌词同步、歌词的在线下载等功能。文章讨论了多媒体播放器制作的几个关键技术,并给出了程序 流程图和部分代码,此多媒体播放器的制作成功可为多媒体课件制作人员、网页开发人员及其他相关人 员提供借鉴。 参考文献: [1]网冠科技.DELPHI程序开发触类旁通百例[M].北京:机械工业出版社,2005. [2]杨学全.Delphi7.0程序设计[Ml北京:科学出版社,2004. [3][澳]艾而斯.DelphiWin32核心API参考[M].陈锐译.北京:中国电力出版社,2004. [4]明日科技.Delphi开发技术大全——软件工程师典藏[M].北京:人民邮电出版社,2007. 【责任编辑:王积建) 

因篇幅问题不能全部显示,请点此查看更多更全内容