nedoPC.org

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



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

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
HardWareMan wrote:
если покурить принципы работы оверлея

Общие принципы, что я "выкурил" в своё время, я изложил здесь вкратце...
Ты знаешь, где подробнее "покурить" ещё?


12 Mar 2011 07:08
Profile
Senior

Joined: 28 Feb 2006 21:34
Posts: 180
Reply with quote
Post 
To Lavr
погоди, может быть тебе взять OpenCV и на пайтоне простое приложение сваять из четырех строк? Что то типа такого - http://robocraft.ru/blog/computervision/275.html


13 Mar 2011 06:14
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
2_d_wanderer

Пример убеждает, можно и попробовать. Но не будет ли это та же "пушка по
воробьям"?
Взять целую библиотеку компьютерного зрения с открытым исходным кодом,
которая может даже осуществить анализ движения и отслеживание объектов,
для того, чтобы ухватить один кадр?

Из результатов гугления, когда мне нужен был захват, я пришел к выводу,
что проблема почему-то не имеет простого решения. Грабберов несжатого
видео
- пруд-пруди. Но везде предупреждение - несжатого!
Если я правильно понимаю - видимый мной кадр уже разжали и он в какой-то
памяти лежит. Надо его оттуда только взять...


13 Mar 2011 06:49
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post 
Ещё раз - mplayer всё декодит СОФТВЕРНО, т.е. мимо аппаратных разжимателей...

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


13 Mar 2011 07:27
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Shaos wrote:
mplayer всё декодит СОФТВЕРНО, т.е. мимо аппаратных разжимателей

А у меня и нет АППАРАТНЫХ РАЗЖИМАТЕЛЕЙ. Только софтверные кодеки.
Но вот вчера решил посмотреть статистику, какие видео-файлы может
популярный Media Player Classic сохранять в image через меню "файл" -
"save image"
, как jdigreze упоминал.
Так даже статистики не получилось.
HardWareMan прав. "Егор чего-то-там-много-буков-и-типо-код 0х80000000",
где последнее число иногда отличается
стал встречаться очень часто.
Я не отслеживал тенденцию и АПИ для работы с видео изучал весьма давно,
но тогда с захватом было попроще - даже вопрос топика в то время не возник.


13 Mar 2011 07:50
Profile
God

Joined: 02 Jan 2006 02:28
Posts: 1390
Location: Abakan
Reply with quote
Post 
Lavr, не упорствуй, попробуй mplayer, штука очень многофункциональная. Если уж оно не пройдёт, тогда да, дело сурьёзное.
Сам не люблю mplayer только из-за длинных наборов ключей... газовых, разводных, накидных, да с трещёткой...


15 Mar 2011 02:06
Profile
Banned
User avatar

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

Подтверждаю факт того, что если открыть вторую копию КМР плеера (или даже открыть КМР после запуска смотрелки от ТВ Тюнера), он начинает ругаться, что оверлей занят и предлагает показывать в обычный экран. При этом немного подпрыгивает загрузка проца (битблиттинг видимо).


15 Mar 2011 03:06
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
jdigreze wrote:
Lavr, не упорствуй, попробуй mplayer

Упаси господь - не упорствую, ибо это неположительная привычка... :lol:
И за все советы благодарен. Просто в рамках форума software
хотел попробовать сделать свою отдельную маленькую утилиту...

2_HardWareMan
Спасибо - попробую.

Интернет жмотский стал. И тупой. Раньше как-то легче было нагуглить
что-то подходящее за образец...


15 Mar 2011 07:26
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Похоже накопал искомое... Интернет он как Юкон - сегодня нет... а завтра - есть...
Скриншот видеоплеера без «черных» дыр
http://habrahabr.ru/blogs/programming/111339/


15 Mar 2011 14:41
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


16 Mar 2011 14:08
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Shaos wrote:
это гугл тухнет потихоньку

Странно - так разросся заматерел и - тухнет ужо?

PS. Раньше я ващето Яндексил, Альтавистил и чютка Рамблер припрягал... :wink:


16 Mar 2011 14:13
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Попробовал всё, что советовали и что сам накопал. Результат следующий:
Лучше всего работает способ по совету от HardWareMan-а.
Quote:
...если видеопроигрывателю не удается создать оверлей, он, как правило, начинает выводить изображение на первичную графическую поверхность. Оверлейная поверхность создается видеокартой, а большинство современных видеокарт способны создавать только одну оверлейную поверхность. Иными словами, если начать просматривать в видеопроигрывателе какой либо фильм, а затем открыть (параллельно) нужный фильм в другом проигрывателе (после этого первый проигрыватель можно закрыть), то, скорее всего, при записи видео с экрана при помощи нашего приложения, будет захватываться и изображение этого фильма.

Не могу сказать сколько у меня оверлейных поверхностей, но работает чётко.
Можно запустить в начале даже самописный плеер с любым .АВИ, после чего из
второго плеера с фильмом захват окна кадра производится любым граббером
и в том числе "принтскрином" (иногда, правда, со 2-го пинка).
Media Player Classic и HyperSnap 6 похоже используют несколько другие методы.
Последний, похоже, лезет к оверлейной поверхности как описано вот в этой ссылке:
Скриншот видеоплеера без «черных» дыр
http://habrahabr.ru/blogs/programming/111339/
Media Player Classic к оверлею лезть не умеет, но и картинку создаёт, отличную
от других методов.

И вот тут самое неприятное. Ни один из способов не захватывает кадр с качеством
самого кадра.


По захвату картинка идёт пятнами равной цветности. И проигрыватель после захвата
до следующего ключевого кадра показывает изображение с пятнами.
Видимо, здесь правильное замечание по ссылке: не так страшен черт, как его малютка.
http://habrahabr.ru/blogs/programming/111339/
А малютка вот в чем: избавиться от черта-оверлея можно, но вот преобразование
цветовых моделей, видимо, тоже имеет свои трудности.

Фирменные грабберы видео-контента, которые хвалят в сети, показывают видео в свой
экран и его же сохраняют, видимо с целью избежать проблем конвертации.
Решил затестить довольно популярный бесплатный Image Grabber II.
Но он многократно убедил меня, что звуковой девайс у меня кем-то занят, а
посему показывать и захватывать кадры он мне в упор не будет. :D

http://nnm-club.ru/forum/viewtopic.php?t=105774


20 Mar 2011 09:40
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
На сайте http://www.codeproject.com разбирают пример,
Trick: How to Capture Video Screen Shots
http://www.codeproject.com/KB/audio-video/capvidscrn.aspx

Image

пример работает, но изображение в захваченном файле тоже "пятнистое".
Может у меня с видео-картой что-либо не так? - Попробуйте пример, у кого
есть возможность (там есть исходники и скомпилированный файл):

http://www.codeproject.com/KB/audio-video/capvidscrn/capvidscrn_demo.zip
Зеркало:
http://www.nedopc.org/nedopc/upload/capvidscrn.zip
Quote:
Why it works?

My guess is that the hogging video, being the first video being played, gets priority to the hardware. Subsequent videos played have to use software rendering, which enables Windows GDI to capture a copy of the frame being played.

Do I need the CHogVideo class?

No. CHogVideo is just for demonstration. You could have just started playing a video file and paused it (say with Media Player). Open a second Media Player to play the intended video screen to capture.

When it will work?

The trick will work for if the video resource is hogged first. It will work for video players that utilize DirectX approach for playing the video (this includes Windows Media Player) regardless of the source (from file, Webcast stream, TV-input).

What about Full Screen mode?

Yes, it will also capture videos in full screen mode.


20 Mar 2011 13:03
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 28 posts ]  Go to page Previous  1, 2

Who is online

Users browsing this forum: No registered users and 22 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.