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.