0 / 0 / 0
Регистрация: 30.01.2016
Сообщений: 9
|
|
1 | |
.NET 4.x Скоростное создание скриншотов - до 30 в секунду28.03.2016, 19:48. Показов 2124. Ответов 20
Метки нет (Все метки)
Всем привет! Я настолько отважный парень, что решился написать программу для захвата видео с экрана! В общем у меня отчасти получилось: Сначала я делал скриншоты рабочего стола через VB, и записывал их в отдельные PNG файлы, затем через BAT файл, используя библиотеку ffmpeg склеивал эти PNG'шки в MP4 файл, в целом, всё нормально, качество идеальное. Но проблема состоит в том, что VB не способен делать больше 5 скринов в секунду! Подскажите пожалуйста, как создавать как минимум 30 скринов в секунду(Язык программирования не важен, главное, что-бы быстро)
0
|
28.03.2016, 19:48 | |
Ответы с готовыми решениями:
20
Создание скриншотов Создание и сохранение скриншотов Создание серии скриншотов Создание скриншотов и запись их в поток |
525 / 487 / 98
Регистрация: 25.12.2011
Сообщений: 1,176
|
|
29.03.2016, 01:06 | 2 |
По вашему вопросу, могу посоветовать только то, что первое в голову пришло (может быть и глупость):
Собственно попробовать создать еще потоки, которые так-же будут делать скриншоты, передавать им Stopwatch (миллисекунды), и сохранять их по этому имени. Добавлено через 8 минут В 2 потока, за 4 секунды, делает более > 200 скриншотов. Добавлено через 5 минут P.S. Память не жалеет...
0
|
47 / 47 / 7
Регистрация: 26.12.2014
Сообщений: 189
|
|
29.03.2016, 08:43 | 3 |
Когда-то делал подобное, может даже исходники найду. Попробуй получить дескриптор экрана, а затем копируй через BitBlt winapi. Со скоростью все должно быть в порядке, если в память сохранять.
0
|
525 / 487 / 98
Регистрация: 25.12.2011
Сообщений: 1,176
|
||||||
29.03.2016, 09:34 | 4 | |||||
Сообщение было отмечено _Ender_ как решение
Решение
Вот, проверил > 50 в секунду.
1
|
0 / 0 / 0
Регистрация: 30.01.2016
Сообщений: 9
|
|
29.03.2016, 09:50 [ТС] | 5 |
Спасибо, сейчас проверю
Добавлено через 9 минут Jason красава! Всё робит! Удачи тебе! Добавлено через 5 минут Извини, а можно ещё сделать кнопку остановки, и файлы называть по номеру кадра, а то у меня какая-то ошибка.
0
|
525 / 487 / 98
Регистрация: 25.12.2011
Сообщений: 1,176
|
|||||||||||
29.03.2016, 10:15 | 6 | ||||||||||
Да можно, конечно:
Добавлено через 5 минут Кнопку остановки, лучше так (иначе могу возникнуть ошибки с примером выше, не проверял просто):
0
|
0 / 0 / 0
Регистрация: 30.01.2016
Сообщений: 9
|
|
29.03.2016, 10:25 [ТС] | 7 |
А в PNG можно? Чёт я забыл как Format.PNG писать
Добавлено через 3 минуты А в PNG можно? Чёт я забыл как Format.PNG писать Добавлено через 2 минуты Всё, вспомнил: ImageFormat.Png Добавлено через 1 минуту Через Imports System.Drawing.Imaging
0
|
525 / 487 / 98
Регистрация: 25.12.2011
Сообщений: 1,176
|
|
29.03.2016, 10:26 | 8 |
А вы попробуйте переименовать в JPG и загрузить на форум, на что вам напишут:
219.jpg: Это PNG изображение имеет неверное расширение. Просто сохраняйте с расширением png, не знаю, почему я там написал bmp . Добавлено через 59 секунд Прочитайте то, что я написал.
0
|
0 / 0 / 0
Регистрация: 30.01.2016
Сообщений: 9
|
|
29.03.2016, 10:32 [ТС] | 9 |
Отлично, а то в BMP почему-то не компилировался видео файл! Последняя просьба: нужно измерить средний fps!
0
|
525 / 487 / 98
Регистрация: 25.12.2011
Сообщений: 1,176
|
|
29.03.2016, 10:34 | 10 |
Средний FPS, после остановки?
0
|
0 / 0 / 0
Регистрация: 30.01.2016
Сообщений: 9
|
|
29.03.2016, 10:43 [ТС] | 11 |
Да!
0
|
525 / 487 / 98
Регистрация: 25.12.2011
Сообщений: 1,176
|
||||||
29.03.2016, 10:43 | 12 | |||||
Если после остановки, то:
Кликните здесь для просмотра всего текста
1
|
0 / 0 / 0
Регистрация: 30.01.2016
Сообщений: 9
|
|
29.03.2016, 10:54 [ТС] | 13 |
Отлично, доделаю, скину прогу. Спасибо большое! У меня ругается на E:\test(C:\ffmpeg), а на C:\ffmpeg\ робит, это наверное из-за того, что у меня VB2008
Добавлено через 2 минуты Можно ещё 3-ю кнопку для удаления остаточных файлов (Наших скринов)
0
|
525 / 487 / 98
Регистрация: 25.12.2011
Сообщений: 1,176
|
|
29.03.2016, 10:55 | 14 |
Это что? E:\test(C:\ffmpeg) ?
E - у меня лок. диск. Ты используй свой путь (я тестировал у себя) и не забудь там папку создать.
0
|
0 / 0 / 0
Регистрация: 30.01.2016
Сообщений: 9
|
|
29.03.2016, 10:56 [ТС] | 15 |
Я же в скобках свой написал
0
|
395 / 314 / 53
Регистрация: 14.08.2014
Сообщений: 1,010
|
||||||
29.03.2016, 11:02 | 16 | |||||
Jason, нельзя останавливать потоки через Boolean.
Правильнее будет через Suspend и Resume, в таком случае потоки остановятся на безопасных поинтерах и при этом снимется нагрузка с системы. Правда стоит отметить, что Suspend и Resume уже устаревшее. Сейчас насколько я знаю рекомендуется использовать мьютексы.
0
|
525 / 487 / 98
Регистрация: 25.12.2011
Сообщений: 1,176
|
||||||
29.03.2016, 11:02 | 17 | |||||
ВНИМАНИЕ! Код удалит все файлы из папки! Поэтому "кормить" это, только папкой со скриншотами, либо сделать проверку на расширение.
0
|
525 / 487 / 98
Регистрация: 25.12.2011
Сообщений: 1,176
|
|
29.03.2016, 11:12 | 18 |
Дядя Корней, первый раз слышу о том, что так нельзя останавливать поток (не правильное решение).
Вот скриншот студии, нагрузка ЦП (красное во время работы, синее после работы). Может, конечно я и не прав, с удовольствием почитаю мнения других.
0
|
395 / 314 / 53
Регистрация: 14.08.2014
Сообщений: 1,010
|
||||||
29.03.2016, 12:18 | 19 | |||||
Jason, книга А.Дубовцев | Microsoft .NET. Наиболее полное руководство
Стр. 393. С иллюстрациями показан наглядный пример остановки с boolean и Suspend. Вариант с boolean не высвобождает ресурсы и нагрузка остается. Добавлено через 1 минуту Jason, и да, у вас на скриншоте включен debug режим, он работает совсем не так, как релиз версия. В дебаг совсем иначе идет распределение памяти. Добавлено через 28 минут Честно говоря тоже не оптимальный код. Для чего использовать цикл, если можно сразу удалить всю папку разом? Пример
0
|
0 / 0 / 0
Регистрация: 30.01.2016
Сообщений: 9
|
|
29.03.2016, 13:13 [ТС] | 20 |
У меня опять возникла проблема: я запуская ffmpeg следующей командой:ffmpeg -r 20 -f image2 -i %d.png test.mp4 .%d значит все файлы png то-есть: 1.png, 2.png и т.д. Я запускаю батник cmd'шкой, и эта cmd'шка не видит % и-за чего и не удаётся кодировать видеофайл(
0
|
29.03.2016, 13:13 | |
29.03.2016, 13:13 | |
Помогаю со студенческими работами здесь
20
Создание скриншотов нескольких папок Слишком медленное создание скриншотов Очень быстрое создание картинок (скриншотов) Скоростное мышление Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |