Как найти исходный размер видео в режиме без рендеринга VMR9 - PullRequest
2 голосов
/ 02 июня 2011

Мое приложение использует режим VMR9 Renderless для воспроизведения файла WMV.Я строю график фильтра с помощью IGraphBuilder :: RenderFile и управляю воспроизведением с помощью IMediaControl .Все играет хорошо, но я не могу понять, как определить размер исходного видео.Любые идеи?

Примечание. Этот вопрос задавался ранее в Как настроить видео для указанного размера в режиме без рендеринга VMR9? .Но решением было использовать режим без окон вместо режима без рендеринга, что потребовало бы переписать мой код.

Ответы [ 2 ]

1 голос
/ 02 июня 2011

Во-первых, вы хотите видео рендерер.Вы можете сделать это, используя EnumFilters в интерфейсе IGraphBuilder.Затем вызовите EnumPins для этого фильтра, чтобы найти входной контакт.Затем вы можете вызвать ConnectionMediaType, чтобы получить тип носителя, который подается в этот фильтр.Теперь, в зависимости от того, какой тип формата установлен, вы можете привести указатель pbFormat к соответствующей структуре и узнать, каков размер видео.Если вам нужен размер до этого (чтобы увидеть, происходит ли какое-то масштабирование), вы можете вернуться обратно через контакт, используя «ConnectedTo», чтобы вернуть следующий фильтр.Затем вы можете найти его входные контакты и повторить вызов ConnectionMediaType.Повторяйте, пока не дойдете до нужного контакта фильтра.

1 голос
/ 02 июня 2011

Вы можете использовать проект MediaInfo по номеру http://mediainfo.sourceforge.net/hr/Download/Windows и через оболочку CS, включенную в папки VCS2010 или VCS2008, получить всю информацию о необходимом видео.

РЕДАКТИРОВАТЬ: Извините, я думал, что вы были в управлении. Но в любом случае можно использовать MediaInfo, поэтому, возможно, это поможет.

...