Захват экрана Windows с помощью ffmpeg - PullRequest
38 голосов
/ 20 июля 2011

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

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

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

Ответы [ 5 ]

49 голосов
/ 26 июня 2015

Используйте встроенный экранный граббер 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]

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

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

6 голосов
/ 01 декабря 2017

Это поможет для захвата рабочего экрана на окнах:

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

6 голосов
/ 04 января 2013

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

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

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

Примечание: x11grab не работает на Windows (специально для 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"
2 голосов
/ 30 сентября 2012

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

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

2 голосов
/ 03 августа 2012

http://nerdlogger.com/2011/11/03/stream-your-windows-desktop-using-ffmpeg/

объясняет, как это сделать.

в основном, установите фильтр uscreencapture dshow, затем ffmpeg -f dshow -i video = "UScreenCapture" out.mp4

...