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