我正在使用WPF MediaKit来渲染一个directshow图。如果wpf D3DRender很小,则显示帧率很好。如果我增加显示器的大小(即控件),帧速率会显着下降。
如何防止帧率下降?我的显示器需要偶尔显示图形全屏,这会导致帧速率降至不可接受的值。
我听说EVR(增强视频渲染)比VMR9好得多。当增加显示器的尺寸时,EVR会保持帧速率吗?
答案 0 :(得分:1)
初始化directshow图时,应指定视频压缩编解码器(MediaSubType)。尝试使用默认压缩从网络摄像头捕获视频时遇到了同样的问题(在我的情况下,它是YUY2)。
示例:
/// <summary>
/// Configures the DirectShow graph to play the selected video capture
/// device with the selected parameters
/// </summary>
private void SetupGraph()
{
...
if (UseYuv && !EnableSampleGrabbing)
{
/* Configure the video output pin with our parameters and if it fails
* then just use the default media subtype*/
if (!SetVideoCaptureParameters(graphBuilder, m_captureDevice, MediaSubType.YUY2))
SetVideoCaptureParameters(graphBuilder, m_captureDevice, Guid.Empty);
}
else
/* Configure the video output pin with our parameters */
SetVideoCaptureParameters(graphBuilder, m_captureDevice, MediaSubType.MJPG); // Change default compression to MJPG.
...
}
示例可以在WPFMediaKit.DirectShow.MediaPlayers.VideoCapturePlayer中找到。