Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail


           Интенсив по Python 3-5 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
           Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2017, 19:20   #1
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,684
По умолчанию Скриншотер тормозит

Решил перепилить уже созданный свой скриншотер - не устраивает скорость и маленькая частота. Поэтому, всем добрый вечер! Простой проект по принципу:
-виртуальное нажатие клавиши PrintScreen
-копируем в Bitmap полномасштабное изображение экрана
-сохраняем Bitmap в виде файла.
------------------
f - частота кадров.
t -время
--------------------
От сохранения в виде JPG пока отказался, думаю, что на компрессию уходит лишнее время. Урезал и расковырял все библиотеки (Clipboard, Graphics, SysUtils, Windows), От каких-то вообще избавился. Оставил самое нужное.
И всё равно, максимальная скорость - 25 кадров в секунду, когда не тормозит.
Как ещё можно облегчить и оптимизировать код? Есть ли более быстрый (не говорю, что простой) способ сохранять изображения? Переходить на Ассемблер не советуйте.
Вложения
Тип файла: rar Screen.rar (11.5 Кб, 41 просмотров)
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.

Последний раз редактировалось NetSpace; 22.02.2017 в 19:24.
NetSpace вне форума Ответить с цитированием
Старый 22.02.2017, 20:06   #2
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,405
По умолчанию

Можно предположить, что отказавшись от GDI в сторон либо DirectX либо обращение к драйвер-фильтру видео - можно ускорить снятие скриншотов.
Сам не пробовал.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 27.02.2017, 12:19   #3
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 899
По умолчанию

Есть компонент 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.
Aliens_wolfs вне форума Ответить с цитированием
Старый 27.02.2017, 14:20   #4
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,453
Лампочка Скриншотер Scr D7

Скриншотер
Вложения
Тип файла: rar ScrnStcr.rar (475.7 Кб, 60 просмотров)
beegl вне форума Ответить с цитированием
Старый 29.09.2018, 15:53   #5
selevo
Пользователь
 
Аватар для selevo
 
Регистрация: 06.07.2008
Сообщений: 10
По умолчанию

tvideograbber SDK
плохо понял про лицензию...
на год ?
selevo вне форума Ответить с цитированием
Старый 22.01.2019, 15:26   #6
ResourceSpace
Форумчанин
 
Аватар для ResourceSpace
 
Регистрация: 30.06.2015
Сообщений: 359
По умолчанию

Один поток делает "BMP-шки" и складывает их в некий "список".
Другой поток обрабатывает этот список (при наличии в нём элементов), делает модификации/конвертации, складывает результаты в другой список.
Третий поток сохраняет итоговую информацию в файлы (так же - по поступлении).

мм... А нафига вам скриншоты чаще 20/25 раз в секунду..? о____О

Цитата:
Сообщение от NetSpace Посмотреть сообщение
Урезал и расковырял все библиотеки (Clipboard, Graphics, SysUtils, Windows), От каких-то вообще избавился. Оставил самое нужное.
Наличие модулей в Uses ни на что не влияет.
Цитата:
Сообщение от NetSpace Посмотреть сообщение
От сохранения в виде JPG пока отказался, думаю, что на компрессию уходит лишнее время.
Стандартный TJPEGImage чудовищно тормознутый. Его удалить бы с корнями к чертям...
Цитата:
Сообщение от NetSpace Посмотреть сообщение
Переходить на Ассемблер не советуйте.
Вообще ниочём)) Тут в принципе нечего оптимизировать руками на низком уровне)

Последний раз редактировалось ResourceSpace; 22.01.2019 в 15:32.
ResourceSpace вне форума Ответить с цитированием
Ответ

          Оплата за обучение в Kata Academy только после твоего трудоустройства в IT!
          Начни карьеру Middle Java-разработчика, подробнее на сайте академии, ссылка - https://clck.ru/fCqwP

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скриншотер на делфи. Каждую секунду. 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