Название: Перехват видеоПотока с карточки Отправлено: Bepec от Май 04, 2012, 15:44 Приветствую всех.
Как и многие программисты, озадачился проблемой "помоги мне, а то у меня что-то не бачит" и "дома лежит файл, надо бы его достать". Попробовал многие программы удалённого рабочего стола - очень непонравилось - задержка 300-400 мс стабильно. Потому вопрос: Как можно перехватывать видеопоток напрямую с видеопамяти? Пока набрёл на варианты аля: 1) Video Merror Driver микрософта - много пишут, примеров мало, в общем стандартный микрософтовский апи. 2) directX - пока мало искал, но вроде тормознутее того же пункта 1. 3) Вроде есть библиотеки, перехватывающие данные напрямую из видеопамяти. Но большинство из них забугорные и платные(точнее почти все). Предлагайте варианты, делитесь опытом. Цель собственно написать лёгкий, клиент серверный пакетик, который будет использовать минимальный функционал(посмотреть экран в низком качестве, передать маркер(аля курсор)). Название: Re: Перехват видеоПотока с карточки Отправлено: V1KT0P от Май 04, 2012, 15:50 Предлагайте варианты, делитесь опытом. Цель собственно написать лёгкий, клиент серверный пакетик, который будет использовать минимальный функционал(посмотреть экран в низком качестве, передать маркер(аля курсор)). TightVNC тоже не подходит? Если да, то почему бы не взять и не переписать ту часть что не нравится. Ведь подправить готовое проще, чем писать новое.Название: Re: Перехват видеоПотока с карточки Отправлено: Bepec от Май 04, 2012, 15:53 Собственно его я пробовал минуты 2 назад ;) Задержка примерно 250-280 мс не устроила, на минимальном качестве отображения ;)
Слишком много надо править. Десятой доли его функционала мне уже много ;) Хотя идея конечно хорошая, но изучить низкий уровень тоже охота. Как то драйвера/видеопамять и прочее. Название: Re: Перехват видеоПотока с карточки Отправлено: alexis031182 от Май 04, 2012, 15:55 На Linux XVideo позволяет работать напрямую с видеопамятью.
Название: Re: Перехват видеоПотока с карточки Отправлено: V1KT0P от Май 04, 2012, 16:07 Собственно его я пробовал минуты 2 назад ;) Задержка примерно 250-280 мс не устроила, на минимальном качестве отображения ;) Под винду еще глянь CamStudio: http://sourceforge.net/projects/camstudio/ (http://sourceforge.net/projects/camstudio/). Так как он сделан для записи видео и при этом неплохо успевает не только грабить видео но и кодировать его, то проще всего от-туда выдернуть нужную функцию.Слишком много надо править. Десятой доли его функционала мне уже много ;) Хотя идея конечно хорошая, но изучить низкий уровень тоже охота. Как то драйвера/видеопамять и прочее. Название: Re: Перехват видеоПотока с карточки Отправлено: Bepec от Май 04, 2012, 17:18 Благодарю, гляну... После праздников ;) C Наступающим всех ;)
Если будут ещё намётки/направления/взгляды, прошу. Название: Re: Перехват видеоПотока с карточки Отправлено: Bepec от Май 16, 2012, 14:44 Посмотрел - всё в общем то печально. Везде используется простой BitBlt, который собственно пасует перед всеми директиксами и прочим.
Скорость то вполне возможно догнать до 10 фреймов в секунду, но толку то. Печально. Неужто реально нет дров/библиотек для прямого перехвата видеопотока под виндолз? Название: Re: Перехват видеоПотока с карточки Отправлено: alexis031182 от Май 16, 2012, 14:49 А дирексикс SDK разве не предоставляет таких возможностей? Я просто не в курсе и любопытно.
Название: Re: Перехват видеоПотока с карточки Отправлено: Bepec от Май 16, 2012, 14:56 Да я вот тоже не в курсе. Пытался гуглить - везде отпинывают на BitBlt, типа он хороший.
С вебки - сотни способов. С платой видеозахвата - пара способов. Просто перехватить видеопоток - 0 ссылок блин ;) PS Слышат где то, что через драйверы можно, но тут казус - Задал вопрос на одном форуме про "драйвер, с которого можно снимать видеопоток", как меня забанили за обсуждение уязвимостей :D Название: Re: Перехват видеоПотока с карточки Отправлено: alexis031182 от Май 16, 2012, 15:07 Тоже вот нашёл:
Цитировать Hei Gurus How can I access Video Buffer using DirectX . I want read data from Video buffer. Цитировать there is no way to access it directly. IMHO, I'm not directx expert, but i think you should create a surface to access the video framebuffer. Read the DirectX documentation in the full MSDN or download the DX8.1 or DX9 SDK. It's very good documentation..... you must know a good C/C++... Название: Re: Перехват видеоПотока с карточки Отправлено: alexis031182 от Май 16, 2012, 15:09 Тогда если через "поверхность", то может быть вот так:
Код: LPDIRECT3DSURFACE8 lpBackSurface = NULL; Название: Re: Перехват видеоПотока с карточки Отправлено: Bepec от Май 16, 2012, 15:11 C директом дела не имел, смотрю пока как на новые ворота ;)
Вопрос - оно работает? Если работает, то какова частота обновления максимальная? Название: Re: Перехват видеоПотока с карточки Отправлено: alexis031182 от Май 16, 2012, 15:18 C директом дела не имел, смотрю пока как на новые ворота ;) Мне приходилось, но очень давно. Однако впечатления от работы с ним остались тёплые :) очень хорошая документация, множество примеров. Я больше по теме DirectShow, а не Direct3D работалВопрос - оно работает? Если работает, то какова частота обновления максимальная? Нет, нет, это не мой код. Выдрал с какого-то буржуйского сайта (там что-то аналогичное Вашей теме обсуждается), поэтому ничего не могу сказать ни о скорости, ни о том, заведётся ли вообще :) Впрочем, сам думаю, что код рабочий. И точно, что директиксу GDI и в подмётки по скорости не сгодитсяНазвание: Re: Перехват видеоПотока с карточки Отправлено: alexis031182 от Май 16, 2012, 15:26 Вот ещё тут анонсировали недавно: http://www.mikogo.ru/ Сам не пробовал, но может и подойдёт
Название: Re: Перехват видеоПотока с карточки Отправлено: V1KT0P от Май 16, 2012, 16:52 Да я вот тоже не в курсе. Пытался гуглить - везде отпинывают на BitBlt, типа он хороший. Вот есть какая-то статья про получение снимков(Там три разных варианта с исходниками): http://www.codeproject.com/Articles/5051/Various-methods-for-capturing-the-screen (http://www.codeproject.com/Articles/5051/Various-methods-for-capturing-the-screen).С вебки - сотни способов. С платой видеозахвата - пара способов. Просто перехватить видеопоток - 0 ссылок блин ;) PS Слышат где то, что через драйверы можно, но тут казус - Задал вопрос на одном форуме про "драйвер, с которого можно снимать видеопоток", как меня забанили за обсуждение уязвимостей :D Если тебе надо "тырить" шифрованный видеопоток, то смотри в торону перехвата функций DirectX. Ибо в большинстве случаев именно через него проигрывают видео. Можно посмотреть какие функции использует fraps, может это даст подсказку куда копать. Название: Re: Перехват видеоПотока с карточки Отправлено: Bepec от Май 16, 2012, 18:09 Вот за статью спасибки ;) А то информации мало, сравнений почти и нет.
|