Aufzeichnen nur eines Fensters im Gnomes 3-Standard-Desktop-Recorder

9

Gnome 3 hat eine großartige Funktion unter Ctrl- Alt- Shift- RVerknüpfung 1 .Ich denke, das ist Istanbul . Es scheint, dass es nicht Istanbul ist ... Ich kann jedoch keine Informationen über dieses Programm finden.

Wo finde ich die Manpage? Wie kann ich es von der Konsole ausführen?
Und vor allem: Wie kann ich nur ein Fenster aufnehmen (ähnlich wie bei Alt+ Print Screen)?

Seler
quelle
Ich nehme an, Sie haben es bereits versucht man istanbul?
Grawity
@grawity: Ich habe versucht zu rennen, man istanbulaber es gab keine Seiten für Istanbul. Es ist auch kein istanbulBefehl verfügbar. Möglicherweise ist der Standardrekorder von Gnome 3 nicht Istanbul? Was ist es dann?
Seler

Antworten:

13

Laut GNOME-API-Dokument ist der Bildschirmschreiber der Gnome-Shell ( Shell-Recorder-Klasse ) im Grunde eine Pipeline, die alle Screenshot-Ausgaben in eine Pipeline überträgt, die dann von GStreamer codiert wird.

Sie können Ihre dconf-editor-Anwendung verwenden und zu navigieren org.gnome.shell.recorder. In diesem Schema finden Sie 3 Optionen:

  • Dateierweiterung - Standard auf meiner Box zu webm
  • Framerate - defauly auf meiner Box bis 30
  • pipeline - Diese Option leitet den Stream standardmäßig an GStreamer vp8enc weiter, um ihn zu codieren. vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux

Wie können wir also die Aufzeichnungspipeline auf der Kommandozeile replizieren? Dies können wir mit dem Befehl gst-launch des gstreamer-tools tun. Zunächst müssen Sie gst-tools auf Ihrer Box installieren und können mit gstreamer! Spielen. Hier einige Beispiele:

Auf webm aufnehmen (vp8 Video & vorbis Audio):

gst-launch ximagesrc ! ffmpegcolorspace ! queue ! vp8enc quality=10 speed=2 ! mux. alsasrc ! audio/x-raw-int ! queue ! audioconvert ! vorbisenc ! mux. webmmux name=mux ! filesink location=screencast.webm

Drücken Sie Strg + C, um die Aufnahme zu stoppen.

Aufnehmen in ogv (Theora Video & Vorbis Audio):

gst-launch ximagesrc ! ffmpegcolorspace ! queue ! theoraenc ! mux. alsasrc ! audio/x-raw-int ! queue ! audioconvert ! vorbisenc ! mux. oggmux name=mux ! filesink location=screencast.ogv

Drücken Sie Strg + C, um die Aufnahme zu stoppen.

Die Pipelines werden von gst-launch ausgeführt. Folgendes machen sie:

  • Nimm das X-Videobild (den Desktop)
  • Konvertieren Sie das Video automatisch in ein akzeptables Format
  • Erstellen Sie einen Hintergrund-Thread [t1], um die Videoverarbeitung fortzusetzen
  • [t1] Codiere das Video (entweder nach vp8 oder theora)
  • [t1] Vorbereitung zum Zusammenführen des Videos in die Video-Shell (webm oder ogg)
  • Greifen Sie den Audioeingang als RAW (das Mikrofon)
  • Erstellen Sie einen Hintergrund-Thread [t2], um die Audioverarbeitung fortzusetzen
  • [t2] Konvertiert das Audio automatisch in ein akzeptables Format
  • [t2] Codiere das Audio nach vorbis
  • [t2] Vorbereitung zum Zusammenführen des Audios in die Video-Shell (webm oder ogg)
  • Schreiben Sie codiertes Audio und Video in die Videodatei

Jetzt müssen Sie keine Angst mehr vor Gstream-Pipelines haben! \O/

Trung Lê
quelle
8

Und am wichtigsten. Wie kann ich nur ein Fenster aufnehmen?

Wenn Sie die XID des Fensters erhalten, können Sie sie an ximagesrc übergeben. Wenn Sie beispielsweise wissen, wie der eindeutige Titel des Fensters lautet, können Sie xwininfo und ein wenig Magie verwenden, um dies zu erreichen. In der Bash:

TITLE="Terminal Six"
WINDOW_XID=$(xwininfo -tree -root -all | egrep $TITLE | sed -e 's/^ *//' | cut -d\  -f1)`

Jetzt können Sie diese XID einfach an ximagesrc übergeben und natürlich die Pipeline fertigstellen:

gst-launch-1.0 ximagesrc xid=$WINDOW_XID ! video/x-raw,framerate=30/1 ! videoconvert ! queue ! ...

Und zu Ihrer Information, ich zeige Ihnen dies mit der 1.0-Version von gstreamer. Es gibt keinen ffmpegcolorspace mehr, sondern Sie verwenden stattdessen Videokonvertierung (die neuesten Versionen von FFmpeg haben den Namen in 'libav' geändert, daher wurde sie umbenannt).

Milli
quelle
0

Bei der Gnome 3-Aufnahme wird das GStreamer FFmpeg-Plug-In verwendet, um eine .webm-Datei unter dem Benutzer zu Hause auszugeben .

GStreamer FFmpeg Plug-In

http://gstreamer.freedesktop.org/modules/gst-ffmpeg.html

Und vor allem: Wie kann ich nur ein Fenster aufnehmen?

Darf das Fenster auf Vollbild zoomen?

Rony
quelle
Ich möchte, dass mein Video die Auflösung des Fensters hat, das ich aufzeichne. Außerdem muss ich anderen nicht meine aktuelle Uhrzeit, Benachrichtigungen, den Netzwerkstatus, die Lautstärke usw. anzeigen. Bearbeiten: Ähnlich wie bei <kbd> Alt </ kbd> + <kbd> Bildschirm drucken </ kbd>
Auswahl
Die in gnome3 integrierte Aufnahme ist sehr begrenzt und es ist sogar kein Ton zu hören, der mir das Gefühl gibt, es sei für den gelegentlichen Gebrauch gedacht. Es gibt recordMyDesktop und andererseits ffmpeg-Skript im Archlinux-Forum . Für mich funktionieren sie alle besser als die von Gnome3.
Rony