[英]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.