Привет,
Затеял я тут сделать лист, который показывает кадр из видео-клипа, даже не кадр, а несколько кадров из каждого клипа которые найдены в такой-то папке. (То что сделано в WinXP если включить вид Thumbnails...)
Задача усложнена (ИМХО) тем что надо показывать не только AVI или только MPEG, а все распространенные видеоформаты...
Я скачал вчера DirectX8.1 SDK и сделал по образу и подобию SDK-шных семплов прогу, которая возвращает нужный мне BITMAP. Все работает отлично, осталось только сделать тоже самое в цикле чтобы "ободрать" все найденные в папке видеоклипы.
ВОПРОС: почему у двух человек которым я заслал свой exe-шник и у которых установлен DirectX моя прога не показывала никаких битмапов до тех пор пока они не скачали DirectX именно версии 8.1... Неужели использованнй мною IMediaDet появился лишь в самой последней версии? может есть проще путь, чем использование для этих целей DirectX?
IMediaDet Interface
The IMediaDet interface retrieves information about a media file, such as the number of streams, and the media type, duration, and frame rate of each stream. It also contains methods for retrieving poster frames from a video stream.
Спасибо за советы,
PS: это мой первый пост здесь...
PPS: надеюсь не последний
Здравствуйте, Russ, Вы писали:
R>может есть проще путь, чем использование для этих целей DirectX?
Есть более другой способ. Нужно написать свой рендерный фильтр
(самплы есть в psdk). Далее можно построить простенький граф
и перевести его в состояние paused. Рендер получит первый кадр.
Если он не нравится (например, весь черный), можно пройтись
немного вперед по кадрам, выбирая нужный. Все просто.
Павел,
Здравствуйте, Snax, Вы писали:
R>>может есть проще путь, чем использование для этих целей DirectX?
S>Есть более другой способ. Нужно написать свой рендерный фильтр
S>(самплы есть в psdk). Далее можно построить простенький граф
S>и перевести его в состояние paused. Рендер получит первый кадр.
В принципе, использованный мной IMediaDet делает абсолютно тоже самое:
Microsoft DirectX 8.1::Grabbing a Poster Frame
...the Media Detector creates a filter graph that contains the Sample Grabber Filter. To get a bitmap, the Media Detector seeks and pauses the filter graph, and then retrieves the bitmap from the Sample Grabber filter.
Или я чего то не так понял или ты хотел сказать что это можно сделать не используя DirectX?
Спасибо,
Руслан.