请问dspack如何不重复调入文件,实现重放功能??? (100分)

  • 主题发起人 主题发起人 小海
  • 开始时间 开始时间

小海

Unregistered / Unconfirmed
GUEST, unregistred user!
请问dspack如何不重复调入文件,实现重放功能??
 
FilterGraph.Stop;
FilterGraph.Run;

是这个意思吗?
 
不是。我装的版本根本就没FilterGraph.Run;的方法。
 
不好意思,我说错了 :(
应该是 Play 方法。
 
我试过,那样不行。不能重头开始播放
 
那好办,如下:

procedure TFormPlayWin.Button1Click(Sender: TObject);
var
ms: IMediaSeeking;
StopPosition, CurrentPosition: int64;
begin

FilterGraph.Stop;

if Succeeded(FilterGraph.QueryInterface(IID_IMediaSeeking, ms)) then

begin

ms.GetStopPosition(StopPosition);
CurrentPosition := 0 * 10000000;
// 0 可以修改为其他以 毫秒 为单位的时音
ms.SetPositions(CurrentPosition, AM_SEEKING_AbsolutePositioning,
StopPosition, AM_SEEKING_NoPositioning);
end;


FilterGraph.Play;
end;


或者不用 Stop/Play,直接设置 Position 就可以了。
 
IMediaSeeking,是什么???是不是要在前面uses 什么?、
 
uses DirectShow9;
 
搞定。。。谢谢了!!

能详细讲解一下这段代码吗?
 
就是设置播放的位置,
>> CurrentPosition := 0 * 10000000
这一句中的 0 在此处表示最开始处,你可以换成你需要的其他值,
单位是 毫秒。

详细情况可以看 MSDN
 
后退
顶部