我正在使用 WPF MediaKit 来呈现 directshow 图。如果 wpf D3DRender 很小,则显示帧率很好。如果我增加显示器的尺寸(即控件),帧率会显着下降。
如何防止帧率下降?我的显示器需要偶尔全屏显示图形,这会导致帧速率下降到不可接受的值。
我听说 EVR(增强型视频渲染)比 VMR9 好得多。增加显示器尺寸时,EVR 会保持帧速率吗?
我正在使用 WPF MediaKit 来呈现 directshow 图。如果 wpf D3DRender 很小,则显示帧率很好。如果我增加显示器的尺寸(即控件),帧率会显着下降。
如何防止帧率下降?我的显示器需要偶尔全屏显示图形,这会导致帧速率下降到不可接受的值。
我听说 EVR(增强型视频渲染)比 VMR9 好得多。增加显示器尺寸时,EVR 会保持帧速率吗?
您应该在初始化 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 中找到。