Сейчас на форуме: Magister Yoda, vasilevradislav, tyns777, zombi-vadim (+3 невидимых) |
eXeL@B —› Программирование —› Сделать чтобы shmedia.dll показывала случайный кадр видео |
Посл.ответ | Сообщение |
|
Создано: 05 июня 2008 05:19 · Личное сообщение · #1 При режиме "Эскиз страниц" проводника shell расширения выдирают из файлов превью, с видео файлами работает библиотека shmedia.dll - она выдирает первый кадр; хочу сделать, чтобы показывала случайный (в Vist'е вроде-бы тоже случайные кадры показывают). Нашел функцию-обработчик, которая вызывается проводником для каждого файла - 5CFDA53F, из нее вызывается 5CFDA376, вроде она непосредственно выдирает кадры, там идут обращения к qedit.dll - это все на базе OLE, имен функций нет (и интернета чтобы скачивать символы у меня нет), чет не получается разобраться. Может кто поможет? |
|
Создано: 05 июня 2008 08:18 · Личное сообщение · #2 Wyfinger Видео-файлы имеют разные форматы. shmedia.dll скорее всего вызывает сложную "кухню" : определение расширения файла и вызов нужного кодека. Некоторые плееры(виндовый в т.ч.) вообще не умеют играть видео из середины, т.ч. придется писать свою DLL Это не очень сложно, но и не так просто. Случайные по-моему показывать плохо, т.к. превью-картинка нужна чтобы ориентироваться в куче видео, а если каждый день там будут новые картинки, то человек запутается. Да вспомнил : там все сложнее. Кадр выдирается один раз и его суют в Thumbs.db |
|
Создано: 05 июня 2008 09:59 · Поправил: Gauri · Личное сообщение · #3 tundra37 пишет: Да вспомнил : там все сложнее. Кадр выдирается один раз и его суют в Thumbs.db Поставь галочку "Не кэшировать эскизы" (Do not cache thumbnails) в свойствах папки - Thumbs.db создаваться не будет. А я себе вообще отключил это выдирание кадров (в реестре в ветке CLSID), а то при файлах с жутко нестандартными кодеками explorer.exe дох. И информационности в первом кадре мало - он или чёрный, или с мусором. Вот не случайный, а, к примеру, сотый или тысячный - другое дело. |
|
Создано: 05 июня 2008 10:00 · Личное сообщение · #4 2 tundra37 Писать свою просто лень, ну и интересно все-таки. Понятно, что нужно сначала определить кодек, в shmedia это делается при помощи интерфейса IAVIStream. Но мне кажется так или иначе должна быть функция вроде getfirstframe или seek/getframe. Думаю имея символы можно было бы скорее разобраться. |
|
Создано: 05 июня 2008 13:00 · Поправил: [HEX] · Личное сообщение · #5 |
|
Создано: 05 июня 2008 13:26 · Личное сообщение · #6 |
|
Создано: 05 июня 2008 13:31 · Личное сообщение · #7 Почему бы не использовать XnView, например, или ACDSee? Или нравится именно обычный Проводник? Еще меня удивляет глупость проггеров Мелкософта. Вот выше говорили, что Explorer часто падает при показе эскизов с кривыми кодеками. Причем падает вся оболочка. Могли бы сделать некоторый EXE, который бы занимался открытием и извлечением кадра и выдавал бы результат в STDOUT. А оболочка бы это принимала. Ничего бы не падало... ----- MicroSoft? Is it some kind of a toilet paper? |
|
Создано: 05 июня 2008 15:50 · Личное сообщение · #8 |
|
Создано: 05 июня 2008 19:24 · Личное сообщение · #9 |
|
Создано: 06 июня 2008 00:13 · Личное сообщение · #10 2 [HEX] shmedia импортирует еще функции из avifil32.dll где есть функция GetLength, используется для получения всплывающей подсказки. Я прикидывал ее использовать. 2 Tim Зачем использовать что-то сторонее, когда есть удобный explorer, ну и конечно здесь "важно сделать это самому". Кстати если виснит эксплорер, так это не он виноват, а кривые кодеки. С другой стороны в MSDN есть пара статей про ошибки в shell компонентах, короче оба виноваты. Меня лично бесит то, что они всюду используют COM, вот здесь к примеру можно было бы спокойно обойтись обычной dll, и не было бы проблем с именами функций. Сейчас у меня есть адреса, есть еще заголовки qedit.h - но я не могу сопоставить адреса с именами. Я пока копаю, но и на Вашу помощь расчитываю. |
eXeL@B —› Программирование —› Сделать чтобы shmedia.dll показывала случайный кадр видео |