Что нового

Перехват и трансформирование видеопотока средствами AutoIT

Archy26

EVE DEVE eve bot development group
Сообщения
60
Репутация
42
Доброго времени суток!
Существует ли в природе сабж, или, хотя бы намёки на его существование?
В чём состоит задача:
Есть некое приложение, использующее на 100 процентов аппаратное ускорение видео, для вывода картинки в клиентскую часть окна.
Существует ли способ перехвата видеопотока? По-идее можно обратиться к участку оперативной памяти, выделенной под аппаратное ускорение видео, но я, даже близко не представляю, как это делается. На фёстстеп.ру не пинать я там был.
На выходе желательно иметь одни сплошные цифирки вместо видео. Напрмер - трёхмерный массив, обновляющийся 30 раз в секунду, с адресами пикселей или как-то так, но не обязательно именно так.
Просто я понимаю, что у проблемы может быть множество решений. Поэтому вопрос такой "размывчатый".

Скачал новый фрапс. Включил на запись, свернул приложение-источник видео, пошарился минутку на аплетах винды, выключил запись - просмотрел запись:
видеопоток не прервался ни на секунду.
У меня семёрка, проц СD2 е8400 3мгц, 8 гигабайт оперативки, видяха gf8800 gt.

Очевидно, что они перехватывают поток прямо из оперативной памяти выделеной в этот момент для формирования оверлэй, либо из оперативной памяти видеокарты (в чём я сильно сомневаюсь, но всё таки...). Если они это сделали - можем и мы!
Будет ли работать такой алгоритм (инасколько это реально вообще):
1) Запрашиваем у виндоус, диапазон адрессации ячеек ОП выделеной под оверлэй приложения.
2) считываем всё, что там находится.
3) формируем необходимую нам структуру.
4) обрабатываем готовую структуру, либо сохраняем её в файл.

У кого какие мысли на этот счёт? Кто-нибудь может сказать что-нибудь более-менее определённое?
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Да, в свете нашей деятельности очень интересен этот вопрос.
 
Автор
A

Archy26

EVE DEVE eve bot development group
Сообщения
60
Репутация
42
Что, неужели ни у кого вообще никаких мыслей на эту тему вообще нету?

UPD - Я аж заболел, так расстроился. То ли мой вопрос непонятен, то ли никто не знает, то ли никто говорить не хочет =\
:'(

Господа мэтры, неужели, нету здесь знающего человека, кто сунет носом в нужную тему.. или тыкните в примерное направление, чтоли?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Archy26 « Ответ #2, Отправлен: Сентябрь 06, 2009, 16:59:33 »
неужели ни у кого вообще никаких мыслей на эту тему вообще нету?
Обычно поднимают тему минимум через пару суток, а не через пару часов.

Наберитесь терпения.

И кстати, это заказ, или общий вопрос? Если заказ, то прошу оформить как положенно. Иначе тему перенесу.
 
Автор
A

Archy26

EVE DEVE eve bot development group
Сообщения
60
Репутация
42
Ув. Креатор, я переоформлю, но чуток попозже. Щас просто захожу буквально на минутку.
Надо эе сформулировать всё, всё в соответствии с правилами сделать. Ну и потом, когда я писал этот пост - правила раздела ещё не были опубликованы :smile:
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
и все таки, как средствами AutoIT сделать скрин видео в том же виндмедиа?
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
375
http://www.autoitscript.com/forum/index.php?showtopic=86830

http://www.autoitscript.com/forum/index.php?showtopic=90809&st=0&p=653037&hl=screencap&fromsearch=1&#entry653037

вот примеры для записи видео с экрана/части экрана/окна
 

Luke

Знающий
Сообщения
64
Репутация
14
Archy26 нашёл решение ? Фрапс , Xfire и т.п. используют хук процесса ( библиотеки директ x), их подобие для решения твоих задач бессмысленно, так как используя хук отпадает необходимость в OCR и возникает риск бана. Можно попробовать использовать дллку от xfire в своих целях, за неё точно не забанят. Или попробовать получить доступ к видеоданным средствами директ x, но боюсь что данных о свернутом окне в видеопамяти просто нет. Так что наверно перехват данных из процесса единственный вариант.
 
Автор
A

Archy26

EVE DEVE eve bot development group
Сообщения
60
Репутация
42
Да, на счёт работы фрапса, разобрался.
1) Меня никто не забанит за хук процесса, если я буду хукать разрешённые функции. У Microsoft в DirectX SDK существует EULA, в соответствии с которой, если ты делаешь приложение, использующее DirectX для визуализации, то там можно вполне законно в твоём приложении можно перехватывать ряд функций.
На программистских сайтах процесс и юридические моменты подробно описаны.
Другое дело, что автоит просто не имеет подобного функционала, а некоторые апишные функции выполняются ОЧЕНЬ медленно и с ОГРОМНЫМ скрипом.
Я был в шоке, когда сварганил простенькую Dll`ку с фукцией, аналогичной PixelSearch, на Delphi, и потестил её. Ужос. В сотни раз быстрее. Вплоть до того, что если исхитриться - то можно каждый кадр в двухмерный массив загонять, успевая при этом, данные каждого пикселя переводить в яркость :smile:

2) Собственно, для того чтобы такие вещи делать нужно выходить за пределы автоита. Давайте не будем забывать, что автоит хотя и удивительно широкий в функционале, но всё-таки бесплатный и ограниченый продукт. Что не мешает ему быть мега афигительным, конечно :IL_AutoIt_1: .
Но тем не менее, ужу учу Delphi, C, python и углублённо изучаю принципы ООП.
Кстати, интересный момент. За период моего знакомства с автоитом, просто таки заболел процессом программирования. Сейчас решил кардинально поменять свою жизнь, изучаю программирование углублённо, на профессиональном уровне.
Интересует в основном пока, конечно боты и реверс инжиниринг, но есть и менее "скользкие" проекты. Интересно всё это.

Так что - спасибо Белфигору, создавшего такой рессурс по ивботам, и спасибо автоиту, его автору, и всем участникам автоитрусскомьюнити. Скоро стану матёрым программером :smile:
:IL_AutoIt_1: :IL_AutoIt_1: :IL_AutoIt_1: :IL_AutoIt_1: :IL_AutoIt_1:
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Archy26 [?]
У МС в ДХ СДК существует еула
Да ты прям издеваешься над правилами :wacko:
Исправь пожалуйста сообщение так, что бы его было приятнее(и понятнее) читать. Как сказано в правилах :-X
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Вот так даже понятнее стало что ты написал ;)
 

bugaj

Знающий
Сообщения
140
Репутация
11
Да, на счёт работы фрапса, разобрался.
1) Меня никто не забанит за хук процесса, если я буду хукать разрешённые функции. У Microsoft в DirectX SDK существует EULA, в соответствии с которой, если ты делаешь приложение, использующее DirectX для визуализации, то там можно вполне законно в твоём приложении можно перехватывать ряд функций.
На программистских сайтах процесс и юридические моменты подробно описаны.
Другое дело, что автоит просто не имеет подобного функционала, а некоторые апишные функции выполняются ОЧЕНЬ медленно и с ОГРОМНЫМ скрипом.
Я был в шоке, когда сварганил простенькую Dll`ку с фукцией, аналогичной PixelSearch, на Delphi, и потестил её. Ужос. В сотни раз быстрее. Вплоть до того, что если исхитриться - то можно каждый кадр в двухмерный массив загонять, успевая при этом, данные каждого пикселя переводить в яркость

2) Собственно, для того чтобы такие вещи делать нужно выходить за пределы автоита. Давайте не будем забывать, что автоит хотя и удивительно широкий в функционале, но всё-таки бесплатный и ограниченый продукт. Что не мешает ему быть мега афигительным, конечно .
Но тем не менее, ужу учу Delphi, C, python и углублённо изучаю принципы ООП.
Кстати, интересный момент. За период моего знакомства с автоитом, просто таки заболел процессом программирования. Сейчас решил кардинально поменять свою жизнь, изучаю программирование углублённо, на профессиональном уровне.
Интересует в основном пока, конечно боты и реверс инжиниринг, но есть и менее "скользкие" проекты. Интересно всё это.

Так что - спасибо Белфигору, создавшего такой рессурс по ивботам, и спасибо автоиту, его автору, и всем участникам автоитрусскомьюнити. Скоро стану матёрым программером






« Последнее редактирование: Январь 09, 2010, 19:55:54 от Archy26 »

эм вообщем некропостинг и офтоп конечно, но все же. Чего все оборвалось на полуслове? Чем все закончилось то? ) И какие существенные плюсы получения видео потока таким образом в сравнении с скриншотаньем клиентской части окна приложения? Так, например, заскриншотить и наложить фильтр на полученное изображение у мну выходит за 100 милисекунд, т.е. я даж вижу медленнее чем он скриншотит ) И что там про хуканье? Если я так понимаю схукать можно только изображение, то отчего вдруг не нужен OCR? и уж тем более за что бан? ) хотя конечно стырить координаты окон, кнопок и т.д. и т.п было бы прикольнее.

Вообще реально ли это получить хендл на объект внутри ивклиента?, попробовал на стартовом скрине поискать подчиненное окно Win API функциями - результат 0 ( а окно верхнего уровня находит....может это как то блокируется? и вообще можно как то обнаружить что я делаю такие запросы? )

Вообщем все это конечно не на автоите. Может таки можно привести ссылку на развитие этой темы в делфях например, да или хотя бы в чем нибудь )
 
Верх