Capture d'écran - ligne de commande?

12

Existe-t-il un outil en ligne de commande qui peut enregistrer l'écran de votre ordinateur et le périphérique audio, puis l'enregistrer dans un fichier?

Chealion
la source
Une raison pour laquelle cela doit être un outil CLI? Vous obtenez la capture d'écran gratuitement avec QuickTime.
igorw
Je voudrais l'appeler dans un script shell et le faire sans surveillance.
Salut Keith, bienvenue sur StackOverlow. Cela ne semble pas lié à la programmation en un coup d'œil, bien que cela puisse être le cas si vous prévoyez de l'écrire dans un fichier de commandes ou quelque chose. Vous voudrez peut-être le reformuler afin qu'il ne soit pas fermé d'emblée.
Brian MacKay

Réponses:

9

Mac OS X offre la possibilité de capturer des captures d'écran statiques à partir de la ligne de commande à l'aide d'un utilitaire appelé sans imagination screencapture. Vous pouvez trouver plus d'informations en exécutant man screencapture.

par exemple. screencapture ~/Desktop/picture.png


En ce qui concerne l'enregistrement des mouvements et de l'audio de l'ordinateur, vous pouvez le faire via AppleScript à l'aide de QuickTime Player X si vous utilisez Mac OS X 10.6 ou plus récent. (Cependant, ce n'est certainement pas "silencieux" et ne fonctionnera que lorsque quelqu'un sera connecté)

(Enregistrement de l'écran pendant 5 secondes, juste un point de départ possible)

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
la source
screencapture permet uniquement de faire des images fixes, pas d'enregistrements vidéo ou sonores.
MacLemon
@MacLemon: Ajout d'une clarification.
Chealion
2
Pour info, il suffit de référencer un article de blog qui a amélioré la version du Quicktime Applescript ci-dessus: netjunki.org/blog/…
David
1
Le blog mentionné par @David est toujours disponible dans le cache de Google et note: "Il semble que lorsque vous essayez d'appeler save en 10.7 quicktime ignore simplement l'appel. Ou quelque chose comme ça. Le script se bloque pour toujours, puis expire." C'est vrai pour moi en 10.8…
ptim
2

J'utilise SOX et VLC pour la capture, crontab pour la planification, XLD pour créer m4a et MP4Box pour le multiplexage. Il est assez flexible, mais nécessite une connaissance des scripts Bash (peut-être aussi du script Apple) J'ai trouvé mon inspiration dans le script mkmp4 de Diego Massanti.

processus de base à lancer:

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

Planification de l'enregistrement:

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

vous pouvez avoir une idée de ce que fait le script: enregistrer 3h de capture, son mono, chaque jour ouvrable à 8h


Je n'ai pas trouvé ni compilé SOX activé pour les flux audio MPEG, donc j'utilise FLAC pour économiser de l'espace; J'utilise XLD pour le convertir en AAC-HE 16kbps, ce qui est suffisant pour la voix.

Étape suivante: multiplexez l'audio et la vidéo pour créer un mp4. Si cela ne vous dérange pas d'utiliser l'interface graphique, alors MPEG StreamClip (ou QuickTime) sert également bien.

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

J'utilise cela tous les jours pour créer des archives de GoToWebinar, mais lorsque la prochaine version de FFmpeg prendra en charge le codec G2M4, je ne m'inquiéterai plus. Oui, il y a également OSAscript pour lancer le webinaire qui a également nécessité de se débarrasser de l'indicateur com.apple.quarantine pour désactiver l'avertissement (êtes-vous sûr de vouloir l'ouvrir?).

liens:

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

rhoracio
la source
Cela peut également être lié à VLC, il y a une petite astuce sur la façon de l'utiliser dans ce billet de blog: netjunki.org/blog/…
David
1

Vous pouvez utiliser le logiciel ffmpeg. Pour l'installer sur un Mac, suivez les instructions ici . Utilisez ensuite la commande:

$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
Nehal J Wani
la source
1
Je doute que cela fonctionne sur OSX, alsa et x11grab ne sont probablement disponibles que sur les versions linux de ffmpeg.
Adam MW
0

Pour capturer l'écran, il existe plusieurs outils Open Source. Vous devez rechercher «capture d'écran» à l'aide d'un gestionnaire de packages sous Linux. Des outils comme scrotpeuvent être appelés dans un script. Si vous prévoyez de le faire par programme, il y a les points d'entrée nécessaires dans Imlib2.

La capture du son est vraiment un enregistrement pour le périphérique audio du microphone. Ce n'est pas vraiment un instantané et vous devez gérer la durée de l'enregistrement.Tout magnétophone fera l'affaire.

Il existe également des outils qui permettent de faire une vidéo de votre bureau.

kriss
la source
0

Le vidage du contenu du périphérique framebuffer Linux dans un fichier peut être quelque chose de similaire à ce que vous recherchez. Ci-dessous, j'ai cité la partie pertinente du didacticiel de programmation de périphérique Linux 2.2 Framebuffer , jetez un œil. Vous devrez configurer votre système pour activer le périphérique framebuffer (vérifiez si vous avez / dev / fb0 sur votre système), je ne l'ai pas sur mon Ubuntu 9.04.

Lorsque vous disposez de modes de texte haute résolution, vous pouvez commencer à expérimenter. Vous aurez un périphérique / dev / fb0 que vous pouvez regarder comme n'importe quel fichier normal. Pour prendre une capture d'écran, il vous suffit de

cat / dev / fb0> ~ / sshot

Et vous aurez un assez gros fichier avec le contenu de la mémoire de votre carte graphique à l'intérieur. Maintenant, si vous effacez l'écran et tapez

cat ~ / sshot> / dev / fb0

Vous devriez avoir un écran qui ressemble exactement à avant. Bien sûr, la seconde où vous commencez à taper l'affichage revient à la normale.

sauparna
la source
0

Vous pouvez utiliser l' importation depuis ImageMagick, mais c'est uniquement Linux. Ensuite, vous pouvez aller sur un terminal et exécuter:

import screenshot.png
karlphillip
la source
0

J'utilise également Snow Leopard sur un macbook vieillissant et comme j'essaie d'apprendre l'Objectif C, je passe un peu de temps à créer un outil capable de capturer des fenêtres spécifiques.

https://github.com/vorgos/QuickGrab

Il s'agit d'un outil en ligne de commande qui capture la fenêtre la plus active en haut ou toute fenêtre que vous spécifiez.

J'espère que cela a aidé.

Mec nommé Ben
la source