So erstellen Sie einen Screencast mit ffmpeg

Für diejenigen, die es nicht wissen, a Screencasts Es handelt sich um eine digitale Aufzeichnung der Computerbildschirmausgabe, die manchmal Audiokommentare enthält.

En Linux, Es gibt einige Werkzeuge para hacer Screencasting. Allerdings diejenigen, die dies vorziehen minimale Ressourcen verbrauchen Sie können nicht aufhören, diesen Artikel zu lesen.


Mit 2 Werkzeugen (ffmpeg zum Erfassen des Bildschirms und xwininfo zum Erhalten der Koordinaten und Abmessungen des aufzuzeichnenden Fensters) gelang es mir, Screencasts mit minimalen Ressourcen zu erstellen und optimale Ergebnisse zu erzielen.

Das Skript zum Starten des Screencasts

#! / Bin / bash

# Ermitteln Sie die Koordinaten und die Größe des ausgewählten Fensters
# Dies schließt Fensterdekoration aus.
  nicht gesetzt xywh
  eval $ (xwininfo -frame |
    sed -n -e "s / ^ + Absolutes X oben links: + ([0-9] +). * / x = 1 / p"
           -e "s / ^ + Absolutes Y oben links: + ([0-9] +). * / y = 1 / p"
           -e "s / ^ + Breite: + ([0-9] +). * / w = 1 / p"
           -e "s / ^ + Höhe: + ([0-9] +). * / h = 1 / p")
$ w = $ w + $ w% 2 # dass die Breite ein Vielfaches von 2 ist, andernfalls beschwert sich ffmpeg
WIN_XY = $ x "," $ y # formatiert XY-Koordinaten
WIN_GEO = $ w "x" $ h # Fenstergröße formatieren
# notify-send zeigt eine Meldung an, die den Start des Screencasts angibt.
# Führen Sie ffmpeg mit den Parametern aus, die Ihrer Konfiguration entsprechen.
notify-send "Screencast wird gestartet ..." && ffmpeg -f alsa -i hw: 0 -f x11grab -r 25 -s $ WIN_GEO -i: 0.0 + $ WIN_XY -acodec libmp3lame -async 1 -vcodec libx264 -preset ultraschnell - crf 0 -threads 0 save.mp4

Sie müssen nicht alles verstehen, was dieses Skript tut. Es reicht aus, nur den Kommentaren zu folgen. Es ist jedoch sehr wahrscheinlich, dass Sie einige Parameter in der Zeile ändern müssen, in der ffmpeg ausgeführt wird, um sie an Ihre Maschinenkonfiguration anzupassen.

Audio-Architektur

1) Wenn Sie OSS verwenden, ersetzen Sie -f alsa -i hw: 0 durch -f oss -i / dev / dsp

2) Wenn Sie nur ALSA verwenden, müssen Sie die im Skript enthaltenen Parameter verwenden (-f alsa -i hw: 0). So bestimmen Sie die Nummer nach hw: Sie können aplay -l ausführen und die entsprechende Soundkartennummer auswählen.

3) Wenn Sie Pulse Audio verwenden (Ubuntu und Derivate verwenden dies), verwenden Sie die Parameter -f alsa -ac 1 -i Puls.

FPS

-r 25 gibt die fps (Bilder pro Sekunde oder Bilder pro Sekunde) an, mit denen Sie aufnehmen möchten. 25 ist eine gute Option.

Audio-, Video- und Synchronisierungscodec

-acodec libmp3lame ist der Audio-Codec. Ich habe es als MP3 aufgenommen. Sie können jeden anderen verwenden.

-async 1 ermöglicht die Synchronisation von Audio mit Video.

-vcodec libx264 -preset ultraschnell -crf 0 -threads 0, teilt ffmpeg mit, dass der zu verwendende Videocodec x264 ist und dass die Voreinstellung ultraschnell ist (es gibt schnell, langsam usw.), andernfalls wird sie nicht korrekt mit der gewünschten Menge von aufgezeichnet fps. Der Parameter -crf 0 gibt die Komprimierungsstufe an (je niedriger die Komprimierung, desto niedriger die Komprimierung). Schließlich gibt Threads 0 die Anzahl der zu verwendenden Threads an. Wenn 0 übergeben wird, berechnet ffmpeg diese automatisch. Wie bei den Audioeinstellungen können Sie andere Optionen auswählen.

Alle diese Einstellungen haben mir die besten Ergebnisse gebracht: eine relativ kleine Datei, eine gute Videoqualität, synchronisiertes Audio und keine Verzögerungen. Ich empfehle Ihnen jedoch, in die ffmpeg-Dokumentation einzutauchen, um andere zu entdecken.

Das Skript zum Beenden des Screencasts

#! / Bin / bash
benachrichtigen-senden "Screencast beenden ..." && killall ffmpeg
Damit beide Skripte funktionieren, muss notify-send installiert sein. Auf allen von Ubuntu abgeleiteten Distributionen sollte dieses Tool installiert sein. In Arch und Derivaten: sudo pacman -S libnotify.

ffcast

Auf der Suche nach Informationen zum Schreiben der Skripte stellte ich fest, dass jemand eine Idee hatte, die meiner sehr ähnlich war. Ffcast ist ein Skript, das dieselben Tools verwendet (ffmpeg und xwininfo). Ich erwähne es, weil einige es vielleicht bequemer finden, dieses Skript zu verwenden.

In Arch und Derivaten öffnete ich ein Terminal und lief:

yaourt -S ffcast

Den Rest können Sie von herunterladen hier.

Beenden…

Nachdem Sie die in Ihrem HOME-Ordner gespeicherten Skripte erstellt und gespeichert haben, müssen Sie ihm Ausführungsberechtigungen erteilen. Unter der Annahme, dass start_screencast und finish_screencast aufgerufen werden, führen Sie die folgenden Befehle in einem Terminal aus:

chmod + x start_screencast
chmox + x terminate_screencast

Schließlich müssen Sie nur noch jedes der Skripte 2 Verknüpfungen (Verknüpfungen) zuweisen, die für Sie angenehm sind. Auf diese Weise werden die Skripte ausgeführt, wenn Sie die ausgewählte Tastenkombination drücken.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.

  1.   Michael Sp. Z oo sagte

    Seit ich Linux kennengelernt habe, habe ich mich genau das gefragt, was gerade in diesem Kommentar beschrieben wurde. Es wäre ein ehrgeiziges Projekt.

  2.   pmf sagte

    Das Tutorial scheint mir gut zu sein, aber wie sagt man etwas, das für Anfänger einfach ist? Nun, das, was mir am besten erscheint, ist KAzam, es ist einfach zu bedienen und verbraucht meiner Meinung nach nicht viel !!!!!! Prost

  3.   Verwenden wir Linux sagte

    Nicht alle. Darüber hinaus glaube ich ehrlich, dass es keine gute Schnittstelle für Screencasts gibt (die alles hat, was ich brauche), die mit den gewünschten Formaten funktioniert und nur wenige Ressourcen verbraucht.

    In meinem Fall ist das Terminal die beste Option. Ich gebe nicht vor, dass es für alle ist, aber es ist gut zu teilen, was man lernt, oder?

    Prost! Paul.

  4.   Jörg Rocha sagte

    Es ist falsch, dass wir Benutzern raten, solche Dinge im Terminal zu tun, wenn wir das Betriebssystem unter GNU / Linux erweitern wollen. Die Leute wollen etwas Einfaches und Funktionales

    @ingjangerocha

  5.   Whysoyjuan sagte

    Auf Serverebene verwende ich auch nur eine Konsole, keine grafische Umgebung ... es ist die praktischste und ich mache alles von dort aus (automatisiere Backups zum Beispiel, wie Sie gut sagen ...), aber auf einem Computer, den Sie als haben ein Server ... für was möchten Sie einen Screencast darauf machen? hehe..ffmpeg ist sehr sehr gültig, aber ich denke, das Konsolenproblem sollte in den Hintergrund treten, abhängig von den Distributionen.
    Da wir in der Linux-Welt so viele verschiedene Distributionen haben und die Konsole perfekt genug ist, um in allen Situationen richtig zu funktionieren (es ist eher fast unfehlbar ...), sollten wir damit beginnen, die Apps für die Öffentlichkeit zu verbessern, zu polieren und zu codieren und grafischer Aspekt ... was heute gefordert wird.
    Wir haben ziemlich archaische und aufgegebene Linux-Projekte, wir alle wissen, dass ... ein gutes Beispiel für mich ist, warum es kein ausführbares Dateiformat mehr gibt, mit dem Sie ein Programm auf einem Pendrive erstellen und einfach doppelklicken und einfach Installation abgesehen von der Notwendigkeit von Repositorys (und damit Netzwerk) .. keine APTonCD, dies ist auch veraltet .. wir brauchen einen Standard, eine ".tux" oder etwas ähnliches wie eine ".exe" von Windows. Ist es eine Frage des Speicherplatzes? .. unter Windows belegt die ausführbare Datei von Gimp 72 MB und dieselbe für Linux (.deb) 4,2 MB ... warum ist das so? Nun, da das Gimp-Programm selbst in Windows von allen Bibliotheken begleitet wird, um sicherzustellen, dass das Programm bei der Installation funktioniert ... unter Linux könnten wir etwas Ähnliches haben, die ausführbare Datei würde mehr belegen, wir würden den Vorteil verlieren Größe, aber wir gewinnen an Portabilität (und mehr mit den Erinnerungen, die wir heute in unseren Taschen haben ... Welchen Unterschied macht es, 4 MB als 72 MB zu tragen, wenn fast alle von uns 8 GB Pendrives tragen?)
    All diese Dinge müssen poliert werden ... das System ist stabil, hat großartige Unterstützung und Treiberkompatibilität ... warum verbessern wir nicht das, was es gibt? ... wenn jemand ermutigt wird, starten wir das ausführbare Projekt, hehe.!

  6.   versteckt sagte

    Ähm ... nun, Leute, die die Konsole lieben, lieben sie nicht, weil ja, lieber Freund, sie lieben sie, weil damit viele Dinge automatisiert werden können, zum Beispiel auf Serverebene (obwohl dies nicht der Fall ist).

  7.   Whysoyjuan sagte

    Ehrlich gesagt ist die Konsole sehr nützlich ... aber es gibt Programme mit einer GUI, die ffmpeg verwenden und für mögliche neue Linux-Benutzer attraktiver und konstruktiver sind ... Ich empfehle RecordMyDescktop, das sich in den Repositorys fast aller Distributionen befindet. Ich weiß Es gibt viele Leute, die die Konsole lieben, aber dies muss so weit wie möglich abgeschlossen sein ... Linux muss sich auf den Desktop und einen möglichen Endbenutzer konzentrieren, der dies grundsätzlich möchte, eine grafische Oberfläche und wenn möglich schön und praktisch. .. ist es so schwierig? dass wir uns nicht betreten lassen können ... Linux hat enormes Potenzial und wir müssen es quetschen!
    Trotz allem ist es ein tolles Programm! Guter Beitrag ^^

  8.   Whysoyjuan sagte

    Die Wahrheit ist, ja, es ist großartig zu teilen, was man lernt ... Dies ist keine Kritik im abwertenden Sinne des Beitrags, sondern eine Kritik, warum mehr Leute Linux nicht verwenden ... was auch immer sie sagen, das Die Konsole sollte auf eine zweite Ebene reduziert werden, um den grafischen Einrichtungen Platz zu machen (dies bedeutet nicht, dass die Möglichkeit, Dinge über die Konsole zu erledigen, ausgeschlossen ist, sondern dass jeder, der sie verwenden möchte und wer nicht, na ja, nein.)
    Am Ende des Tages fällt auf, wie einfach es ist, ein Betriebssystem zu bedienen ... Linux ist intern nicht aufzuhalten, aber wenn wir diese Benutzerfreundlichkeit und die intuitiven Benutzeroberflächen ergänzen ... gewinnen wir Benutzer und profitieren davon die Entwicklung der Community, die verschiedenen Programme, die Unterstützung von Videospielunternehmen und damit spezifische Hardware (z. B. Grafikkarten ...), die Erstellung spezieller Software, die derzeit nur unter Windows / Mac verfügbar ist ... Ich weiß nicht, ich Ich denke, das steht im 15M-Plan ... alles sehr schön, aber jetzt ist es Zeit, den Kurs ein wenig zu ändern ... und ich sage ein wenig!

    Nun, das ausführbare Standardprojekt unter Linux steht immer noch, wenn jemand es liest und möchte, dass wir zusammenarbeiten, hier ist meine E-Mail, ich verstecke mich nicht hehe (whysoyjuan@gmail.com)

    Grüße und ich hoffe, hier weitere Kommentare zu sehen ... sei es Kritik oder Lob, Tatsache ist, dass wir reden müssen

  9.   Verwenden wir Linux sagte

    Gut! Guter Beitrag.
    Umarmung! Paul.

  10.   Gerardo sagte

    Worum geht es in diesem Programm ... seien Sie vorsichtig, ich bin nicht sehr gut informiert darüber!

    1.    Lass uns Linux benutzen sagte

      Im Allgemeinen wird es zum Konvertieren von Videos verwendet. In diesem Fall zeigen wir Ihnen, wie Sie damit beispielsweise Ihren Desktop aufzeichnen und ein Video-Tutorial erstellen.
      Umarmung! Paul.

  11.   tarribalis sagte

    Vielen Dank. Bei einer Auflösung, z. B. 1280 x 800, muss das X groß geschrieben werden, damit der Befehl ffmpeg funktioniert.