1

我正在使用 WPF MediaKit 来呈现 directshow 图。如果 wpf D3DRender 很小,则显示帧率很好。如果我增加显示器的尺寸(即控件),帧率会显着下降。

如何防止帧率下降?我的显示器需要偶尔全屏显示图形,这会导致帧速率下降到不可接受的值。

我听说 EVR(增强型视频渲染)比 VMR9 好得多。增加显示器尺寸时,EVR 会保持帧速率吗?

4

1 回答 1

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 中找到。

于 2015-01-13T21:39:53.083 回答