directshow: отображать результат графика в окне wpf - PullRequest
3 голосов
/ 12 ноября 2011

Я начинающий программист по режиссуре. Я пытаюсь создать приложение WPF, которое содержит (прямую трансляцию) с определенной веб-камеры

, а затем я могу сделать снимок из этой "прямой трансляции"

* 1004.* Я определил GraphBuilder и сделал следующее:
static void BuildGraph(IGraphBuilder pGraph)
{
    //graph builder
    int hr = 0;
    ICaptureGraphBuilder2 pBuilder = (ICaptureGraphBuilder2)new CaptureGraphBuilder2();
    hr = pBuilder.SetFiltergraph(pGraph);

    Guid clsid_VidCapSource = new Guid("{860BB310-5D01-11D0-BD3B-00A0C911CE86}");

    //add myCam
    IBaseFilter mycam = CreateFillterByName("QuickCam Communicate Deluxe", clsid_VidCapSource);
    hr = pGraph.AddFilter(mycam, "QuickCam Communicate Deluxe");


    //add color space converter
    IBaseFilter pColorSpaceConverter3 = (IBaseFilter)new Colour();
    hr = pGraph.AddFilter(pColorSpaceConverter3, "Color Space Converter");


    //connect myCam, pColorSpaceConverter
    hr = pGraph.ConnectDirect(GetPin(mycam, "Capture"), GetPin(pColorSpaceConverter3, "Input"), null);

}

после этого я строю график:

private void Button_Click(object sender, RoutedEventArgs e)
{
    IGraphBuilder graph = (IGraphBuilder)new FilterGraph();
    BuildGraph(graph);
    IMediaControl mediaControl = (IMediaControl)graph;
    mediaControl.Run();
}

Как я могу отобразить вывод этого графика в моем окне WPF

примечание: после построения графика светодиод камеры показывает, что камера захватывает.

заранее спасибо

Ответы [ 2 ]

3 голосов
/ 11 декабря 2011

Как правило, вам нужно добавить фильтр SampleGrabber сразу после фильтра вашего видеоустройства, чтобы получить видеокадры и «визуализировать» видео в фильтр нулевого рендеринга.,Этот буфер используется для создания InteropBitmap и для переноса изображения в мир WPF.Затем вы можете создать ImageBrush из InteropBitmap и использовать его как Background для любого UIElement.

См. Следующий проект: http://wpfcap.codeplex.com/, который делает именно то, что якратко описал.

...