dspack制作的简单视频播放功能中的stop的问题

qkyh19731003 2014-10-17 10:23:17
procedure TForm1.openbtnClick(Sender: TObject);
begin
if not FilterGraph1.Active then
FilterGraph1.Active := true;//初始化各Filter,并建立FilterGraph

filterGraph1.ClearGraph ; //清除原有图像
opendialog1.Execute ;
if opendialog1.FileName='' then exit;

FilterGraph1.RenderFile(opendialog1.FileName ); //呈交文件
SoundLevelbar.Position :=8000;

end;

procedure TForm1.playbtnClick(Sender: TObject);
begin
filterGraph1.Play ;

end;


procedure TForm1.pausebtnClick(Sender: TObject);
begin
filterGraph1.Pause ;
end;

procedure TForm1.stopbtnClick(Sender: TObject);
begin
filterGraph1.Stop ; //点击该按钮停止播放后再点play按钮时又从原来停止的位置往下播放了。这就等同于暂停功能了。

end;
正常的功能应该是无论在文件的哪个位置停止都会重新从头播放的。我试了2.34版本中的几个demo例程,居然也都存在这个问题。请高手给解决一下,谢啦。
...全文
925 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
levonsoft 2014-10-23
  • 打赏
  • 举报
回复
大神:操作过程中FilterGraph1.Stop; 的实际效果与FilterGraph1.Pause; 一样啊。也就是说它等同于暂停按钮的效果。怎样才能在视频文件的任意处stop而后再播放时都是从头开始的 这个只要stop 后,复位即可啊。或者做个标记,重新播放时候强制从头开始。
lyhoo163 2014-10-21
  • 打赏
  • 举报
回复
是的效果是一样。 如果要重头播放,可以使用以下代码(这是我的程序中的),俟代参考:

  RepeatPlay:=False;;
  PlayListItem := pPlayListitem(Listbox1.Items.Objects[ListBox1.Itemindex]);
  Filename := PlayListItem^.Path;
  If Filename[Length(Filename)] <> '\' then
    Filename := Filename + '\';
  Filename := Filename + PlayListItem^.Filename;
  PlayFile(Filename);

  FilterGraph1.QueryInterface(IMediaSeeking, MediaSeeking);
  with MediaSeeking do
  Begin
    GetCurrentPosition(CurrPos);                               // Play当前秒  0秒起步
    GetStopPosition(EndPos);                                   // 播放长度
  end;
  AllPos:=EndPos;
  PlayingIndex := Listbox1.Itemindex;
  If PlayingIndex > 0 then
    SpeedButton6.Enabled := True
  else
    SpeedButton6.Enabled := False;
  if PlayingIndex < Listbox1.Items.Count -1 then
    SpeedButton7.Enabled := True
  else
    SpeedButton7.Enabled := False;
qkyh19731003 2014-10-20
  • 打赏
  • 举报
回复
引用 2 楼 lyhoo163 的回复:
停止: FilterGraph1.Stop; 暂停: FilterGraph1.Pause;
大神:操作过程中FilterGraph1.Stop; 的实际效果与FilterGraph1.Pause; 一样啊。也就是说它等同于暂停按钮的效果。怎样才能在视频文件的任意处stop而后再播放时都是从头开始的?这方面的资料少啊。要不您空闲之余试一下?我参考的是http://www.cnblogs.com/doit8791/archive/2012/07/09/2583875.html
lyhoo163 2014-10-19
  • 打赏
  • 举报
回复
停止: FilterGraph1.Stop; 暂停: FilterGraph1.Pause;
qkyh19731003 2014-10-18
  • 打赏
  • 举报
回复
有没有熟悉directxShow开发的大神们?我们面对存在的问题不能回避对不对?您们能不能至少提供一下这方面的资料、思路?

1,183

社区成员

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

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