DirectShow vmr плохо воспроизводит движение из avi если не в родном разрешении - PullRequest
0 голосов
/ 20 ноября 2018

У меня довольно простой график воспроизведения в .Net Windows Application.(через DirectShowLib)

File Source ->  [Some Splitter] -> VMR7 || VMR9

Сплиттер может быть lav, ffdhow, что угодно, просто интеллектуальное соединение.

Рендерер будет VMR9, если доступен, VMR7 в противном случае.

VMR используется не для чего-либо умного, просто для рендеринга видео без окон и для захвата сэмплов, когда пользователь спрашивает.

Это работало годами, видео могло быть любым, включая DV или MPEG2 (следовательно, VMR для захвата кадров, а не Sample Grabber).

Совсем недавно у меня возникла проблема с несколькими Windows 10системы, которые фактически все используют VMR9 (хотя VMR7 не устраняет проблему), что очевидно при воспроизведении определенных файлов AVI, отсеченных меньше или больше, чем у исходного AVI.Играйте с оригинальными размерами, и картинка в порядке.

Использование EVR вместо VMR решает все проблемы с видео, но вызывает некоторые неудобства из-за того, что его захват изображения имеет размер выходного прямоугольника, а не источника.

Поэтому мне было интересно, если кто-нибудь мог бы пролить свет на то, что я испытываю при использовании VMR с файлами avi (несколько форматов, DV / h264 ..).Обратите внимание, что Graph Studio и VLC Player отображают одинаковые проблемы.

enter image description here

enter image description here

ЭффектЯ бы назвал серьезным ореолом движения, обратите внимание, что исходный видеофайл, если он отображается на EVR или на VMR при исходных размерах, выглядит хорошо.

Действительно ценю любые мысли.

--------------- Дополнительная информация -------------------------

Может быть стоит знать, что всепроблем AVI файлы захватываются через USB-устройство захвата из композитного / s-видео источника.

1 Ответ

0 голосов
/ 20 ноября 2018

Представленный артефакт типичен для представления чересстрочного контента без деинтерлейсинга.

В некоторых случаях (например, при тестировании EVR) деинтерлейсинг может подаваться автоматически, особеннос помощью устройства Direct3D.В противном случае вы видите упомянутый эффект.Поскольку VMR, грубо говоря, является заброшенным API, вполне возможно, что более новые системы могут не применять автоматическое деинтерлейсинг через VMR-9, даже если старые системы могут обрабатывать деинтерлейсинг.

Чтобы решить интересующую вас проблему, примените деинтерлейсингбудь то аппаратное или программное деинтерлейсинг с использованием дополнительного фильтра постобработки.

...