问题: 同步显示歌词:如何让MediaPlayer1.Position识别这样的时间格式:00:38.10 ( 积分: 47 )
分类: 多媒体
来自: okook2003, 时间: 2004-06-22 22:45:00, ID: 2677004
如何让MediaPlayer1.Position识别这样的时间格式:00:38.10
我用了这样的设置:MediaPlayer1.TimeFormat := tfHMS;
我的目的:
怎么能让MP3文件按指定的长度播放?这样可以同步显示歌词功能了!
就象MP3的复读机一样.谢谢了!
来自: laj001, 时间: 2004-06-23 13:24:53, ID: 2677857
1.如果你用mediaplayer的话,需要先将时间转换成秒,如: 38*60+10 后将值如下设置:
mediaplayer1.Pause;
mediaplayer1.Position:=38*60+10;//注意是integer
mediaplayer1.Play;
2.如果用windowsmediaplayer的话,直接赋值就ok了:
windowsmediaplayer1.controls.pause;
windowsmediaplayer1.controls.currentPositionString:='00:38.10 ';//注意是widestring
windowsmediaplayer1.controls.play;
仅供参考,希望对你有帮助[
]
来自: okook2003, 时间: 2004-06-24 11:27:19, ID: 2679276
mediaplayer1.Position:=38*60+10;//注意是integer ?能详细说一下吗。谢谢了!
请问如何进行时间和Position的时间相互转换啊,我想要的是小时,分,秒,就可以了。
比如时间转成Position整数,Position整数转换成时间格式,有参考的函数吗,谢谢了!
来自: laj001, 时间: 2004-06-24 14:11:04, ID: 2679622
将时间转换成“时:分:秒”,再转换成秒,你应该会的,对吗?
procedure tform1.shownowtimeorframe;
var
nowtime,alltime:LongInt;
minutes,seconds:integer;
begin
//if showformat=timeformat then
// begin
with mediaplayer1 do
begin
timeformat:=tfmilliseconds;
nowtime:=position;
alltime:=length;
minutes:=nowtime div 60000;
seconds:=(nowtime-60000*minutes) div 1000;
label1.Caption:=inttostr(minutes)+'分'+inttostr(seconds)+'秒';
minutes:=alltime div 60000;
seconds:=(alltime-60000*minutes) div 1000;
label2.Caption:=inttostr(minutes)+'分'+inttostr(seconds)+'秒';
end;
end;
不过我建议你用windowsmediaplayer,这样很方便,windowsmediaplayer1.controls.currentPositionString:='00:38.10 ';//注意是widestring
不用在计算了!
来自: laj001, 时间: 2004-06-24 14:16:06, ID: 2679631
再贴个函数:
function SecondConversion(Second:integer):string;
var
s,v:integer;
begin
s:=Second div 3600;
v:=Second mod 3600;
if s>0 then
Result:=IntToStr(s)+':'
else
ReSult:='00:';
s:=v div 60;
v:=v mod 60;
if s>0 then
Result:=Result+IntToStr(s)+':'
else
Result:=Result+'00:';
if v>0 then
Result:=Result+IntToStr(v)
else
Result:=Result+'00';
end;
直接使用这个函数就行了。
来自: okook2003, 时间: 2004-06-26 9:28:31, ID: 2682138
谢谢:laj001,但是你的第二个函数的显示不太准确.不和上面的一样.
其实我不明白的是:mediaplayer1.position(是整数) 和时间的转换关系,比如时间格式:4:11:04“时:分:秒”还是“分,秒,毫秒”?他们格式如何相互转换。有公式可以看吗?
来自: laj001, 时间: 2004-06-29 10:10:11, ID: 2686261
type
HMSRec = record
Hours: byte;
Minutes: byte;
Seconds: byte;
NotUsed: byte;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
TheLength: LongInt;
begin
{ Set time format - note that some devices don’t support tfHMS }
MediaPlayer1.TimeFormat := tfHMS; //设定时间显示格式,“时:分:秒”,也可以是其他格式
{ Store length of currently loaded media }
TheLength := MediaPlayer1.Length;
with HMSRec(TheLength) do { Typecast TheLength as a HMSRec record }
begin
Label1.Caption := IntToStr(Hours); { Display Hours in Label1 }
Label2.Caption := IntToStr(Minutes); { Display Minutes in Label2 }
Label3.Caption := IntToStr(Seconds); { Display Seconds in Label3 }
end;
end;
4:11:04 当然是“时:分:秒”的格式了,建议你多看看delphi的帮助,以上就是帮助文件。mediaplayer1.position(是整数) 这个当然是计算后的秒数了,至于公式我想你应该会的。
来自: okook2003, 时间: 2004-07-15 10:10:57, ID: 2713075
接受答案了.
来自: okook2003, 时间: 2004-07-15 12:32:46, ID: 2713389
怎么用mediaplayer播放MP3文件就出错误呢?
mediaplayer1.Close;
mediaplayer1.timeformat:=tfHMS;
mediaplayer1.filename:=(ExtractFilePath(Application.ExeName))+'wsc/11.mp3';
// mediaplayer1.Pause ;
// mediaplayer1.Position:=6200;
mediaplayer1.open;
mediaplayer1.play;
弹出的错误说明也很奇怪:‘找不到指定的文件。请确认与文件名是否正确。’
我发现程序打开位速为:32kbps 的MP3文件能读,但是打开位速:16kbps的MP3文件就不能读了!
就是 能读MP3的情况下,到赋值语句mediaplayer1.Position:=6200;的时候,还是报错误!急啊,
哪位高手快出手帮忙啊!!!!
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2712747
得分大富翁: laj001