Нужен покадровый просмотр видео.
Как я понял из документации покадровый просмотр видео можно осуществить либо с помощью интерфейса IVideoFrameStep, либо с помощью метода IMediaSeeking::SetPosition, предварительно установив формат времени в TIME_FORMAT_FRAME.
В первом случае удается только реализовать только покадровый просмотр вперед и при этом слышны звуки, которые записаны в саундтреке, когда на экране данный кадр.
Во втором случае при вызове метода IMediaSeeking::SetTimeFormat c аргументом TIME_FORMAT_FRAME возникает ошибка "Неверный параметр".
Желательно организовать покадровый просмотр видео вперед и назад без звукового сопровождения, если на видео имеется саундтрек.
Операционная среда MS Windows 10
Сам проект разрабатывается в C++ MSVS 2015 WINAPI + DirectShow
Здравствуйте, Melamed, Вы писали:
M>Не подскажите, где найти литературу по созданию собственных DirectShow-фильтров.
Лучше начать от
сюда. На самом деле там не много, но можно получить базовые представления о внутренней архитектуре DirectShow и с чего начать. Я видел в интернете пару книг по DirectShow, но про их качество и полезность ничего сказать не могу. Если нужно писать свои фильтры, я бы посоветовал посмотреть
примеры фильтров. Мне, в свое время, это сильно помогло понять что и как устроено.
M>Как я понял, под движком вы тут подразумеваете DirectShow фильтр или нечто большее?
Для вашей задачи, думаю, нечто большее. Под движком, в первую очередь, я понимаю Filter Graph, и архитектуру DirectShow на нем основанную. К сожалению, это черный ящик, о внутренней логике работы которого можно только догадываться, особенно начинающему разработчику. Там используется достаточно не простая архитектура со сложной многопоточностью, стримами, фильтрами разного типа. Она не плохо подходит для проигрывания и записи отдельный файлов, но для задач типа нелинейной монтажки — увы. Сами фильтры DirectShow это просто COM объекты, которые при желании можно использовать как отдельные объекты вне графа и уже из них строить сколь угодно сложную логику.