播放视频 ( 积分: 200 )

  • 主题发起人 主题发起人 constantine
  • 开始时间 开始时间
C

constantine

Unregistered / Unconfirmed
GUEST, unregistred user!
我想播放avi,asf,wmv,mpg等文件,要求可以对一序列文件,
有多个,我要他循环播放,最好可以统计单个文件的播放次数

要实现这样的功能用delphi自带的控件好呢?还是用TWindowmediaplayer这个ActiveX控件?
顺便讲讲实现方法,有代码就跟好了
 
我想播放avi,asf,wmv,mpg等文件,要求可以对一序列文件,
有多个,我要他循环播放,最好可以统计单个文件的播放次数

要实现这样的功能用delphi自带的控件好呢?还是用TWindowmediaplayer这个ActiveX控件?
顺便讲讲实现方法,有代码就跟好了
 
用TWindowmediaplayer这个ActiveX控件比较方便
 
来点重点的吧,各位!
 
其实TWindowmediaplayer这个控件已经非常简单了,看你具体想实现什么功能
 
MediaPlayer1.FileName := ExtractFilePath(Application.ExeName)+'aaaa.mpg';
MediaPlayer1.Open;
MediaPlayer1.DisplayRect:= Panel1.ClientRect;//必须指定到一个容器里
MediaPlayer1.Rewind;
MediaPlayer1.Play;
//另外在Notify事件里要加如下语句
with Sender as TMediaPlayerdo

begin

if (ModeStr[Mode] = 'mpPlaying') and (NotifyStr[NotifyValue] = 'nvSuccessful') then

begin

MediaPlayer1.Rewind;
MediaPlayer1.Play;
end;

end;
 
gboyjuan:你理解错我的意思了,我是要播放下一个文件,
好像可以用wait什么的,打开很多文件,然后一直播放,忘记了
还有一个问题就是MediaPlayer好像播放无法按照比例,画面都会被拉伸

还有就是发现一个何严重的问题,在循环播放时,停顿比较厉害,我看电视之类的东西就不会停顿
 
循环播放的时候还好啊,我原来做过这样的程序,中间停顿大约1-2秒,碟机上也差不多是这样的啊
另外它播放时默认情况是根据容器的尺寸来显示画面的,你可以将容器的尺寸按照4:3的比例
如果你要打开很多文件MediaPlayer好像不行,我没试过,你可以将你选择的这些文件存放到list中,然后在播放的过程中判断当前文件是否播放完毕,是的话,在open下一个文件
 
嗯,谢谢gboyjuan,Tmediaplayer差不多只能这样了,
TWindowmediaplayer的呢有谁用过,也来讲讲
 
自己顶上去
 
現在那麼多成熟的多媒體軟件,你還費時費力的做哪些做什麼。
 
其它很简单,相信楼主是新手吧!
问题解答:1“.我想播放avi,asf,wmv,mpg等文件”:WindowsMediaPlayer.Url:='c:/music/song.mpg';

2.“要求可以对一序列文件”:不明白其意思!

3.“有多个,我要他循环播放”:利用PLAYLIST,把媒体文件加入到同一PlayList中。循环播放:可以检测是否在播放为最后一首,然后当最后一首结束时用代码跳回第一首就可以。详细代码你先试试,再两天我再公布吧!相信这样才可以帮助你学习DELPHI!
 
isapple:谢谢,WindowsMediaPlayer没有用过,帮助也没有,所以...
 
你可以用DIRECTSHOW开发,很好用的。。。。
 
DIRECTSHOW我也知道可以做到,不过目前没有时间做啊,学了一点而已不是很会用
 
WindowsMediaPlayer.align:=alClient;
当窗体最大化后为什么不会充满整个clientrect,还是原来那么大
 
窗体最大话后Panel并没有改变尺寸
需要在OnResize事件中修改Panel的尺寸
 
那里来的Panel了,我放在from也是一样的啊,
 
怎么没有人回答啊
 
我觉得你想实现的功能应该自己写代码做,文件列表也应该自己处理,只是调用播放组件播放然后通过其事件返回参数判断是否播放结束等动作就可以了,我觉得自己写会灵活很多。
 
后退
顶部