Как заставить DirectShow воспроизводить видео с ресурса?

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

Идеальным сценарием с точки зрения упаковки является включение видео в исполняемый файл в качестве ресурсов. Я немного погуглил для этого, и есть изрядное количество «кто-то должен это сделать» и несколько указателей на образец Async, хотя неясно, как оттуда добраться туда, куда я хочу.

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


person Ben Straub    schedule 10.02.2009    source источник
comment
Вы ищете информацию о том, как сделать упаковку или воспроизведение?   -  person Sam Saffron    schedule 10.02.2009
comment
Воспроизведение; Я планировал просто вставить файл WMV в качестве ресурса.   -  person Ben Straub    schedule 10.02.2009


Ответы (2)


Найдите Пример асинхронного фильтра в DirectShow SDK, он включает что-то под названием CMemStream, которое может передавать данные (читай: мультимедиа) из памяти. дополнительная информация в этом сообщении блога

person Community    schedule 28.03.2009

Почему бы вам не извлечь видео из EXE/DLL и не сохранить его во временном пути? Затем воспроизведите временный файл.

person Sam Saffron    schedule 10.02.2009
comment
Одна из причин, по которой я хочу встроить видео, заключается в том, что я могу кэшировать их в памяти. Текущее решение имеет задержку ~750 мс при переключении видео, что довольно неприятно для пользователя, поскольку связывает поток пользовательского интерфейса. - person Ben Straub; 10.02.2009
comment
Но вы можете извлечь их все во временный путь при запуске в фоновом потоке... (или в программных данных) - person Sam Saffron; 11.02.2009