Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Video EVR中的Windows Media基金会多重视频渲染器 我正在探索Windows Media基金会。_Video_Ms Media Foundation - Fatal编程技术网

Video EVR中的Windows Media基金会多重视频渲染器 我正在探索Windows Media基金会。

Video EVR中的Windows Media基金会多重视频渲染器 我正在探索Windows Media基金会。,video,ms-media-foundation,Video,Ms Media Foundation,我创建了一个示例应用程序,如下链接所述: 但是我使用了两个视频源,并且我还在拓扑中添加了两个视频渲染器,在方法CreateMediaSinkActivate中调用: MFCreateVideoRendererActivate(hVideoWindow, &pActivate); <-- Two times for each video 在屏幕上,我可以看到一个视频在顶部的200x200窗口中,一个视频在背景的全屏窗口中 如何调整另一个视频窗口的大小,它在背景中是全屏的 我认为媒

我创建了一个示例应用程序,如下链接所述:

但是我使用了两个视频源,并且我还在拓扑中添加了两个视频渲染器,在方法
CreateMediaSinkActivate
中调用:

MFCreateVideoRendererActivate(hVideoWindow, &pActivate); <-- Two times for each video
在屏幕上,我可以看到一个视频在顶部的200x200窗口中,一个视频在背景的全屏窗口中


如何调整另一个视频窗口的大小,它在背景中是全屏的

我认为媒体会话可以通过第一个视频渲染器服务。如果在同一个hVideoWindow上使用两次MFCreateVideoRenderActivate,我认为您将始终闪烁。您必须使用两个不同的hVideoWindow,或者使用EVR的视频混合组件。@mofo77:感谢您的重播,如果我使用两个
MFCreateVideoRenderActivate
我看到了预期的闪烁效果,但是如何混合两个视频,有什么理由这样做吗。因为我永远无法访问第二个渲染器。我还尝试添加单个
mfcreatevideorenderactivate
,然后使用
AddStreamSink
添加第二个流,但随后得到
0xC00D4A3B--MF_E_STREAMSINKS_修复了
错误。有些人认为我无法正确显示两个视频流。如果您尝试了MediaSink::GetCharacteristics,EVR将不会返回MF\u E\u STREAMSINKS\u FIXED。我尝试了
hrMS=pMediaSink->GetCharacteristics(&sinkCharacteristics)并且我只获得
MEDIASINK\u CLOCK\u REQUIRED
MEDIASINK\u CAN\u PREROLL
标志设置。我看不到flag
MF_E_streamsink\u FIXED
set。当我调用
pMediaSink->AddStreamSink(iStream、NULL和pStreamSink)时也是如此然后我没有得到任何错误,但在渲染器中看不到任何视频(iStream变量从0到3运行,其中1和3是视频流,0和2是音频流)。我认为
AddOutputNode(pTopology、pSinkActivate、iStream和pOutputNode)中存在一些错误
pSourceNode->ConnectOutput(iStream、pOutputNode、iStream)导致问题的原因。
(void)MFGetService(pSession, MR_VIDEO_RENDER_SERVICE, IID_PPV_ARGS(&pVideoDisplay));
RECT rcDest = { 0, 0, 200, 200 };
HRESULT hr = pVideoDisplay->SetVideoPosition(NULL, &rcDest);