MP3播放器
基本要求:
1.能播放指定的MP3音乐文件。
2.显示播放文件的信息及播放进度。
3.播放进度可以拖动。
4.可以播放多个文件。(播放列表)
哪位大侠能帮我解决这个难题(对我而言)啊!谢了!!把代码放到这上面就可以了!!好心人帮帮忙哦!!
基本要求:
1.能播放指定的MP3音乐文件。
2.显示播放文件的信息及播放进度。
3.播放进度可以拖动。
4.可以播放多个文件。(播放列表)
哪位大侠能帮我解决这个难题(对我而言)啊!谢了!!把代码放到这上面就可以了!!好心人帮帮忙哦!!
MP3播放器源码
http://www.codefans.net/download/10/200810/MP3player.rar
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, MPlayer, ExtCtrls, StdCtrls, ComCtrls,mmsystem;type
TForm1 = class(TForm)
lb: TListBox;
Timer1: TTimer;
mp: TMediaPlayer;
pp: TPopupMenu;
N1: TMenuItem;
od: TOpenDialog;
N2: TMenuItem;
N3: TMenuItem;
Label1: TLabel;
Label2: TLabel;
tb: TTrackBar;
Timer2: TTimer;
CheckBox1: TCheckBox;
Timer3: TTimer;
Label3: TLabel;
Label4: TLabel;
Label8: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
procedure FormDblClick(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure lbDblClick(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure mpNotify(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure Timer3Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}function ZeroFill(Size: Integer; s: string): string;
var
a, b: Integer;
t: string;
begin
SetLength(t, Size);
for a := 1 to Size do
t[a] := '0';
b := Size;
for a := Length(s) downto 1 do
begin
t[b] := s[a];
Dec(b); //自减函数 b=b-1
end;
ZeroFill := t;
end;function fsize( s: string): string;
const
Mb= 1024*1024;
var
f: file of byte;
ii:longint;
begin
assignfile(f,s);
reset(f);
if Filesize(f)>=MB then
result:=Format('%.2f MB',[Filesize(f)/Mb])
Else
result:=Format('%.2f KB',[Filesize(f)/1024]);
closefile(f);
end;procedure TForm1.FormDblClick(Sender: TObject);
var
xx:tpoint;
begin
GetCursorPos(xx);
pp.Popup(xx.X,xx.y);
end;procedure TForm1.N1Click(Sender: TObject);
var
i:integer;
begin
od.Options := [ofHideReadOnly,ofEnableSizing,ofAllowMultiSelect];
if od.Execute then
begin
for i:=0 to od.Files.Count-1 do
begin
lb.Items.Add(od.Files.Strings[i]);
end;
end;
end;procedure TForm1.lbDblClick(Sender: TObject);
begin
mp.FileName :=lb.Items.Strings[lb.Itemindex];
label2.Caption :=extractfilename(mp.FileName);
label7.Caption := fsize(mp.FileName);
mp.Open;
mp.Play;
tb.Min:=0;
tb.Max:=mp.Length div 1000;
Timer2.Enabled :=true;
end;procedure TForm1.N2Click(Sender: TObject);
begin
mp.Notify :=true;
N2.Checked :=true;
n3.Checked :=false;
end;procedure TForm1.N3Click(Sender: TObject);
begin
mp.Notify :=false;
N2.Checked :=false;
n3.Checked :=true;
//Timer1.Enabled :=true;end;procedure TForm1.mpNotify(Sender: TObject);
var
i:integer;
begin tb.Position :=0;
if mp.Position=mp.Length then
begin
if N2.Checked =true then
begin
for i:=0 to lb.Count -1 do
begin
if mp.FileName =lb.Items.Strings[i] then
begin
lb.ItemIndex :=i;
break;
end;
end;
if lb.itemindex<lb.Count -1 then
begin
mp.FileName :=lb.Items.Strings[lb.Itemindex+1];
lb.ItemIndex :=lb.Itemindex+1;
label2.Caption :=extractfilename(mp.FileName);
mp.Open;
mp.Play;
label7.Caption := fsize(mp.FileName);
tb.Max:=mp.Length div 1000;
tb.Min:=0;
Timer2.Enabled :=true;
end
else
begin
mp.FileName :=lb.Items.Strings[0];
lb.ItemIndex :=0;
label2.Caption :=extractfilename(mp.FileName);
mp.Open;
mp.Play; tb.Max:=mp.Length div 1000;
tb.Min:=0; Timer2.Enabled :=true;
label7.Caption := fsize(mp.FileName);
end;
end;
end;
end;procedure TForm1.Timer2Timer(Sender: TObject);
begin tb.Position := mp.Position div 1000 ;
end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
//..
end;procedure TForm1.CheckBox1Click(Sender: TObject);
var
v: longint;begin
if CheckBox1.Checked =true then
begin
v := (0 shl 8) or (0 shl 24);
waveOutSetVolume(0, v);
end
else
begin
v := (255 shl 8) or (255 shl 24);
waveOutSetVolume(0, v);
end;
end;procedure TForm1.Timer3Timer(Sender: TObject);
begin
with mp do
if mode in [mpplaying] then
begin
tb.Max := mp.Length div 1000;
label3.Caption := ZeroFill(2, IntToStr(tb.max div 60))
+ ':' + ZeroFill(2, IntToStr(tb.max mod 60)) + ' '; tb.Position := Position div 1000;
label5.Caption:= ZeroFill(2, IntToStr(tb.Position div 60))
+ ':' + ZeroFill(2, IntToStr(tb.Position mod 60));
end;
end;end.
可以去万一老师的博客园bolg上看看
那里实现了基本mp3的全部功能