Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/12: Рейтинг темы: голосов - 12, средняя оценка - 4.67
 Аватар для Argus19
1446 / 463 / 78
Регистрация: 24.09.2017
Сообщений: 2,542
Записей в блоге: 24

Запись выделенной области экрана в видеофайл

30.11.2024, 21:45. Показов 3740. Ответов 56

Студворк — интернет-сервис помощи студентам
Неожиданно появилась задача записать выделенную область экрана монитора в видеофайл. Вот с этого сайта:
https://falstad.com/circuit/
Понимаю, что выделить область мышью не проблема. Просто не понимаю, как записать это в видеофайл со стандартным fps+25.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.11.2024, 21:45
Ответы с готовыми решениями:

Скрин выделенной области экрана
Помогите кто знает как это реализовать..

[WPF] Скриншот выделенной области экрана
Подскажите, пожалуйста, как правильно проделать следующие действия: пользователь нажимает кнопку "Сфотографировать", затем...

Поворот выделенной области
//функция расчёта новых координат public Point rotate(Point point, double angle, Point center) { Point rotated_point = new...

56
Вернулся
 Аватар для HackerVlad
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
03.12.2024, 18:21
Студворк — интернет-сервис помощи студентам
Тим70, я скорее всего просто ставил пакет кодеков разных, у меня он стоит в двух папках аж:
"c:\Program Files\BlueStacks_nxt\ffmpeg.exe"
"c:\Program Files\ImageMagick-7.1.1-Q16-HDRI\ffmpeg.exe"
и к моего удивлению запускается ffmpeg.exe из любой папки, видимо ещё и пропатчили папку одну из этих двух точно

Добавлено через 4 минуты
Аааа понял, некоторые программы хранят у себя в своей папке свой ffmpeg.exe

Добавлено через 4 минуты
В общем, у меня в системе, оказалась пропатчена папка C:\Program Files\ImageMagick-7.1.1-Q16-HDRI это просто случайно повезло, что я устанавливал эту программу. Поэтому и работала ваша запись экрана.

Добавлено через 52 секунды
А так в принципе на голой винде, только что установленной, вряд ли это будет работать
Как вариант такскать с собой в папке ffmpeg.exe как это делают некоторые программы, как я это выяснил случайно

Добавлено через 12 минут
Цитата Сообщение от Тим70 Посмотреть сообщение
Причем ffmpeg надо качать конкретно под систему компьютера
Не знаю, я нашёл у себя на компьютере много разных версий ffmpeg.exe и все они разных версий и разных размеров вообще от мала до велика)
1
Любитель
 Аватар для Тим70
1047 / 757 / 161
Регистрация: 27.01.2019
Сообщений: 1,531
03.12.2024, 18:49
HackerVlad, У меня под рукой две вин 7, 32 и 64.На них не было ffmpeg,хотя системы не пиратскии.Для обоих пришлось качать свои версии,иначе не работали, а вот папки системные оказались одинаковые C:\Windows\System32\ffmpeg.exe
0
Вернулся
 Аватар для HackerVlad
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
03.12.2024, 19:05
Цитата Сообщение от Тим70 Посмотреть сообщение
C:\Windows\System32\ffmpeg.exe
У меня там вообще никогда небыло ffmpeg в системной папке.

Добавлено через 37 секунд
Цитата Сообщение от Тим70 Посмотреть сообщение
хотя системы не пиратскии
В пиратском дистрибутиве наоборот больше шансов что добавят этот кодек, чем в чистой винде...
0
Любитель
 Аватар для Тим70
1047 / 757 / 161
Регистрация: 27.01.2019
Сообщений: 1,531
03.12.2024, 19:12
HackerVlad, Писал когдато такой конвертор на ffmpeg,в архиве exe файл.
Миниатюры
Запись выделенной области экрана в видеофайл  
Вложения
Тип файла: zip ffmpeg конвертор.zip (277.9 Кб, 14 просмотров)
2
 Аватар для Argus19
1446 / 463 / 78
Регистрация: 24.09.2017
Сообщений: 2,542
Записей в блоге: 24
04.12.2024, 09:07  [ТС]
Цитата Сообщение от Тим70 Посмотреть сообщение
Вот пример записи
У меня виснут программы при попытке воспроизвести ваш файл.
Я попробовал перекодировку видео в разные форматы. Всё работает.
Цитата Сообщение от Тим70 Посмотреть сообщение
Вот пример записи
У меня виснут программы при попытке воспроизвести файл.
Цитата Сообщение от The trick Посмотреть сообщение
Есть AviFileOpen и т.п. функции для записи в avi. Забирать изображение можно стандартным BitBlt. Более сложный вариант это DirectShow. Забирать можно через DirectX. Это более сложный способ, но у него куча преимуществ типа разных форматов и аппаратного ускорения.
ffmpeg сам в себе содержит целую кучу всего. Я сделал, как советуют тут:
https://write.corbpie.com/ffmp... d-formats/
и получил списочек (см. вложение)
Вложения
Тип файла: zip Кодеки.zip (9.1 Кб, 8 просмотров)
0
 Аватар для Argus19
1446 / 463 / 78
Регистрация: 24.09.2017
Сообщений: 2,542
Записей в блоге: 24
04.12.2024, 10:47  [ТС]
Цитата Сообщение от MallSerg Посмотреть сообщение
ffmpeg -f gdigrab -framerate 30 -offset_x 10 -offset_y 20 -video_size 640x480 -show_region 1 -i desktop output.mkv
Сработало только вот так:
ffmpeg -f gdigrab -t 15 -framerate 30 -offset_x 10 -offset_y 20 -video_size 640x480 -show_region 1 -i desktop -f avi C:\output.mp4

Не могу понять, если я принудительно ставлю формат .mp4 и расширение выходного файла такое же, то получается что-то, что не воспроизводится. Если ставлю .avi, но формат выходного файла .mp4, то всё работает.
0
Любитель
 Аватар для Тим70
1047 / 757 / 161
Регистрация: 27.01.2019
Сообщений: 1,531
04.12.2024, 11:36
Argus19, Для ffmpeg много статей в интернете.
Тут
Тут
Тут
Тут
Посмотрите,я всю полезную информацию брал с них.
3
 Аватар для MallSerg
93 / 61 / 14
Регистрация: 16.11.2018
Сообщений: 294
04.12.2024, 17:21
Цитата Сообщение от Argus19 Посмотреть сообщение
Не могу понять, ....
Все ответы есть в официальной документации https://ffmpeg.org/documentation.html
Главное хоть приблизительно понимать что ты хочешь сделать
Если я правильно понял то ты хочешь с источника (https://ffmpeg.org/ffmpeg-devices.html) получить поток видео и закодировать его в видеофайл требуемого формата (https://ffmpeg.org/ffmpeg-codecs.html).
2
 Аватар для Argus19
1446 / 463 / 78
Регистрация: 24.09.2017
Сообщений: 2,542
Записей в блоге: 24
04.12.2024, 19:28  [ТС]
Цитата Сообщение от MallSerg Посмотреть сообщение
ты хочешь с источника
С экрана монитора.
На Win7 всё шикарно работает и с хорошим качеством. На Win10 не так красиво.
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
04.12.2024, 21:16
Argus19, нужно DPI манифест делать. Вообще давно бы глянул на AVI функции и сделал свой кастомный вариант. Либо через DirectShow, там нужно пару фильтров всего PushSource для захвата экрана и фильтр для записи в файл (зависит от формата)
1
 Аватар для Argus19
1446 / 463 / 78
Регистрация: 24.09.2017
Сообщений: 2,542
Записей в блоге: 24
05.12.2024, 09:24  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Вообще давно бы глянул на AVI функции
Я даже не могу выделить область экрана для записи. Координаты курсора определяются легко с помощью GetCursorPos. Чтобы зафиксировать координаты, хотелось использовать клик мыши. С этим проблема. Я могу определить hwnd окна программы, находящейся под курсором с помощью WindowFromPoint и даже прочитать название окна с помощью GetWindowText, а получить события мыши для этого окна с помощью GetMessage, или PeekMessage с ключами WM_MOUSEFIRST, WM_MOUSELAST, и даже без них, не получается. Значит, события находятся в разных потоках, т.к. при запуске из IDE, всё работает.
AVI функции и макросы работают с потоками, что усложняет их использование в VB.
Вот и получается, что проблемы уже на уровне примитивов. Можно, конечно, использовать клавиатуру, но это видится не удобным.
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
05.12.2024, 09:28
Argus19, запускаешь таймер и в таймере проверяешь.GetAsyncKeyState. Либо хук на мышь.
1
Вернулся
 Аватар для HackerVlad
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
05.12.2024, 12:16
Цитата Сообщение от Argus19 Посмотреть сообщение
Я даже не могу выделить область экрана для записи.
Самый первый пример который скидывал testuser2 там же это есть. Полупрозрачная форма-область для выделения области экрана. Блин что тут сложного вообще.
0
 Аватар для Argus19
1446 / 463 / 78
Регистрация: 24.09.2017
Сообщений: 2,542
Записей в блоге: 24
05.12.2024, 16:33  [ТС]
The trick, Взял ваш модуль:
https://www.cyberforum.ru/blog... g1943.html
удалил хук на клавиатуру. Процесс пошёл

Добавлено через 39 минут
Как передать букву в ту же командную консоль?
Shell вызывает другую консоль.

Добавлено через 1 час 56 минут
Получилось.
Visual Basic
1
2
ConsolehWnd = FindWindow("ConsoleWindowClass", "Администратор: C:\Windows\SYSTEM32\cmd.exe")
PostMessage ConsolehWnd, WM_CHAR, Asc("q"), 0&
Почему-то, если использовать функцию:
Visual Basic
1
SendMessage ConsolehWnd, WM_CHAR, Asc("q"), 0&
записывает в консоль букву "q" очень много раз вместо одного
0
1402 / 860 / 93
Регистрация: 08.02.2017
Сообщений: 3,672
Записей в блоге: 2
06.12.2024, 01:50
Argus19, посмотрите сдесь Работа с консолью из VB6
1
 Аватар для Argus19
1446 / 463 / 78
Регистрация: 24.09.2017
Сообщений: 2,542
Записей в блоге: 24
06.12.2024, 08:38  [ТС]
Цитата Сообщение от testuser2 Посмотреть сообщение
посмотрите сдесь
Там создание консоли. WriteConsole пуляет только в ту консоль, которая создана. А PostMessage куда угодно по hwnd.
Мне проще использовать Shell.
0
 Аватар для Argus19
1446 / 463 / 78
Регистрация: 24.09.2017
Сообщений: 2,542
Записей в блоге: 24
06.12.2024, 13:40  [ТС]
Во вложении набросок программки.
В текстовое поле вставить полный путь к файлу ffmpeg.exe, нажать кнопку: "область захвата"
Отметить мышью верхний левый угол захватываемого изображения экрана монитора, потом правый нижний и нажать кнопку "старт", когда посчитаем, что хватит писать, нажать кнопку "стоп" и потом - "выход".
Вложения
Тип файла: zip ScreenCapture.zip (8.6 Кб, 21 просмотров)
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.12.2024, 13:40

Сдвиг выделенной области
Помогите пожалуйста с решением данной задачи. На рабочем листе Excel выделена произвольная заполненная числами прямоугольная область....

Увеличение Выделенной области
Как реализовать лупу на панели, т.е. что делать с прямоугольником или координатами которые мы получили протянув по панели зажатую левую...

Увеличение выделенной области
Не знаю как это сделать... У меня увеличивается по щелчку. Необходимо чтобы выделялась прямоугольная область, которая будет увечится....

Отправление выделенной области на почту.
При отправке на почту он выделяет все элементы. Где, что написать, что бы отправлялась выделенная область? В дополнении все файлы...

OpenGL(С++) закрашивание выделенной области
как закрасить выделенную облась не перересовывая контура... у меня в проге должно быть много кружков и они должны менять цвет


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
57
Ответ Создать тему
Новые блоги и статьи
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru