Ответ 1
используйте захват экрана directshow:
http://code.google.com/p/ardesia/issues/detail?id=19
https://github.com/rdp/on-screen-capture-recorder-to-video-windows-free
ffmpeg - это кросс-платформенное и очень мощное программное обеспечение для обработки видео/аудио или для его потока. На Linux ffmpeg может захватить экран X11 с помощью команды ниже:
ffmpeg -f x11grab -r 25 -s cif -i :0.0 out.mpeg
Но можно ли захватить Windows Desktop с помощью ffmpeg?
используйте захват экрана directshow:
http://code.google.com/p/ardesia/issues/detail?id=19
https://github.com/rdp/on-screen-capture-recorder-to-video-windows-free
Используйте встроенный скриншббер 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 хорошо подходит для захвата экрана (вы можете изменить ее).
Я закодировал как файлы, так и потоковые выходы, и он работает очень хорошо.
* этот код успешно проверен на 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"
Патч для его реализации был отправлен в список рассылки ffmpeg некоторое время назад. Это реализовало бы gdigrab
для работы так же, как x11grab
.
Кроме того, страница ffmpeg codec говорит, что поддерживается захват "VfW" (видео для Windows? aka DirectShow?).
http://nerdlogger.com/2011/11/03/stream-your-windows-desktop-using-ffmpeg/
объясняет, как это сделать.
в основном, установите uscreencapture dshow filter, затем ffmpeg -f dshow -i video = "UScreenCapture" out.mp4
Это поможет захватить рабочий экран в окнах:
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