Захват экрана - командная строка?

12

Есть ли инструмент командной строки, который может записать экран вашего компьютера и аудиоустройство, а затем сохранить его в файл?

Chealion
источник
Любая причина, почему это должно быть инструментом CLI? Вы получаете снимок экрана бесплатно с QuickTime.
igorw
Я хотел бы назвать это в сценарии оболочки и сделать это без присмотра.
Привет Кит, добро пожаловать в StackOverlow. Это не выглядит программированием с первого взгляда, хотя на самом деле это может быть так, если вы планируете записать его в пакетный файл или что-то в этом роде. Возможно, вы захотите перефразировать его, чтобы оно не закрылось из-под контроля.
Брайан Маккей

Ответы:

9

Mac OS X предлагает возможность снимать статические снимки экрана из командной строки, используя утилиту, которая называется невообразимо screencapture. Вы можете найти больше информации, запустив man screencapture.

например. screencapture ~/Desktop/picture.png


Что касается записи движения и компьютерного звука, вы можете сделать это через AppleScript с помощью QuickTime Player X, если вы используете Mac OS X 10.6 или более новую версию. (Однако, это определенно не "тихий" и будет работать только когда кто-то вошел в систему)

(Запись экрана на 5 секунд, просто возможная отправная точка)

tell application "QuickTime Player"
    --activate
    new screen recording
    start document 1
    delay 5
    stop document 1
    save document 1 in file "/tmp/test.mov"
    quit
end tell
Chealion
источник
ScreenCapture позволяет делать только неподвижные изображения, без записи видео или звука.
MacLemon
@MacLemon: добавлены некоторые пояснения.
Chealion
2
К вашему сведению, просто ссылаюсь на сообщение в блоге, которое имеет улучшенную версию для QuickTime Applescript выше: netjunki.org/blog/…
Дэвид
1
Блог @David, о котором упоминается, все еще доступен в кеше Google, и отмечает: «Кажется, что когда вы пытаетесь вызвать save в 10.7, quicktime просто игнорирует вызов. Или что-то в этом роде. Сценарий будет зависать там вечно, а затем время ожидания». Это верно для меня в 10.8 ...
ptim
2

Я использую SOX и VLC для захвата, crontab для планирования, XLD для создания m4a и MP4Box для мультиплексирования. Он довольно гибкий, но требует знания сценариев Bash (возможно, также сценария Apple). Я нашел свое вдохновение в сценарии Диего Массанти mkmp4.

Основные процессы для запуска:

rec -q -c $C -r 48000 -b 16 $AFILE trim 0 $HH:$MM:00 &

VLC -I dummy screen:// --screen-fps=25 --quiet --sout "#transcode{vcodec=h264,vb=3072}:standard{access=file,mux=mp4,dst=$FILE}" --run-time $TIME vlc://quit

Планирование записи:

crontab -l
0       8       *       *       1-5     ~/capture.sh 3 0 recording-name 1

Вы можете получить представление о том, что делает сценарий: запись 3-часового захвата, монофонический звук, каждый рабочий день в 8:00


Я не нашел и не скомпилировал SOX с поддержкой аудиопотоков MPEG, поэтому использовал FLAC для экономии места; Я использую XLD для преобразования его в AAC-HE 16 кбит / с, чего достаточно для передачи голоса.

Следующий шаг: мультиплексировать аудио и видео для создания mp4. Если вы не против использовать GUI, то MPEG StreamClip (или QuickTime) также подойдет.

MP4Box -add $1.m4a -sbr -add $1.m4v -fps $2.0 -inter 500 $1.mp4

Я использую это ежедневно для создания архива GoToWebinar, но когда следующий выпуск FFmpeg поддерживает кодек G2M4, я больше не буду беспокоиться. Да, есть также OSAscript для запуска вебинара, который также потребовал избавиться от флага com.apple.quarantine, чтобы отключить предупреждение (Вы уверены, что хотите открыть его?).

ссылки по теме:

http://blog.massanti.com/2008/09/26/mkmp4-automated-h264-aacplus-encoder-script-mac-linux/

rhoracio
источник
Это может быть связано и с VLC, есть небольшая подсказка о том, как использовать это в этом сообщении в блоге: netjunki.org/blog/…
Дэвид
1

Вы можете использовать программное обеспечение ffmpeg. Чтобы установить его на Mac, следуйте инструкциям здесь . Затем используйте команду:

$ffmpeg -f alsa -ac 2 -i hw:0,0 -f x11grab -r 30 -s $(xwininfo -root | grep 'geometry' | awk '{print $2;}') -i :0.0 -acodec pcm_s16le -vcodec libx264 -vpre lossless_ultrafast -threads 0 -y output.mkv
Нехал Дж Вани
источник
1
Я сомневаюсь, что это будет работать на OSX, alsa и x11grab, скорее всего, доступны только для Linux-сборок ffmpeg.
Адам МВ
0

Для захвата экрана есть несколько инструментов с открытым исходным кодом. Вы должны искать "снимок экрана", используя менеджер пакетов в Linux. Такие инструменты, как scrotможно вызвать в сценарии. Если вы планируете делать это программно, в Imlib2 есть необходимые точки входа.

Захват звука действительно запись для микрофона звукового устройства. Это на самом деле не снимок, и вы должны определить, как долго должна выполняться запись. Подойдет любой диктофон.

Есть также инструменты, которые делают видео вашего рабочего стола.

Kriss
источник
0

Выгрузка содержимого устройства кадрового буфера Linux в файл может быть чем-то похожим на то, что вы ищете. Ниже я процитировал соответствующую часть учебника по программированию устройства Linux 2.2 Framebuffer . Вам нужно будет сконфигурировать вашу систему для включения устройства framebuffer (проверьте, есть ли в вашей системе / dev / fb0), у меня его нет в Ubuntu 9.04.

Когда у вас есть текстовые режимы с высоким разрешением, вы можете начать экспериментировать. У вас будет устройство / dev / fb0, которое вы можете посмотреть как любой обычный файл. Чтобы сделать скриншот, все, что вам нужно сделать, это

cat / dev / fb0> ~ / sshot

И у вас будет довольно большой файл с содержимым памяти вашей видеокарты внутри. Теперь, если вы очистите экран и введите

cat ~ / sshot> / dev / fb0

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

sauparna
источник
0

Вы можете использовать импорт из ImageMagick, но это только Linux. Затем вы можете пойти в терминал и выполнить:

import screenshot.png
karlphillip
источник
0

Я также использую Snow Leopard на устаревшем macbook, и, поскольку я пытаюсь изучить Objective C, я трачу некоторое время на создание инструмента, который может захватывать определенные окна.

https://github.com/vorgos/QuickGrab

Это инструмент командной строки, который фиксирует самое активное окно или любое указанное вами окно.

Надеюсь, что это помогло.

Чувак по имени Бен
источник