Захоплення екрану - командний рядок?


12

Чи є там інструмент командного рядка, який може записувати екран вашого комп'ютера та аудіопристрій, а потім зберегти його у файл?


Будь-яка причина, чому це має бути інструментом 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

Захоплення екрана дозволяє робити фотографії, не записувати відео чи звуки.
MacLemon

@MacLemon: Додано уточнення.
Chealion

2
FYI, просто посилаючись на повідомлення в блозі, що покращив версію на Quicktime Applescript вище: netjunki.org/blog/…
Девід

1
Блог @David згаданий все ще доступний у кеш-пам'яті Google, і зазначає: "Схоже, що при спробі дзвінка зберегти в 10,7 швидкості просто ігнорує виклик. Або щось подібне. Сценарій буде зависнути там назавжди, а потім вимкнеться". Це справедливо для мене в 10.8…
ptim

2

Я використовую SOX та VLC для захоплення, crontab для планування, XLD для створення m4a та MP4Box для мультиплексування. Це досить гнучко, але вимагає знань сценаріїв Баша (можливо, також сценарію 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 ранку


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

Наступний крок: мультиплексне аудіо та відео для створення mp4. Якщо ви не проти використовувати графічний інтерфейс, то 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/


Це може бути пов’язано і з 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.
Адам MW

0

Для захоплення екрану існує кілька інструментів з відкритим кодом. Вам слід шукати "захоплення екрана" за допомогою менеджера пакетів в Linux. Такі інструменти scrotможна назвати в сценарії. Якщо ви плануєте це робити програмно, в Imlib2 є необхідні точки входу.

Захоплення звуку справді є записом для звукового пристрою мікрофона. Це насправді не знімок, і вам слід керувати тим, як довго слід робити запис. Буде робити будь-який диктофон.

Також є інструменти, які роблять відео з робочого столу.


0

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

Коли у вас є текстові модулі з високою роздільною здатністю, ви можете почати експериментувати. У вас буде пристрій / dev / fb0, на який ви можете дивитись як на будь-який звичайний файл. Щоб зробити знімок екрана, все, що вам потрібно зробити - це

cat / dev / fb0> ~ / sshot

І у вас буде досить великий файл із вмістом пам’яті вашої відеокарти всередині. Тепер, якщо очистити екран і введіть

cat ~ / sshot> / dev / fb0

У вас повинен бути дисплей, який виглядає точно так, як раніше. Звичайно, секон d, який ви починаєте набирати дисплей, повертається до нормального.


0

Ви можете використовувати імпорт із ImageMagick, але це лише Linux. Потім ви можете перейти до терміналу та виконати:

import screenshot.png

0

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

https://github.com/vorgos/QuickGrab

Це інструмент командного рядка, який захопить найактивніше вікно або будь-яке вказане вами вікно.

Сподіваюся, що це допомогло.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.