Итак, я изучал мир воспроизведения мультимедиа для Windows и начал создавать C # Media Player с помощью DirectShow. Я начал использовать оконный видеорендерер VRM-7, и он был великолепен, за исключением нескольких небольших проблем (несколько мониторов, полноэкранный режим). Но после некоторого исследования я обнаружил, что он устарел и мне следует использовать VRM9. Итак, я изменил его, чтобы использовать VRM9 без окон, а затем обнаружил, что это старый пост rofl> _ ‹, поэтому, наконец, я использую Vista / Win7 (или XP .net 3) Enhanced Video Renderer (EVR), который, по-видимому, является самым современным. Microsoft video renderer, и в него добавлены все отличные характеристики производительности / качества. (честно говоря, я не заметил никакой разницы, но, возможно, мне нужно видео в формате blue-ray или HQ, чтобы заметить это).
При использовании EVR все работает нормально, кроме изменения размера видео. Он действительно медленный / прерывистый / слезливый и, вероятно, как-то связан с его механизмом очереди кадров.
Чтобы продемонстрировать мою проблему
- откройте Windows Media Player Classic.
- Просмотр -> Параметры -> Воспроизведение -> вывод
- Выберите средство визуализации DirectShow Video "EVR"
Теперь перезапустите класс wmp и воспроизведите видео, пока оно воспроизводится, щелкните и перетащите угол, чтобы изменить его размер. Вы заметите, что это ужасно тормозит. Это та же самая проблема, что и у меня.
Но если вы выбрали «EVR Custom Pres. **» или EVR Sync **, изменение размера прекрасно работает! Поэтому я попытался поискать в Google что-нибудь о проблемах с изменением размера EVR и о том, как это исправить, но я не мог поверить, как мало я смог найти. Я предполагаю, что «Custom Pres.» Означает «Custom Presenter», что звучит так, как будто они сделали свои собственные. Также вы заметите, что в правой части размера, когда вы переключаетесь между EVR и другими EVR, выпадающий размер Resizer находится в правом сером цвете. вне.
Так что в основном я не хочу знать, как я могу исправить эту проблему с запаздывающим изменением размера, и есть ли там какая-нибудь достойная документация? Немногое для VMR7 / 9, но не очень для EVR. Я загрузил DirectX SDK, в котором, по-видимому, есть образцы, но это было пустой тратой 500 МБ полосы пропускания, поскольку в нем не было ничего важного.
Возможно, есть способ заставить его не ставить кадры в очередь, если это проблема? Если вы хотите, чтобы код сказал это слово, и я вставлю немного. Но на самом деле это довольно просто и ничего особенного не происходит, я убежден, что это проблема с модулем рендеринга EVR.
РЕДАКТИРОВАТЬ: Да и еще кое-что, что использует VLC? Если вы войдете в параметры vlc и измените средство рендеринга на любое, кроме значения по умолчанию, все они отстой. Так он использует VMR7? Или свое собственное?