我用MediaPlayer播放影视文件,如何获得播放总时间?

yingshang 2003-03-27 09:12:44
现在我碰到的问题是:
MediaPlayer可以播放多种类型的影视文件,但由于各个文件的格式不一样,导致我无法通过 mediaplayer.Length 来获得总时间。

例如:
一个*.asf文件,我用别的播放器打开总时间为 30秒,
用 mediaplayer.Length 获得的值为 461,
我怎么凑都凑不到 30。

请问各位大侠有什么办法可以获得不同格式文件的时间,第三方控件也可以啊!
...全文
129 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yingshang 2003-03-28
  • 打赏
  • 举报
回复
itperson:

你没有明白我的意思,我是要在播放前得到总时间,有一个播放列表,在文件加入列表的时候便可以显示总时间,像winamp那样,而且你的方法想来误差一定不小,这不是我寻求的解决问题之道。
不过,同样谢谢你的关注!
cmain83 2003-03-28
  • 打赏
  • 举报
回复
if Self.OpenDialog1.Execute then
begin
Self.MediaPlayer1.FileName := Self.OpenDialog1.FileName;
Self.MediaPlayer1.Open;
Self.MediaPlayer1.TimeFormat := tfMilliseconds;
ShowMessage(IntToStr(Self.MediaPlayer1.Length DIV 1000));
end;

TimeFormat 用于指定时间的格式,由四个字节的整数组成,取值及含义:
tfMilliseconds : 四个字节为一个变量以毫秒为单位
tfHMS : 时、分、秒、未用
tfMSF : 分、秒、Frames、未用
tfFrames : 四个字节为一个变量以帧为单位
tfSMPTE24 : 以 24-Frame 计数:时、分、秒、Frames
tfSMPTE25 : 以 25-Frame 计数:时、分、秒、Frames
tfSMPTE30 : 以 30-Frame 计数:时、分、秒、Frames
tfSMPTE30Drop : 以 30-Drop-Frame 计数:时、分、秒、Frames
tfBytes : 时间按字节存储四字节整数
tfSamples : 时间按Samples存储四字节整数
tfTMSF : 轨道、分、秒、Frames
jenemery 2003-03-28
  • 打赏
  • 举报
回复
gz
itperson 2003-03-27
  • 打赏
  • 举报
回复
今晚回去给你找找!明天告诉你

//现在在网吧
itperson 2003-03-27
  • 打赏
  • 举报
回复
有个时间函数来,是什么我忘了,好像是Lock?(记不清楚了)

你可以在播放开始时,让它开始,播放结束后两个值进行比较,算出间隔,即播放时间长度

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧