C# 渲染多个视频流后出现黑屏

C# 渲染多个视频流后出现黑屏,c#,xna,directshow,C#,Xna,Directshow,目前,我正在使用一个VMR9渲染器同时渲染两个不同的视频,并将其放在XNA纹理上。我目前使用的代码管理一个视频渲染,但它在两个视频上做了一些小动作。在我的工作设置中,完整的视频播放完美无瑕,但当我尝试切换电脑时,它会让我变成黑屏 我正在使用本主题中建议的过滤器图: 如果在当前运行的程序上附加GraphStudionText,它将显示以下图形: 起初,我认为问题在于编解码器设置之间存在一些差异,但在我在两台不同的机器上管理相同的配置后,只有图形发生了变化:它们变得相同,即使一台机器正确显示视频,

目前,我正在使用一个VMR9渲染器同时渲染两个不同的视频,并将其放在XNA纹理上。我目前使用的代码管理一个视频渲染,但它在两个视频上做了一些小动作。在我的工作设置中,完整的视频播放完美无瑕,但当我尝试切换电脑时,它会让我变成黑屏

我正在使用本主题中建议的过滤器图:

如果在当前运行的程序上附加GraphStudionText,它将显示以下图形:

起初,我认为问题在于编解码器设置之间存在一些差异,但在我在两台不同的机器上管理相同的配置后,只有图形发生了变化:它们变得相同,即使一台机器正确显示视频,而另一台机器只显示黑屏

我甚至试着用手重新绘制图表,看看图表本身是否有问题,运行是否平稳

我使用以下代码段将视频源添加到VMR9渲染器:

protected override HRESULT OnInitInterfaces()
{
    IBaseFilter bsFilter;
    m_GraphBuilder.AddSourceFilter(@"C:\Video\Digitales CLP_tic tac Strawberry Mix_HUN_FIN.mp4", "first", out bsFilter);
    IEnumPins ePins;
    bsFilter.EnumPins(out ePins);
    IPin[] pins = new IPin[1];
    IntPtr fetched = IntPtr.Zero;
    ePins.Next(1, pins, fetched);
    int hr = m_GraphBuilder.Render(pins[0]);

    m_GraphBuilder.AddSourceFilter(@"C:\Video\UIP_StarTrek.mp4", "second", out bsFilter);
    bsFilter.EnumPins(out ePins);
    ePins.Next(1, pins, fetched);
    hr = m_GraphBuilder.Render(pins[0]);

    return (HRESULT)hr;
}

任何帮助都将不胜感激。

问题在于NVidia驱动程序。以下代码段导致了错误:

VMR9NormalizedRect r1 = new VMR9NormalizedRect(0, 0, 0.5f, 1);
VMR9NormalizedRect r2 = new VMR9NormalizedRect(0.5f, 0, 1, 1);
hr = (HRESULT)mix.SetOutputRect(0, ref r1);
hr = (HRESULT)mix.SetOutputRect(1, ref r2);
如果使用0、0、1、1之外的任何参数初始化VMR9NormalizedRect,它将只显示一个黑屏。该代码在我尝试的任何ATI卡上都能完美运行

自2006年以来,NVidia似乎无法修复此错误: