web-dev-qa-db-fra.com

Capture d'écran Windows avec ffmpeg

ffmpeg est un logiciel multiplateforme et très puissant pour gérer la vidéo/audio ou pour le diffuser. Sur Linux, ffmpeg peut capturer l'écran X11 avec une commande ci-dessous:

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

Mais est-il possible de récupérer Windows Desktop avec ffmpeg?

37
kamae

Utilisez le intégré GDI screengrabber (aucune installation nécessaire) comme ceci:

ffmpeg -f gdigrab -framerate 10 -i desktop [output]

Cela capturera TOUS vos écrans comme un grand écran contigu.

Si vous souhaitez limiter à une région et afficher la zone à saisir:

ffmpeg -f gdigrab -framerate ntsc -offset_x 10 -offset_y 20 -video_size 640x480 \
-show_region 1 -i desktop [output]

Pour saisir le contenu de la fenêtre nommée "Calculatrice":

ffmpeg -f gdigrab -framerate 25 -i title=Calculator [output]

J'ai trouvé que le framerate 10 convient bien à la capture d'écran (vous pouvez le changer).

J'ai encodé à la fois des fichiers et des sorties de streaming et cela fonctionne assez bien.

52
frustrated

Cela vous aidera à capturer l'écran de travail sur Windows:

ffmpeg -y -rtbufsize 100M -f gdigrab -t 00:00:30 -framerate 30 -probesize 10M -draw_mouse 1 -i desktop -c: v libx264 -r 30 -preset ultrarapide -tune zerolatency -crf 25 -pix_fmt yuv420p c: /video_comapre2.mp4

6
M. D. P

* ce code est essayé avec succès sur windows XP Sp3 et ffmpeg (dernière version 28/12/2012 pour windows) -ffmpeg.exe doit être copié dans le répertoire c:\windows\system32 pour être accessible depuis n'importe où depuis votre PC) ScreenCapture peut être téléchargé gratuitement (google). Installez-le (fichier msi). Il est enregistré automatiquement à partir du (fichier ScreenCapture.ax). Il est également envoyé avec un fichier IscrenCapture.h.

-capture écran vidéo et audio (ajustez l'audio de votre appareil, le mien est RealTek AC97 Audio) Je ne peux pas installer les paramètres d'UscreenCapture dans le registre (essayé même sur le fichier IscrenCapture.h) .Il fournit toujours la capture d'écran complète uniquement. Il y a une erreur dans l'emplacement du registre, dans les types de paramètres (les dwords sont spécifiés par l'auteur mais reg_binary est installé) ... alors j'ai utilisé la fonction crop () ffmpeg pour capturer n'importe quelle région sur l'écran. La ligne de commande est:

xwidth, xheight sont la largeur et la hauteur de la région que vous souhaitez capturer. xleft, xtop la coordonnée du point supérieur gauche de la capture du rectangle.

ffmpeg -f dshow -i video="UScreenCapture":audio="Realtek AC97 Audio" -vf crop=xwidth:xheight:xleft:xtop c:\output.flv

pour capturer la vidéo ne peut utiliser

ffmpeg -f dshow -i video="UScreenCapture" -vf  crop=xwidth:xheight:xleft:xtop c:\output.flv

NB: x11grab ne fonctionne pas sur Windows (c'est spécifiquement pour Linux/X11) peut utiliser wscript.Shell pour coder la commande de ligne en silence. J'ai utilisé la sortie vidéo au format flv car j'ai le meilleur rendu et une petite capacité. Je ne réussis pas avec mp4.

vous pouvez connaître vos appareils multimédias avec ffmpeg:

ffmpeg -list_devices true -f dshow -i dummy

-vous pouvez enregistrer n'importe quel son de votre PC avec cette ligne de commande (adaptez l'appareil que vous avez):

ffmpeg -f dshow -i audio="Realtek AC97 Audio" -acodec libmp3lame "c:\out.mp3"
6
Ybenam

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

explique comment le faire.

en gros, installez uscreencapture dshow filter, puis ffmpeg -f dshow -i video = "UScreenCapture" out.mp4

2
somejerk

Un correctif pour l'implémenter a été envoyé à la liste de diffusion ffmpeg il y a quelque temps. Cela aurait implémenté gdigrab pour fonctionner comme x11grab.

De plus, la capture page du codec ffmpeg indique que la capture "VfW" (Vidéo pour Windows? Aka DirectShow?) Est prise en charge.

2
Andreas Klöckner

Cela peut être fait sans utiliser x11grab/xcbgrab/gdigrab à l'aide des commandes ci-dessous dans linux.

Pour enregistrer une vidéo,

 ffmpeg -f x11grab  -s 1366x768 -i :0.0 -r 25 -vcodec libx264  output.mkv

Pour enregistrer une image,

./ffmpeg -f fbdev -framerate 1 -i /dev/fb1 -frames:v 1 screenshot3.jpeg
0
Atita Halemani