簡體   English   中英

渲染多個視頻流后出現黑屏

[英]Black screen after rendering multiple video streams

目前,我正在使用一個VMR9渲染器同時渲染兩個不同的視頻,並將其放在XNA紋理上。 我當前使用的代碼管理一個視頻渲染,但是對兩個視頻卻有些俗氣。 在我的工作設置中,可以正常播放完整的視頻,但是當我嘗試切換計算機時,它會出現黑屏。

我正在按照本主題中的建議使用過濾器圖: 一個視頻混合渲染器9(VMR9)可以渲染更多視頻流嗎?

如果我在當前運行的程序上附加了GraphStudioNext,它將顯示以下圖形: http ://s11.postimg.org/z7d3qyyxf/graph.png

最初,我想知道的問題是編解碼器設置之間存在一些差異,但是當我在兩台不同的計算機上管理相同的配置后,只有圖形發生了變化:即使一台計算機正確顯示了視頻,而另一台僅顯示了黑屏,它們也變得相同。

我什至嘗試手工重新制作圖形,以查看圖形本身是否存在任何問題,並且它運行平穩。

我使用以下代碼片段將視頻源添加到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似乎無法修復此錯誤: https : //forums.geforce.com/default/topic/358347/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM