如何使用智能T恤過濾器將視頻流從網絡攝像頭呈現到文件? 所以我想補充SmartTee過濾器,並得到類似的東西:SmartTee過濾器並保存到文件
Capture filter
|
SmartTee filter
| |
capture preview
| |
Mux filter GrabFilter
| |
FileWriter VideoRenderer
所以這是引黃捕獲過濾器和智能三通:
// Get capture filter
srcFilter = FindCaptureDevice();
// Add Capture filter to our graph.
graph.AddFilter(srcFilter, "Video Capture");
//Add smartTee filter to graph
smartTeeFilter = (IBaseFilter)new SmartTee();
graph.AddFilter(smartTeeFilter, "Smart Tee");
IPin outPin = GetPin(PinDirection.Output, srcFilter);
IPin inPin = GetPin(PinDirection.Input, smartTeeFilter);
graph.Connect(outPin, inPin);
這是與採集和渲染(以防萬一)連接:
sampGrabber = new SampleGrabber() as ISampleGrabber;
baseGrabFilter = sampGrabber as IBaseFilter;
graph.AddFilter(baseGrabFilter, "Grabber");
IPin sourcePin, grabPin;
sourcePin = GetPin(PinDirection.Output, smartTeeFilter);
grabPin = GetPin(PinDirection.Input, baseGrabFilter);
graph.Connect(sourcePin, grabPin);
graph.Render(GetPin(PinDirection.Output, baseGrabFilter));
這就是我在保存文件部分中的全部內容:
IBaseFilter mux;
IFileSinkFilter sink;
capture.SetOutputFileName(
MediaSubType.Avi, // Specifies AVI for the target file.
path, // File name.
out mux, // Receives a pointer to the mux.
out sink); // (Optional) Receives a pointer to the file sink.
sink.SetFileName(path, null);
IPin outPin = DsFindPin.ByDirection(smartTeeFilter, PinDirection.Output, 1);
IPin inPin = GetPin(PinDirection.Input, mux);
graph.Connect(outPin, inPin);
control.Run();
它沒有拋出異常。只需創建大小爲64Kb的文件。我保存到文件代碼有什麼問題?
已添加。 我看看CapWMV例子,並在那裏保存是這樣的:
IFileSinkFilter sink = null;
IBaseFilter fileWriterFilter = null;
capture = (ICaptureGraphBuilder2) new CaptureGraphBuilder2();
capture.SetFiltergraph(graph);
int hr = capture.SetOutputFileName(MediaSubType.Avi, path, out fileWriterFilter, out sink);
DsError.ThrowExceptionForHR(hr);
hr = capture.RenderStream(null, null, smartTeeFilter, null, fileWriterFilter);
DsError.ThrowExceptionForHR(hr);
hr = control.Run();
DsError.ThrowExceptionForHR(hr);
我再次得到64 KB的文件,並沒有別的。我的錯誤在哪裏?
哈爾我GUYZ,我卡住了。這只是保存到文件。沒有智能發球臺,它是兩行代碼。它不會很複雜。 – WatTheCat