Author |
Message |
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Понадобилось мне зацепить в картинку пару кадров из видео-контента.
Граббера-кетчера у меня не случилось, а редактор видео почему-то показывал
только черные окна.
Все, что можно было нагуглить по этому вопросу, занимало афигенный объём и
больше относилось к редакторам, чем к грабберам - я скачивать не стал.
А не написать ли самому? Экстримальных условий нет, паузу я нажать могу,
надо только слить в битмап... И пример на одном сайте быстро нашелся:
| | | | Code: Вот пример захвата содержимого окна var DC : hDC; Rect : TRect; Bitmap: TBitmap; Handle: hWnd; wX,wY : integer; begin Handle:=FindWindow('','Intro.avi'); GetWindowRect(Handle,Rect); wX:=(Rect.Right - Rect.Left); wY:=(Rect.Bottom - Rect.Top); DC:=GetWindowDC(Handle); Bitmap:=TBitmap.Create; Bitmap.Handle:=CreateCompatibleBitmap(DC,wX,wY); BitBlt(Bitmap.Canvas.Handle,0,0,wX,wY,DC,0,0,SRCCOPY); ReleaseDC(Handle,DC); Clipboard.SetAsHandle(CF_BITMAP,Bitmap.Handle); | | | | |
Только почитав, подумал я, что так кадр видео не захватишь. Поскольку, если
я правильно помню, видео-контент не отображается на память окна, а как-то
хитрее вроде работает.
WinGrab - есть у меня такой популярный "захватчик" содержимого окон - работает
по такому-же принципу, но содержимое окна медиа-плейера отродясь захватить не мог...
А как по-простому сделать захват кадра из окна под Виндой? Кто-нибуть знает?
|
07 Mar 2011 16:57 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22572 Location: Silicon Valley
|
поставь себе mplayer и из командной строки проиграй авишку в выходной поток джпегов, перемотав к нужному месту и указав длину играемого в нечто, приближённое к длине одного кадра
|
07 Mar 2011 19:40 |
|
|
b2m
Devil
Joined: 26 May 2003 06:57 Posts: 861
|
Это называется "оверлей" и некоторые плееры позволяют отключать эту фичу. Тогда и обычным "альт-принт-скрином" можно воспользоваться, чтобы картинку окна в буфер обмена поместить. А там уже и до "паинта" недалеко
_________________Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
|
08 Mar 2011 02:48 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
В общем-то mplayer и так присутствует по умолчанию, только из командной строки
я с ним отродясь ничего не делал... Но - попробую. Спасибо!
|
08 Mar 2011 05:30 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22572 Location: Silicon Valley
|
а - у мплеера есть игралка под винды с юзер интерфейсом
и ещё мплееру можно сказать декодить в SDL окно - тогда я думаю можно и обычными грабильками грабить
|
08 Mar 2011 06:49 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Это всё, наверное, в том случае, если мы ведём речь про один и тот-же mplayer .
У меня он болтается Версия: 6.01.05.0217.
Но весь видео-контент при установке ассоциирован с Media Player Classic.
Он при наличии кодеков показывает всё, но порой странно.
Если расширение модное щас *.mp4 - то плеер тужится и кривит.
Но если то же самое обозвать *.avi - то кажет без проблем.
Похоже, детект контента у него не шибко развит...
|
08 Mar 2011 07:27 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22572 Location: Silicon Valley
|
я говорю вот про этот http://www.mplayerhq.hu/design7/dload-ru.html
это опенсорцовский плеер, который играет всё
|
08 Mar 2011 07:29 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Спасибо за ссылочку - посмотрю... Но вобщем-то, плеер - это оболочка,
что он сможет показать - определяют кодеки.
У меня на другом компе стоит ВиртуалДаб - который просто имеет опцию
"сохранить кадр в битмап". Мне просто подумалось - захват кадра, это
не такая уж фундаментальная задача, чтобы ставить новый софт.
Захотелось извернуться "эз из"...
|
08 Mar 2011 07:38 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22572 Location: Silicon Valley
|
У мплеера все кодеки вшиты. А те которые нельзя вшить - подключаются бинарями (на странице даунлоада есть чуть ниже).
|
08 Mar 2011 07:51 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
А может выяснить - куда отображает видео "оверлей", тогда вся задача
и будет занимать столько строк, сколько я привёл в примере, только
"мемкопи", возможно, добавится?
Я помню что "оверлею" выделяется окно в видео-памяти Винды, и он туда
отображает свой контент. Поэтому при захвате грабалкой это место просто
черное.
Я то вышел из положения ещё проще, если уж на то пошло, - я свой экран
сфотографировал своей-же ВЕБ-камерой (есть такие кадры в "клавиатурах")...
Но ведь это ж не наш метод!
|
08 Mar 2011 08:06 |
|
|
jdigreze
God
Joined: 02 Jan 2006 02:28 Posts: 1390 Location: Abakan
|
Media Player Classic - http://mpc-hc.sourceforge.net/
Жмешь паузу в нужном месте и через меню "файл" - "save image"
|
11 Mar 2011 19:54 |
|
|
HardWareMan
Banned
Joined: 20 Mar 2005 13:41 Posts: 2141 Location: От туда
|
Опять же, при выводе в оверлей выдаст "Нот саппортет ту оверлей аутпут.". А при выборе "нон оверлей аутпут" иногда выдает "Егор чего-то-там-много-буков-и-типо-код 0х80000000", где последнее число иногда отличается.
|
11 Mar 2011 22:49 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Да есть такая возможность. Я сам давненько юзаю Media Player Classic за
его неприхотливость и нетребовательность.
Но HardWareMan прав. Иногда Media Player Classic не может позволить захват
кадра - ну как назло...
Сильно покопав Инет, я остановился на граббере HyperSnap 6. С грехом попалам
он на практике с третьего пинка всёж захватывает ЛЮБОЙ кадр из ЛЮБОГО
видео-файла. Но и весит он порядка 6 мегов. И не думаю я, что все 6 мегов
занимаются проблемой захвата кадра.
|
12 Mar 2011 06:29 |
|
|
HardWareMan
Banned
Joined: 20 Mar 2005 13:41 Posts: 2141 Location: От туда
|
Думаю, что если покурить принципы работы оверлея, то можно будет понять можно ли с него выдернуть результат (напомню, что оверлей сам декодирует посылаемый цветовой профиль в RGB, тем самым разгружая проц от этой ресурсоёмкой задачи) . И если возможно у видюхи забрать результат его работы (даже в профиле оригинала - например для MPEG это YUV), то это уже практически победа. :3
|
12 Mar 2011 07:03 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22572 Location: Silicon Valley
|
Мплеер полегче будет и как я говорил он умеет чисто софтверно декодить видео в SDL окно, которое можно воровать, и даже в отдельные файлы (PNG или JPG)
|
12 Mar 2011 07:06 |
|
|