nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 04:48



Reply to topic  [ 28 posts ]  Go to page 1, 2  Next
Захват видео-кадра из окна 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Понадобилось мне зацепить в картинку пару кадров из видео-контента.
Граббера-кетчера у меня не случилось, а редактор видео почему-то показывал
только черные окна.
Все, что можно было нагуглить по этому вопросу, занимало афигенный объём и
больше относилось к редакторам, чем к грабберам - я скачивать не стал.
А не написать ли самому? Экстримальных условий нет, паузу я нажать могу,
надо только слить в битмап... И пример на одном сайте быстро нашелся:

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
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post 
поставь себе mplayer и из командной строки проиграй авишку в выходной поток джпегов, перемотав к нужному месту и указав длину играемого в нечто, приближённое к длине одного кадра :roll:

_________________
:dj: https://mastodon.social/@Shaos


07 Mar 2011 19:40
Profile WWW
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
Lavr wrote:
Только почитав, подумал я, что так кадр видео не захватишь. Поскольку, если я правильно помню, видео-контент не отображается на память окна, а как-то хитрее вроде работает.

Это называется "оверлей" и некоторые плееры позволяют отключать эту фичу. Тогда и обычным "альт-принт-скрином" можно воспользоваться, чтобы картинку окна в буфер обмена поместить. А там уже и до "паинта" недалеко :)

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


08 Mar 2011 02:48
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Shaos wrote:
поставь себе mplayer и из командной строки проиграй авишку

В общем-то mplayer и так присутствует по умолчанию, только из командной строки
я с ним отродясь ничего не делал... Но - попробую. Спасибо!


08 Mar 2011 05:30
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post 
а - у мплеера есть игралка под винды с юзер интерфейсом
и ещё мплееру можно сказать декодить в SDL окно - тогда я думаю можно и обычными грабильками грабить

_________________
:dj: https://mastodon.social/@Shaos


08 Mar 2011 06:49
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Shaos wrote:
у мплеера есть игралка под винды с юзер интерфейсом
и ещё мплееру можно сказать декодить в SDL окно

Это всё, наверное, в том случае, если мы ведём речь про один и тот-же mplayer .
У меня он болтается Версия: 6.01.05.0217.
Но весь видео-контент при установке ассоциирован с Media Player Classic.
Он при наличии кодеков показывает всё, но порой странно.
Если расширение модное щас *.mp4 - то плеер тужится и кривит.
Но если то же самое обозвать *.avi - то кажет без проблем. :wink:
Похоже, детект контента у него не шибко развит...


08 Mar 2011 07:27
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post 
я говорю вот про этот http://www.mplayerhq.hu/design7/dload-ru.html :)
это опенсорцовский плеер, который играет всё ;)

_________________
:dj: https://mastodon.social/@Shaos


08 Mar 2011 07:29
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Спасибо за ссылочку - посмотрю... Но вобщем-то, плеер - это оболочка,
что он сможет показать - определяют кодеки.
У меня на другом компе стоит ВиртуалДаб - который просто имеет опцию
"сохранить кадр в битмап". Мне просто подумалось - захват кадра, это
не такая уж фундаментальная задача, чтобы ставить новый софт.
Захотелось извернуться "эз из"...


08 Mar 2011 07:38
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post 
Lavr wrote:
Спасибо за ссылочку - посмотрю... Но вобщем-то, плеер - это оболочка,
что он сможет показать - определяют кодеки.
У меня на другом компе стоит ВиртуалДаб - который просто имеет опцию
"сохранить кадр в битмап". Мне просто подумалось - захват кадра, это
не такая уж фундаментальная задача, чтобы ставить новый софт.
Захотелось извернуться "эз из"...


У мплеера все кодеки вшиты. А те которые нельзя вшить - подключаются бинарями (на странице даунлоада есть чуть ниже).

_________________
:dj: https://mastodon.social/@Shaos


08 Mar 2011 07:51
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
А может выяснить - куда отображает видео "оверлей", тогда вся задача
и будет занимать столько строк, сколько я привёл в примере, только
"мемкопи", возможно, добавится?
Я помню что "оверлею" выделяется окно в видео-памяти Винды, и он туда
отображает свой контент. Поэтому при захвате грабалкой это место просто
черное.

Я то вышел из положения ещё проще, если уж на то пошло, - я свой экран
сфотографировал своей-же ВЕБ-камерой (есть такие кадры в "клавиатурах")...
Но ведь это ж не наш метод! :lol:


08 Mar 2011 08:06
Profile
God

Joined: 02 Jan 2006 02:28
Posts: 1390
Location: Abakan
Reply with quote
Post 
Media Player Classic - http://mpc-hc.sourceforge.net/
Жмешь паузу в нужном месте и через меню "файл" - "save image"


11 Mar 2011 19:54
Profile
Banned
User avatar

Joined: 20 Mar 2005 13:41
Posts: 2141
Location: От туда
Reply with quote
Post 
jdigreze wrote:
Media Player Classic - http://mpc-hc.sourceforge.net/
Жмешь паузу в нужном месте и через меню "файл" - "save image"

Опять же, при выводе в оверлей выдаст "Нот саппортет ту оверлей аутпут.". А при выборе "нон оверлей аутпут" иногда выдает "Егор чего-то-там-много-буков-и-типо-код 0х80000000", где последнее число иногда отличается.


11 Mar 2011 22:49
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
jdigreze wrote:
Media Player Classic - http://mpc-hc.sourceforge.net/
Жмешь паузу в нужном месте и через меню "файл" - "save image"

Да есть такая возможность. Я сам давненько юзаю Media Player Classic за
его неприхотливость и нетребовательность.
Но HardWareMan прав. Иногда Media Player Classic не может позволить захват
кадра - ну как назло...
Сильно покопав Инет, я остановился на граббере HyperSnap 6. С грехом попалам
он на практике с третьего пинка всёж захватывает ЛЮБОЙ кадр из ЛЮБОГО
видео-файла. Но и весит он порядка 6 мегов. И не думаю я, что все 6 мегов
занимаются проблемой захвата кадра.


12 Mar 2011 06:29
Profile
Banned
User avatar

Joined: 20 Mar 2005 13:41
Posts: 2141
Location: От туда
Reply with quote
Post 
Думаю, что если покурить принципы работы оверлея, то можно будет понять можно ли с него выдернуть результат (напомню, что оверлей сам декодирует посылаемый цветовой профиль в RGB, тем самым разгружая проц от этой ресурсоёмкой задачи) . И если возможно у видюхи забрать результат его работы (даже в профиле оригинала - например для MPEG это YUV), то это уже практически победа. :3


12 Mar 2011 07:03
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post 
Lavr wrote:
Сильно покопав Инет, я остановился на граббере HyperSnap 6. С грехом попалам
он на практике с третьего пинка всёж захватывает ЛЮБОЙ кадр из ЛЮБОГО
видео-файла. Но и весит он порядка 6 мегов. И не думаю я, что все 6 мегов
занимаются проблемой захвата кадра.


Мплеер полегче будет и как я говорил он умеет чисто софтверно декодить видео в SDL окно, которое можно воровать, и даже в отдельные файлы (PNG или JPG)

_________________
:dj: https://mastodon.social/@Shaos


12 Mar 2011 07:06
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 28 posts ]  Go to page 1, 2  Next

Who is online

Users browsing this forum: No registered users and 20 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.