如何静态地获得某些媒体的播放时长?(100分)

  • 主题发起人 主题发起人 xnwang
  • 开始时间 开始时间
X

xnwang

Unregistered / Unconfirmed
GUEST, unregistred user!
偶正在做一编辑器,需要静态知道某些媒体的播放时间长度(hours:minutes:seconds:msec)。例如:avi,midi,mpeg,ra,rm,wav 等
偶想知道delphi 中有没有这样的控件及如何用.
当偶用 mediaplayer.length 时,将
其转化为 HMSRec = record
Hours: byte;
Minutes: byte;
Seconds: byte;
NotUsed: byte;
end;


procedure TForm1.Button4Click(Sender: TObject);
var TheLength: LongInt;
begin

With MediaPlayer1do
begin

Filename := 'D:/Microsoft/VisualStudio/Common/Tools/VCM/search.avi';

DeviceType := dtAVIVideo;
Display := Panel1;

Open;
play;
end;

MediaPlayer1.TimeFormat := tfHMS;
TheLength := MediaPlayer1.Length;
with HMSRec(TheLength)do

begin

Label1.Caption := IntToStr(Hours);

Label2.Caption := IntToStr(Minutes);
Label3.Caption := IntToStr(Seconds);

end;

end;

偶每次取的时长都不一样, 而且数值也不对。常是几十hours.
谢谢哪位大虾解答。(以上代码基本是其help 文件中copy 来得)。
 
伙计,你有一句代码错了!
还是用tfMilliSeconds吧!自己在写几句把它转换成你要的格式就行了。
 
同意YARDY,你可以让,TIMEFORMAT:=TFMILLISECONDS,
再用:TOTAL:=MEDIAPLAYER1。LENGTH;
MINUTES:=TOTAL DIV 60;
SECONDS:=TOTAL MOD 60;
LABEL1。CAPTION:=INTTOSTR(MINUTES);
LABEL1。CAPTION:=INTTOSTR(SECONDS);
一切OK!
 
thank u all
 
怎么不给分呀,你这个骗子。我记得你了
 
//在打开文件的按钮事件中键入以下代码:
procedure TForm1.Button1Click(Sender: TObject);
var
thelength: integer;
begin

if not Opendialog1.Execute then
Exit;
with Mediaplayer1do

begin

FileName := OpenDialog1.FileName;
Open;
Mediaplayer1.TimeFormat:=tfMilliseconds;
Thelength := Length;
end;

with HMSRec(TheLength)do

begin

Label1.Caption := '文件时间长度:'+IntToStr(thelength div 60000 div 60)+':'+IntToStr(thelength div 60000 mod 60)+':'+IntToStr(thelength div 1000 mod 60);
end;

end;

//我试过了,没问题,但记得给分
 
pyh_jerry:何必这么说话?呵呵

时间太久,强制结束。 wjiachun
 
后退
顶部