【发布时间】:2014-09-14 15:01:30
【问题描述】:
我想在运行时将 Compressor、Avi Muxer 和 File Writer 添加到我的图表中。 我在我的图表中添加了一个 InfTee,如下所示:
IBaseFilter sourceTee = (IBaseFilter)new InfTee();
graphBuilder.AddFilter(sourceTee, "Infinite Tee");
outPin = DsFindPin.ByDirection(theVideoDevice, PinDirection.Output, 0);
inPin = DsFindPin.ByDirection(sourceTee, PinDirection.Input, 0);
hr = graphBuilder.Connect(outPin, inPin);
但是当我尝试像下面的代码一样点击按钮时,我得到一个错误。
private void button1_Click(object sender, EventArgs e)
{
IPin outPin, inPin;
int hr;
// Connect To Compressor
outPin = DsFindPin.ByDirection(Preview_Class.smartTeeFilter, PinDirection.Output ,1);
inPin = DsFindPin.ByDirection(Preview_Class.theVideoCompressor, PinDirection.Input, 0);
hr = Preview_Class.graphBuilder.Connect(outPin, inPin);
DsError.ThrowExceptionForHR(hr);
// etc
}
我必须注意,我在预览时为我的视频渲染器获得了一个输出引脚 0,但我想通过单击一个按钮来添加录制功能。
任何帮助将不胜感激。
【问题讨论】:
-
你不清楚 -
1在运行时是“运行时来自代码”还是“当图形运行时”?2你得到什么错误代码? -
在我看来问题不是在运行时添加/删除过滤器,而是to record without stopping preview。 (简短回答,使用 GMFBridge)。
-
Roman,我的意思是在图表运行时。威梅尔,谢谢。
标签: c# video directshow directshow.net