Quelquun ma suggéré de diriger une copie de laffichage X non modifié vers un fichier et de convertir ensuite ce fichier en fichier vidéo à usage général. Quelles commandes utiliserais-je pour faire cela sur un système Kubuntu? (Edit: il a dit quelque chose sur la connexion dun port daffichage à un fichier.) Si ce nest pas possible, quelle est ma meilleure option pour un enregistrement décran dexcellente qualité qui ne dépend pas dun matériel rapide?
Contexte: Jai essayé dutiliser avconv avec -f x11grab et quelques programmes GUI. Cependant, peu importe ce que jessaye, la vidéo résultante a des artefacts / flou ou est saccadée (images manquantes). Ceci est probablement dû à des contraintes CPU / mémoire.
Objectifs:
- La qualité de la vidéo ne doit pas être sensiblement différente de celle de voir la session directement sur un écran, car le but est de montrer une animation application.
- La vidéo finale doit être dans un format commun qui peut être envoyée aux utilisateurs Windows et utilisée sur le Web. Je pense que H.264 MP4 devrait fonctionner.
- La solution ne doit pas présumer de grandes connaissances préalables. Je connais la ligne de commande et les commandes de base de Linux, mais japprends toujours Linux et je ne connais pas grand chose aux codecs vidéo.
Ce que jai déjà essayé:
- Meilleure commande à ce jour:
ffmpeg -f x11grab -s xga -r 30 -i :0.0 -qscale 0.1 -vcodec huffyuv grab.avi
, puis convertir en mp4 avecffmpeg -i grab.avi -sameq -vcodec mpeg4 grab.mp4
.- La qualité dimage est excellente, mais sur mon système de test, elle est à la traîne de lordinateur. Sur un système cible plus rapide, il ne ralentit pas, mais les images sont évidemment sautées, ce qui rend la vidéo pas très fluide .
- Jessaie toujours de comprendre comment enregistrer la capture. avi à SHM pour voir si cela aide.
- Utilisation des enregistreurs GUI Istanbul et RecordMyDesktop
- Commande simple:
avconv -f x11grab -s xga -r 25 -i :0.0 simple.mpg
en utilisant avconv version 0.8.3-4: 0.8.3-0ubuntu0.12.04.1 - Ajout de
-codec:copy
(échoue avec:Requested output format "x11grab" is not a suitable output format
) - Ajout de
-same_quant
(donne une excellente qualité, mais est très saccadé / il manque beaucoup dimages) - Ajout de
-vpre lossless_ultrafast
(échoue avec:Unrecognized option "vpre"
,Failed to set value "lossless_ultrafast" for option "vpre"
) - Ajout de diverses valeurs de
-qscale
- Ajout de diverses valeurs de
-b
- Ajout de
-vcodec h264
(renvoie à plusieurs reprises:Error while decoding stream #0:0
,[h264 @ 0x8300980] no frame!
)- Remarque: h264 est répertorié dans Sortie sous la forme
DE h264 raw H.264 video format
- Remarque: h264 est répertorié dans Sortie sous la forme
Réponse
Si votre disque dur le permet, vous pouvez essayer de le faire de cette façon:
Commencez par écrire le fichier non compressé:
ffmpeg -f x11grab -s SZ -r 30 -i :0.0 -qscale 0 -vcodec huffyuv grab.avi
ici SZ
est votre taille daffichage (par exemple 1920 x 1080).
Après cela, vous pouvez le compresser à tout moment que vous voulez:
ffmpeg -i grab.avi grab.mkv
Bien sûr, vous pouvez modifier la compression, sélectionner le codec et ainsi sur.
Commentaires
Réponse
Jai eu du succès avec:
ffmpeg -f x11grab -video_size 1920x1080 -framerate 30 -i :1 \ -vcodec libx264 -preset ultrafast -qp 0 -pix_fmt yuv444p \ video.mkv
Points clés:
- -qp 0: mode sans perte x264
- -préset ultra-rapide: plus petite utilisation du processeur, grande taille
- -pix_fmt yuv444p: la valeur par défaut, mais ffmpeg suggère yuv420p, qui est avec perte
Astuce: capture décran et superposition de webcam avec:
ffmpeg -f x11grab -thread_queue_size 64 -video_size 1920x1080 -framerate 30 -i :1 \ -f v4l2 -thread_queue_size 64 -video_size 320x180 -framerate 30 -i /dev/video0 \ -filter_complex "overlay=main_w-overlay_w:main_h-overlay_h:format=yuv444" \ -vcodec libx264 -preset ultrafast -qp 0 -pix_fmt yuv444p \ video.mkv
https://trac.ffmpeg.org/wiki/Capture/Desktop
[edit 20180418] Mise à jour pour Gnome Shell et Wayland:
#!/usr/bin/env python3 from dbus import SessionBus, Interface from os import getcwd, path from sys import argv BUS_NAME = "org.gnome.Shell.Screencast" PATH_NAME = "/org/gnome/Shell/Screencast" INTERFACE_NAME = BUS_NAME PIPELINE="x264enc pass=qual quantizer=0 speed-preset=ultrafast ! queue ! matroskamux" if path.isabs(argv[1]): name = argv[1] else: name = path.join(getcwd(), argv[1]) bus = SessionBus() screen_cast = bus.get_object(BUS_NAME, PATH_NAME) screen_cast = Interface(screen_cast, INTERFACE_NAME) ret, name = screen_cast.Screencast(name, {"pipeline": PIPELINE}) if not ret: print("Error starting screencast.") raise SystemExit(1) try: i = input() except (EOFError, KeyboardInterrupt): pass finally: screen_cast.StopScreencast()
Commentaires
- comment peut je détermine ma taille décran?
Réponse
Cest une solution de contournement, et probablement pas « presque parfaite » car cela peut dépendre de la vitesse du réseau ou dautres facteurs susceptibles dentraver le flux vidéo.
Utilisez VNC ou Teamviewer et connectez-vous depuis votre ordinateur portable ou de bureau à lautre ordinateur. Si vous disposez dun ordinateur portable Windows ou OSX, yo Vous avez probablement des outils qui peuvent enregistrer cela, et je crois que teamviewer peut enregistrer une session lui-même. Cest facile à essayer, et vous pouvez alors décider si la qualité est suffisante.
Teamviewer a tendance à évoluer, mais je ne sais pas si cela se produit également avec les sessions enregistrées.
VNC ne compresse ni ne se met à léchelle, et votre ordinateur portable / de bureau a besoin dune résolution plus élevée que celle de lautre machine. La qualité est bonne. Peut-être que la visionneuse VNC que vous utilisez peut enregistrer. Je suis sur Ubuntu maintenant, et le visualiseur standard ne peut pas le faire.
Enregistrement décran pour affichage à un public ou sur le Web – il existe des outils spéciaux pour cela qui peuvent capturer les clics, suivre et zoomer sur la souris, et ont d autres options pour rendre plus clair ce que vous faites.Je vous suggère de jeter un œil à ceux-ci aussi. Google pour « logiciel denregistrement décran ».
Réponse
Avez-vous essayé rfbroxy ?
Je lutilise pour enregistrer des sessions décran X11.
Vous pouvez lutiliser dans un mode où il nenregistre quune image, sil y a un CHANGEMENT .
−-type=WHAT
WHAT = écran est même la valeur par défaut, selon la page de manuel.
Commentaires
- Que ‘ est intéressant. Comment faire ça?
- @GunarGessner devrait être le comportement par défaut. Une autre méthode consiste à réagir aux événements de souris / clavier. Cela peut être encore mieux si vous avez une horloge à lécran et que vous ne voulez pas faire de photo alors que seule cette horloge change …
Réponse
Jutilise Camtasia pour enregistrer ma vidéo de jeu et ma vidéo en ligne. Jai également utilisé un enregistreur vidéo fraps avant, mais les fps chutent pendant la lecture. Camtasia donne un fps plus élevé, mais le seul problème est que chaque fois que je dois convertir la sortie .CAMREC en avi comme vous pouvez le voir dans entrez la description du lien ici entrez la description du lien ici . Le .camrec est le format propriétaire de camtasia et ne peut être lu sur aucun lecteur tiers comme Windows Media Player et vlc.
ffmpeg -f x11grab -s 2560x1080 -r 30 -i :0.0 -qscale 0 -vcodec huffyuv grab.avi