|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.02.2017, 19:20 | #1 |
Участник клуба
Регистрация: 03.06.2009
Сообщений: 1,834
|
Скриншотер тормозит
Решил перепилить уже созданный свой скриншотер - не устраивает скорость и маленькая частота. Поэтому, всем добрый вечер! Простой проект по принципу:
-виртуальное нажатие клавиши PrintScreen -копируем в Bitmap полномасштабное изображение экрана -сохраняем Bitmap в виде файла. ------------------ f - частота кадров. t -время -------------------- От сохранения в виде JPG пока отказался, думаю, что на компрессию уходит лишнее время. Урезал и расковырял все библиотеки (Clipboard, Graphics, SysUtils, Windows), От каких-то вообще избавился. Оставил самое нужное. И всё равно, максимальная скорость - 25 кадров в секунду, когда не тормозит. Как ещё можно облегчить и оптимизировать код? Есть ли более быстрый (не говорю, что простой) способ сохранять изображения? Переходить на Ассемблер не советуйте.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
Последний раз редактировалось NetSpace; 22.02.2017 в 19:24. |
22.02.2017, 20:06 | #2 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Можно предположить, что отказавшись от GDI в сторон либо DirectX либо обращение к драйвер-фильтру видео - можно ускорить снятие скриншотов.
Сам не пробовал.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
27.02.2017, 12:19 | #3 |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 902
|
Есть компонент TVideoGrabber, он делает многое в том числе и скрины вроде быстро 25,00 fps, там у него даже в Demo есть пример по скринам и прочее, довольно неплохой компонент.
http://tvideograbber-video-sdk.soft1.../download.html http://infrm-center.ru/index.php?opt...2-24&Itemid=47 Для скринов в MainDemo.exe в пункте VIDEO SOURCE выберите video capture device и нажмите start В вашем примере не стоит сразу на диск писать, нужно кэшировать в память определенное количество кадров а потом выгружать в файлы, либо в один файл запись делать stream в потоке Последний раз редактировалось Aliens_wolfs; 27.02.2017 в 13:03. |
27.02.2017, 14:20 | #4 |
instagram
Участник клуба
Регистрация: 24.05.2008
Сообщений: 1,451
|
Скриншотер Scr D7
Скриншотер
|
29.09.2018, 15:53 | #5 |
Пользователь
Регистрация: 06.07.2008
Сообщений: 10
|
tvideograbber SDK
плохо понял про лицензию... на год ? |
22.01.2019, 15:26 | #6 | ||
Форумчанин
Регистрация: 30.06.2015
Сообщений: 353
|
Один поток делает "BMP-шки" и складывает их в некий "список".
Другой поток обрабатывает этот список (при наличии в нём элементов), делает модификации/конвертации, складывает результаты в другой список. Третий поток сохраняет итоговую информацию в файлы (так же - по поступлении). мм... А нафига вам скриншоты чаще 20/25 раз в секунду..? о____О Цитата:
Цитата:
Вообще ниочём)) Тут в принципе нечего оптимизировать руками на низком уровне) Последний раз редактировалось ResourceSpace; 22.01.2019 в 15:32. |
||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Скриншотер на делфи. Каждую секунду. | Fahman | Общие вопросы Delphi | 8 | 26.11.2013 11:55 |
Тормозит программа | Кротяка | C++ Builder | 5 | 22.05.2013 20:08 |
Тормозит | glebast | Помощь студентам | 10 | 27.04.2012 21:48 |
Тормозит приложение | Vit@L | Общие вопросы Delphi | 10 | 16.02.2010 15:42 |
Бот-скриншотер - можно ли отследить? | boris-blade | Win Api | 0 | 19.12.2009 19:52 |