DsPack播放媒体文件报错“由于没有连接插针,因此导致无法执行此项操作” ( 积分: 50 )

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

crazyjimmy

Unregistered / Unconfirmed
GUEST, unregistred user!
D7+DsPack2.34做了个播放器,循环播放媒体文件(视音频文件都有),装了klcodec263s.exe的解码器包,使用TFilterGraph和TVideoWindow控件。
播放代码如下:
procedure TMainFrm.FilterGraphGraphComplete(sender: TObject;
Result: HRESULT;
Renderer: IBaseFilter);
var
begin

if not FilterGraph.Active then
FilterGraph.Active := true;
FilterGraph.ClearGraph;
FilterGraph.RenderFile(filename);
VideoWindow.visible:=true;
FilterGraph.Volume:=10000;
FilterGraph.Play;
end;

播放到有些文件就会报错,不知道什么原因?不兼容?
 
D7+DsPack2.34做了个播放器,循环播放媒体文件(视音频文件都有),装了klcodec263s.exe的解码器包,使用TFilterGraph和TVideoWindow控件。
播放代码如下:
procedure TMainFrm.FilterGraphGraphComplete(sender: TObject;
Result: HRESULT;
Renderer: IBaseFilter);
var
begin

if not FilterGraph.Active then
FilterGraph.Active := true;
FilterGraph.ClearGraph;
FilterGraph.RenderFile(filename);
VideoWindow.visible:=true;
FilterGraph.Volume:=10000;
FilterGraph.Play;
end;

播放到有些文件就会报错,不知道什么原因?不兼容?
 
就是没有相关的.ax
安装相应的解码器即可
 
我先前也认为是,但我用dspack自带的demp/playwin,可以播放,说明解码器有支持的
 
那就用timer,监测FilterGraph的状态,如果已经播放完成,再次播放。
 
不会吧,这么说来dspack还是有缺陷?我现在要做的是不间歇地播放一个媒体列表,还可能是其他的原因吗?
 
你做的有问题吧 FilterGraphGraphComplete 这个事件是干什么的啊 为什么用这个东西啊
把RenderFile(filename);放到这么一个过程里多不稳定啊

当媒体播放完毕自动从播放列表中取得下一个媒体的文件名Render...这样不就达到目的了
取得媒体播放完毕的方法很多FilterGraphDSEvent是一个
或者比较当前位置和总长度 各有优缺点
 
FilterGraphGraphComplete 这个事件 表示当前的处理完毕,可以render()下一个了
我觉得应该没错,FilterGraphDSEvent可以接收到不同的消息,可以说是个事件中心
 
谁能编个例子,模拟出“由于没有连接插针,因此导致无法执行此项操作”!
 
我自己找到原因了,如下代码:
播放中,然后
filterGraph.cleargraph;
//这行去掉就可以了
if not FilterGraph.Active then
FilterGraph.Active := true;
FilterGraph.ClearGraph;
FilterGraph.RenderFile(filename);
VideoWindow.visible:=true;
FilterGraph.Volume:=10000;
FilterGraph.Play;
就会出问题
 
后退
顶部