0
object vdeosource;
DsDevice device1 = DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice)[1];
Guid baseIdentifier = typeof(IBaseFilter).GUID;
device1.Mon.BindToObject(null, null, ref baseIdentifier, out vdeosource);
IBaseFilter sourceFilter = vdeosource as IBaseFilter;
graphBuilder.AddFilter(sourceFilter, "Source");
hr = captureGraphBuilder.SetFiltergraph(this.graphBuilder);
DsError.ThrowExceptionForHR(hr);
mpeg2Demux = (IBaseFilter)new MPEG2Demultiplexer();
object cross;
captureGraphBuilder.FindInterface(FindDirection.UpstreamOnly, null, sourceFilter, typeof(IAMCrossbar).GUID, out cross);
IAMCrossbar crossbar2 = cross as IAMCrossbar;
int inputpincount, outputpincount;
crossbar2.get_PinCounts(out outputpincount, out inputpincount);
crossbar2.Route(0, 0);
實時視頻如果我試圖在這一點上呈現視頻,我得到一些延遲5秒的照片從連接作爲輸入我的採集卡我的演奏視頻。我的採集卡輸出是mpeg2。無法從採集卡
IBaseFilter demuxFilter = (IBaseFilter)new MPEG2Demultiplexer();
graphBuilder.AddFilter(demuxFilter, "Mpeg-2 Demultiplexor");
IPin sourceFilterOutputPin = DsFindPin.ByDirection(sourceFilter, PinDirection.Output, 0);
IPin demuxFilterPinIn = DsFindPin.ByDirection(demuxFilter, PinDirection.Input, 0);
hr = graphBuilder.Connect(sourceFilterOutputPin, demuxFilterPinIn);
DsError.ThrowExceptionForHR(hr);
IBaseFilter defaultRenderer = (IBaseFilter)new VideoRendererDefault();
hr = graphBuilder.AddFilter(defaultRenderer, "Default Renderer");
DsError.ThrowExceptionForHR(hr);
hr = captureGraphBuilder.RenderStream(null, MediaType.Video, sourceFilter, null, defaultRenderer);
DsError.ThrowExceptionForHR(hr);
在這一點上,我得到它說沒有中間過濾器組合的錯誤... 所有我想知道的是我是否使用MPEG2解複用器對還是錯?
嗨,最後我想通了。我使用了crossbar和StreamConfig,最後我得到了一個視頻輸入。 但現在我無法將其捕獲到avi文件。我的代碼與我的攝像頭是正確的,但使用我的捕捉卡,我得到一個64KB的文件。 –
建議您嘗試在Graph Studio Next中構建此圖並將結果作爲下一步發佈。 – persiflage