Общие принципы, что я "выкурил" в своё время, я изложил здесь вкратце...HardWareMan wrote:если покурить принципы работы оверлея
Ты знаешь, где подробнее "покурить" ещё?
Moderator: Shaos
А у меня и нет АППАРАТНЫХ РАЗЖИМАТЕЛЕЙ. Только софтверные кодеки.Shaos wrote:mplayer всё декодит СОФТВЕРНО, т.е. мимо аппаратных разжимателей
Подтверждаю факт того, что если открыть вторую копию КМР плеера (или даже открыть КМР после запуска смотрелки от ТВ Тюнера), он начинает ругаться, что оверлей занят и предлагает показывать в обычный экран. При этом немного подпрыгивает загрузка проца (битблиттинг видимо).И последний совет - о том как записать видео с экрана вместе с изображением проигрываемого в данный момент фильма. Как уже говорилось, большинство программ-видеопроигрывателей пытаются выводить изображение на оверлейную поверхность, поэтому оно не захватывается при создании скриншотов. Однако, если видеопроигрывателю не удается создать оверлей, он, как правило, начинает выводить изображение на первичную графическую поверхность. Оверлейная поверхность создается видеокартой, а большинство современных видеокарт способны создавать только одну оверлейную поверхность. Иными словами, если начать просматривать в видеопроигрывателе какой либо фильм, а затем открыть (параллельно) нужный фильм в другом проигрывателе (после этого первый проигрыватель можно закрыть), то, скорее всего, при записи видео с экрана при помощи нашего приложения, будет захватываться и изображение этого фильма.
Упаси господь - не упорствую, ибо это неположительная привычка...jdigreze wrote:Lavr, не упорствуй, попробуй mplayer
Не могу сказать сколько у меня оверлейных поверхностей, но работает чётко....если видеопроигрывателю не удается создать оверлей, он, как правило, начинает выводить изображение на первичную графическую поверхность. Оверлейная поверхность создается видеокартой, а большинство современных видеокарт способны создавать только одну оверлейную поверхность. Иными словами, если начать просматривать в видеопроигрывателе какой либо фильм, а затем открыть (параллельно) нужный фильм в другом проигрывателе (после этого первый проигрыватель можно закрыть), то, скорее всего, при записи видео с экрана при помощи нашего приложения, будет захватываться и изображение этого фильма.
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.