首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

大家帮忙看一下,两路视频采集的,不能实现,有源码.解决方法

2012-02-12 
大家帮忙看一下,两路视频采集的,不能实现,有源码.//这儿开始对第一路图像进行采集procedure TVideoForm.On

大家帮忙看一下,两路视频采集的,不能实现,有源码.
//这儿开始对第一路图像进行采集
procedure TVideoForm.OnSelectDevice(sender: TObject);
begin
  FilterGraph.ClearGraph;
  FilterGraph.Active := false;
  Filter.BaseFilter.Moniker := SysDev.GetMoniker(0);
  FilterGraph.Active := true;
  with FilterGraph as ICaptureGraphBuilder2 do
  begin
  RenderStream(@PIN_CATEGORY_PREVIEW, nil, Filter as IBaseFilter, nil, VideoWindow as IbaseFilter);
  SetOutputFileName(MEDIASUBTYPE_Asf, PWideChar(CapFile), multiplexer, Writer);
  RenderStream(@PIN_CATEGORY_CAPTURE, @MEDIATYPE_Video, Filter as IBaseFilter,nil,multiplexer as IBaseFilter);
  end;
  FilterGraph.Play;
end;

//开始转换到第二路图像
procedure TVideoForm.Button1Click(Sender: TObject);
begin
  filtergraph.Pause;
  FilterGraph.ClearGraph;
  FilterGraph.Active := false;
  Filter.BaseFilter.Moniker := SysDev.GetMoniker(1);
  FilterGraph.Active := true;
  with FilterGraph as ICaptureGraphBuilder2 do
  begin

  RenderStream(@PIN_CATEGORY_PREVIEW, nil, Filter as IBaseFilter, nil, VideoWindow as IbaseFilter);

  RenderStream(@PIN_CATEGORY_CAPTURE, @MEDIATYPE_Video, Filter as IBaseFilter,nil,multiplexer as IBaseFilter);
  end;
  FilterGraph.Play;
end;

程序运行后可以采集第一路的,但是转换到第二路后videowindow中可以显示第二路的图像,而采集会停止(也就是说已经不往文件中写了)。
这个问题已经困扰我好长时间了,一直没有解决,请各位老大帮忙看一下,这个问题应该怎么样解决,谢谢各位了。

[解决办法]
粗略看你的带吗好象第2个没有往文件写的代码啊,是不是缺少SetOutputFileName(MEDIASUBTYPE_Asf, PWideChar(CapFile), multiplexer, Writer);这个的缘故啊
[解决办法]
但是如果这样你FilterGraph.ClearGraph;之后文件写入部分也应该被断掉了所以不能继续写
[解决办法]
我有一个可能挺笨的想法,你每切换一次,因为需要重新搭建Graph,所以新建一个输出文件,写入,然后把你这些输出文件连接起来,组成一个完整的文件

热点排行