WPF MediaKit низкая частота кадров для большого дисплея с VMR9

Я использую WPF MediaKit для визуализации графика Directshow. Частота кадров дисплея хорошая, если wpf D3DRender маленький. Если я увеличу размер дисплея (элемент управления), частота кадров значительно упадет.

Как предотвратить падение частоты кадров? Мой дисплей должен будет время от времени отображать график во весь экран, что приводит к падению частоты кадров до недопустимого значения.

Я слышал, что EVR (Enhanced Video Render) намного лучше, чем VMR9. Будет ли EVR поддерживать частоту кадров при увеличении размера дисплея?

1 ответ

Вы должны указать кодек сжатия видео (MediaSubType) при инициализации графика DirectShow. У меня была такая же проблема при попытке захвата видео с веб-камеры с использованием сжатия по умолчанию (в моем случае это был 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.

Другие вопросы по тегам