Gnome 3.10 ScreenCast + Audio sur Arch

J'essaie d'save mon bureau (y compris audio) dans Gnome 3.10 sur Arch Linux avec l'enregistreur d'écran embedded ( Ctrl + Alt + Maj + R ). Selon ce post (et d'autres solutions similaires qui peuvent être trouvées sur Internet), j'ai essayé d'appliquer les parameters gconf

gsettings set org.gnome.shell.recorder pipeline "queue ! videorate ! vp8enc quality=10 speed=2 ! mux. pulsesrc ! audio/x-raw-int ! queue ! audioconvert ! vorbisenc ! mux. webmmux name=mux" 

mais j'obtiens l'erreur suivante:

 No such schema 'org.gnome.shell.recorder' 

En naviguant avec dconf-editor je vois que org.gnome.shell.recorder n'est pas présent et je n'ai rien trouvé de similaire … Comment puis-je save mon bureau dans gnome shell 3.10 avec audio interne (pas de micro)?

EDIT: Aussi, je voudrais ne pas inclure le slider de la souris pendant l'logging.

Cette key / schéma a été supprimé dans gnome-shell ≥ 3.10 donc les solutions que vous avez trouvées sur internet ne fonctionnent plus.
Ray Strode, gnome dev 1 :

J'ai demandé à quelques personnes s'il y avait un moyen de le faire dans gnome-shell 3.10 et plus tard et je n'ai pas eu de bonne réponse. C'est compliqué par le fait que gsd gère maintenant les choses de départ et que le schéma org.gnome.shell.recorder est parti.

La suggestion de Ray là-bas (assigner un raccourci à cette command de gjs ) est assez cool mais son seul gjs manque des trucs js . J'ai dû replace le %T dans threads=%T par un nombre (par exemple 2 ) pour le faire fonctionner. En outre, notez que le nom de file .webm résultant n'a pas d'horodatage, de sorte que les exécutions suivantes écraseront l'existant si vous ne le renommez pas. Enfin, assurez-vous que votre XDG_VIDEOS_DIR est défini dans ~/.config/user-dirs.dirs sinon la command ne fonctionnera pas (les erreurs avec cannot open output file ).
Quoi qu'il en soit, revenez à votre question, les parameters de la projection d'écran sont maintenant codés en dur dans gnome-shell ( shell-recorder.c ) par exemple:

 #define DEFAULT_PIPELINE "vp9enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux" 

ou

 shell_recorder_init (ShellRecorder *recorder) { .... recorder->draw_cursor = TRUE; 

et pour autant que je sache, la seule façon de les modifier serait via une extension comme

EasyScreenCast

(code source ici ) qui vous permet de personnaliser tous les parameters (y compris draw-cursor ). Il fonctionne bien, je n'ai eu qu'à append ma version gnome-shell par exemple 3.16.1 – à metadata.json et ce pipeline gstreamer personnalisé:

 vp8enc min_quantizer=10 max_quantizer=10 cpu-used=2 deadline=1000000 threads=2 ! queue ! mux. pulsesrc ! queue ! audioconvert ! vorbisenc ! queue ! mux. webmmux name=mux 

via Tweak-tool> Extensions> Easyscreencast> Options de screencast :

entrer la description de l'image ici


Cela mis à part, une façon sortingviale de screencast + audio interne est via la command line. Tout ce dont vous avez besoin est de spécifier la source d'input pour l'logging sonore – avec pacmd (cli) ou avec pavucontrol (gui) et utilisez gst-launch pour save. Donc, d'abord get le nom de la source d'input se terminant par .monitor (que l'on peut save de l'audio de votre carte son):

 pacmd list-sources | sed -n 's/name: <\(.*\.monitor\)>/\1/p' alsa_output.pci-0000_00_1b.0.analog-stereo.monitor 

et ensuite exécuter:

 pacmd set-default-source "alsa_output.pci-0000_00_1b.0.analog-stereo.monitor" gst-launch-1.0 ximagesrc ! videoconvert ! queue ! videorate ! vp8enc min_quantizer=10 max_quantizer=10 cpu-used=2 deadline=1000000 threads=2 ! queue ! mux. pulsesrc ! queue ! audioconvert ! vorbisenc ! queue ! mux. webmmux name=mux ! filesink location=screencast.webm 

Pour arrêter l'logging, revenez au terminal et appuyez sur Ctrl + C.


1: source

Basé sur la réponse de don_crissti, j'ai créé un script bash pour automatiser cette tâche.

Voici le script:

 #!/bin/bash if [ -z $1 ]; then echo "usage: screencast <outfile>" exit 1 fi fname=$1 audio=$(pacmd list-sources | sed -n 's/\s*name: <\(.*\.monitor\)>/\1/p') pacmd set-default-source "$audio" echo "Screencast started, to stop it come back to terminal and hit ctrl+c..." gst-launch-1.0 ximagesrc \ ! videoconvert \ ! queue \ ! videorate \ ! vp8enc min_quantizer=10 max_quantizer=10 cpu-used=2 deadline=1000000 threads=2 \ ! queue \ ! mux. pulsesrc \ ! queue \ ! audioconvert \ ! vorbisenc \ ! queue \ ! mux. webmmux name=mux \ ! filesink location=$fname > /dev/null echo echo "Screencast saved as $fname" 

Usage:

 $ ./screencast out_file_name.webm 

Tous les crédits vont à don_crissti. Votez s'il vous plaît!