Подтвердить что ты не робот

Захват экрана Windows с помощью ffmpeg

ffmpeg - это кросс-платформенное и очень мощное программное обеспечение для обработки видео/аудио или для его потока. На Linux ffmpeg может захватить экран X11 с помощью команды ниже:

ffmpeg -f x11grab -r 25 -s cif -i :0.0 out.mpeg

Но можно ли захватить Windows Desktop с помощью ffmpeg?

4b9b3361

Ответ 2

Используйте встроенный скриншббер GDI (без необходимости установки):

ffmpeg -f gdigrab -framerate 10 -i desktop [output]

Это отобразит ВСЕ ваши дисплеи как один большой непрерывный дисплей.

Если вы хотите ограничить область и показать захваченную область:

ffmpeg -f gdigrab -framerate ntsc -offset_x 10 -offset_y 20 -video_size 640x480 \
-show_region 1 -i desktop [output]

Чтобы захватить содержимое окна с именем "Калькулятор":

ffmpeg -f gdigrab -framerate 25 -i title=Calculator [output]

Я обнаружил, что частота кадров 10 хорошо подходит для захвата экрана (вы можете изменить ее).

Я закодировал как файлы, так и потоковые выходы, и он работает очень хорошо.

Ответ 3

* этот код успешно проверен на Windows XP Sp3 и ffmpeg (последняя версия 28/12/2012 для окон) -ffmpeg.exe необходимо скопировать в каталог c:\windows\system32 для доступа из любого места вашего ПК) ScreenCapture можно скачать бесплатно (google). Установите его (файл msi). Он автоматически регистрируется из файла (ScreenCapture.ax). Он также отправляется с файлом IscrenCapture.h.

-захватить видео и звук экрана (отрегулируйте аудиоустройство устройства, которое у вас есть, - это RealTek AC97  Аудио) Я не могу установить параметры UscreenCapture в реестре (даже в файле IscrenCapture.h). Он всегда обеспечивает только полный захват. Ошибка в расположении реестра, в типах параметров (dwords указаны автором, но устанавливается reg_binary)... то я использовал функцию ffmpeg crop() для захвата любого региона на экране. Командная строка:

xwidth, xheight - ширина и высота области, которую хотите захватить. xleft, xtop координата верхней левой точки захвата прямоугольника.

ffmpeg -f dshow -i video="UScreenCapture":audio="Realtek AC97 Audio" -vf crop=xwidth:xheight:xleft:xtop c:\output.flv

для захвата видео можно использовать только

ffmpeg -f dshow -i video="UScreenCapture" -vf  crop=xwidth:xheight:xleft:xtop c:\output.flv

NB: x11grab не работает над окнами (это специально для Linux/X11)  можно использовать wscript.shell, чтобы закодировать команду линии молча.   Я использовал формат видео вывода как flv, потому что у меня лучший рендеринг и небольшая емкость. Я не добился успеха с mp4.

вы можете узнать свои медиа-устройства с помощью ffmpeg:

ffmpeg -list_devices true -f dshow -i dummy

-Вы можете записать любой звук с вашего компьютера с помощью этой командной строки (адаптируйте имеющееся у вас устройство):

ffmpeg -f dshow -i audio="Realtek AC97 Audio" -acodec libmp3lame "c:\out.mp3"

Ответ 4

Патч для его реализации был отправлен в список рассылки ffmpeg некоторое время назад. Это реализовало бы gdigrab для работы так же, как x11grab.

Кроме того, страница ffmpeg codec говорит, что поддерживается захват "VfW" (видео для Windows? aka DirectShow?).

Ответ 6

Это поможет захватить рабочий экран в окнах:

ffmpeg -y -rtbufsize 100M -f gdigrab -t 00:00:30 -framerate 30 -probesize 10M -draw_mouse 1 -i desktop -c: v libx264 -r 30 -приставка ультрабыстрого -регулярного zerolatency -crf 25 -pix_fmt yuv420p c:/video_comapre2.mp4