用mediaplayer和timer来顺序播放N个MP3。。。 ( 积分: 100 )

  • 主题发起人 主题发起人 清风徐來
  • 开始时间 开始时间

清风徐來

Unregistered / Unconfirmed
GUEST, unregistred user!
我是初学者(我做的只能连续播放两首),各位高手给点建议,有完整代码更好。。。[:)]
 
我是初学者(我做的只能连续播放两首),各位高手给点建议,有完整代码更好。。。[:)]
 
没人回答我?还是不会回答?
清风很生气,后果很严重。。。。。再加100分。家当都给你们了。。。。[?]
 
去买本delphi多媒体开发的书看看。很多例子。以前做过,好几年没做了都忘的差不多了!
 
找到了,贴给你
procedure Tmainfrm.MediaPlayer1Notify(Sender: TObject);
begin

//播放器成功处理
if MediaPlayer1.NotifyValue=nvSuccessful then

begin

Mediaplayer1.Close;
Timer1.Enabled:=true;
end;


//播放器错误处理
if MediaPlayer1.NotifyValue=nvFailure then

begin

Mediaplayer1.Close;
Timer1.Enabled:=true;
end;
 
他要的是播放几个文件..
最好用个INI文件或用DB数据库来记录你打开的文件,然后依次读出来..[:)]
 
楼上两位仁兄,你们没达到我的效果。
我要播放多个文件,可以用listbox来控制文件名,用timer来控制播放顺序。。。
泪求各位仁兄给出代码。。。。
 
procedure Tmainfrm.MediaPlayer1Notify(Sender: TObject);
var
mIndex:integer;
begin

if MediaPlayer1.NotifyValue=nvSuccessful then

mIndex:=ListBox.ItemIndex+1;
if mIndex=ListBox.ItemCount then

mIndex:=0;
Mediaplayer1.Close;
Mediaplayer1.FileName:=ListBox.Items[mIndex];
Mediaplayer1.Play;
end;

end;
 
TO late_autumn_zp
怎么用TIMER来控制播放顺序?还有在LISTBOX中双击MP3就可以播放?
谢谢给全代码!我太菜了。。。。。
 
在LISTBOX中双击播放MP3
if ListBox.ItemIndex=-1 then
exit;
//没有选中文件,退出.
Mediaplayer1.FileName:=ListBox.Items.Strings[ListBox.ItemIndex];
Mediaplayer1.open;
Mediaplayer1.Play;
 
我想问楼主:有必要“TIMER来控制播放顺序”吗?
只要我们吧要播放的文件,形成一个列表,
然后用顺序,或随机,找到一个文件,对这个文件实现播放不就可以了吗?
 
procedure TForm1.Timer1Timer(Sender: TObject);
var
IsPlay: boolean;
begin

//Label1.Caption := TimeToStr(now);
IsPlay := false;
// 60*60*60*10 = 2160000
TimeSpan := Mediaplayer1.Position / 2160000;
StatusBar1.Panels[5].Text := TimeToStr(TimeSpan);
StatusBar1.Panels[3].Text := IntToStr(Mediaplayer1.Position) + '/' + IntToStr(MediaPlayer1.Length);
LMDTrackBar1.Position := Mediaplayer1.Position;
if LMDTrackBar1.Position = MediaPlayer1.Length then

begin

if actnLoop.Checked then

begin

MediaPlayer1.Rewind;
MediaPlayer1.Play;
end
else

IsPlay := true;
end;

LMDTrackBar1.Hint := StatusBar1.Panels[3].Text;
StatusBar1.Hint := StatusBar1.Panels[0].Text + StatusBar1.Panels[1].Text;
if actnLoop.Checked then

exit;

if isPlay then

if ListBox1.Items.Count <> 0 then

begin

//IsPlay := false;
if curIndex = (ListBox1.Items.count - 1) then

FlashPlay(0) //play procedure
else

FlashPlay(curIndex + 1);
end;

end;
 
procedure TForm1.FlashPlay(Index: Integer);
var
FileName: string;
begin

try
if ListBox1.Items.Count = 0 then
Exit;
ListBox1.ItemIndex := Index;
cbxFileList.ItemIndex := Index;
FIleName := cbxFileList.Items[Index];
curIndex := Index;
if not FileExists(FIleName)then

begin

ShowMessage(FileName + ' 不存在');
Exit;
end;

if not chkExt(FileName) then

begin

StatusBar1.Panels[1].Text := FileName;
ShowMessage('无法识别的媒体类型:' + FileName);
Exit;
end;

LMDTrackBar1.Position := 0;

ListBox1.Hint := cbxFileList.Items[Index];
ClearChecked(MenuFiles, Index);
TimeSpan := 0;

if MediaPlayer1.Mode <> mpStopped then

MediaPlayer1.Close;

actnPlayExecute(actnStop);
MenSset.Enabled := false;
MediaPlayer1.FileName := FileName;
MediaPlayer1.Open;
LMDTrackBar1.MaxValue := MediaPlayer1.Length;
if Assigned(F) and F.Showing then

begin

MediaPlayer1.Display := F;
MediaPlayer1.DisplayRect := F.BoundsRect;
end else

begin

MediaPlayer1.Display := flash;
MediaPlayer1.DisplayRect := flash.BoundsRect;
end;

MediaPlayer1.Play;
playState := pPlay;
application.OnMessage := ApplicationEvents1Message;
Menuflash.Checked := false;

ActionMode(1);
Timer1.Enabled := true;
StatusBar1.Panels[5].Text := TimeToStr(TimeSpan);
StatusBar1.Panels[1].Text := ListBox1.Items[Index];
LMDTrackBar1.Enabled := true;
except
Timer1.Enabled := false;
LMDTrackBar1.Position := 0;
LMDTrackBar1.Enabled := false;
MediaPlayer1.Close;
end;

end;
 
TO jfyes:
首先谢谢你了。另外我想在我的listbox里面显示我的MP3文件名(就像WINMP一样)该怎么操作。谢谢赐教。。。。
TO 无泪:
请兄台赐教。。。你只要把你上面说的用代码表现出来,我就给你分点分。。。。(我分不多哈,嘿)。。。
TO 其他仁兄:
来者有分。。。欢迎给点意见。。。小弟正处于学习期,如果你能给出学习DELPHI的最佳方法,小弟另开贴送分。。。。
 
1.用个global变量记录文件路径, ListBox就显示文件名.play的时候global变量+ListBox显示文件名;
2.ListBox就显示文件名,用个Combox保存全部文件;Combox隐藏起来,和ListBox同步操作(更新文件),play的时候就用Combox的文件就可以,这种是最方便也不会出错.
 
多人接受答案了。
 
后退
顶部