Hur man gör en screencast med ffmpeg

För dem som inte vet, a screencast det är en digital inspelning av datorns skärmutgång, som ibland innehåller ljudberättelse.

En Linux, det finns flera verktyg att göra skärmgjutning. Men de som föredrar att göra det förbrukar minimala resurser de kan inte sluta läsa den här artikeln.


Med hjälp av två verktyg (ffmpeg för att fånga skärmen och xwininfo för att få koordinaterna och dimensionerna för fönstret som ska spelas in) lyckades jag göra skärmutsändningar med minimala resurser och uppnå optimala resultat.

Manuset för att starta screencast

#! / Bin / bash

# Få koordinaterna och storleken på det valda fönstret
# Detta exkluderar fönsterinredning.
  unset xywh
  eval $ (xwininfo-ram |
    sed -n -e "s / ^ + Absolut övre vänstra X: + ([0-9] +). * / x = 1 / p"
           -e "s / ^ + Absolut övre vänstra Y: + ([0-9] +). * / y = 1 / p"
           -e "s / ^ + Bredd: + ([0-9] +). * / w = 1 / p"
           -e "s / ^ + Höjd: + ([0-9] +). * / h = 1 / p")
$ w = $ w + $ w% 2 # att bredden är en multipel av 2, annars klagar ffmpeg
WIN_XY = $ x "," $ y # format XY-koordinater
WIN_GEO = $ w "x" $ h # formatfönsterstorlek
# meddelande-skicka visar ett meddelande som indikerar början av skärmutsändningen.
# kör ffmpeg med de parametrar som passar din konfiguration.
meddela-skicka "Startar skärmutsändning ..." && ffmpeg -f alsa -i hw: 0 -f x11grab -r 25 -s $ WIN_GEO -i: 0.0 + $ WIN_XY -acodec libmp3lame -async 1 -vcodec libx264-förinställd snabb - crf 0-trådar 0 spara.mp4

Du behöver inte förstå allt detta skript gör. Att bara följa kommentarerna räcker. Det är dock mycket möjligt att du måste ändra vissa parametrar i raden där ffmpeg körs för att justera dem till maskinens konfiguration.

Ljudarkitektur

1) Om du använder OSS, ersätt -f alsa -i hw: 0 med -f oss -i / dev / dsp

2) Om du bara använder ALSA måste du använda parametrarna som finns i skriptet (-f alsa -i hw: 0). För att bestämma antalet efter hw: du kan köra aplay -l och välja lämpligt ljudkortnummer.

3) Om du använder Pulse Audio (Ubuntu och derivat använder detta), använd parametrarna -f alsa -ac 1 -i puls.

FPS

-r 25 indikerar fps (bilder per sekund eller bilder per sekund) du vill spela in vid. 25 är ett bra alternativ.

Ljud-, video- och sync-codec

-acodec libmp3lame är ljudkodeken. Jag valde att spela in den i mp3. Du kan använda alla andra.

-async 1 tillåter synkronisering av ljud med video.

-vcodec libx264-förinställd ultrasnabb -crf 0-trådar 0, säger till ffmpeg att videokodeken som ska användas är x264 och att förinställningen är ultrasnabb (det är snabbt, långsamt osv.), annars spelar det inte in korrekt vid önskad mängd fps. Parametern -crf 0 anger komprimeringsnivån (ju lägre komprimering, desto lägre komprimering). Slutligen indikerar trådar 0 antalet trådar som ska användas, när du passerar 0 beräknar det automatiskt. Som med ljudinställningarna kan du välja andra alternativ.

Alla dessa inställningar var de som gav mig de bästa resultaten: en relativt liten fil, en bra videokvalitet, med synkroniserat ljud och inga fördröjningar. Jag rekommenderar dock att du dyker in i ffmpeg-dokumentationen för att upptäcka andra.

Manuset för att avsluta screencast

#! / Bin / bash
meddela-skicka "Avslutar screencast ..." && killall ffmpeg
För att båda skript ska fungera måste du ha meddelande-skicka installerat. Alla Ubuntu-härledda distributioner bör komma med det här verktyget installerat. I Arch och derivat: sudo pacman -S libnotify.

ffcast

Letar jag efter information för att skriva manus upptäckte jag att någon hade en idé som mycket liknade min. Ffcast är ett skript som använder samma verktyg (ffmpeg och xwininfo). Jag nämner det eftersom vissa kanske tycker att det är bekvämare att använda detta skript.

I Arch och derivat öppnade jag en terminal och sprang:

yaourt -S ffcast

Resten kan du ladda ner från här.

Att sluta…

När du har skapat och sparat de skript som har sparats i din HEM-mapp måste du bevilja körningstillstånd. Förutsatt att start_screencast och finish_screencast anropas, kör följande kommandon i en terminal:

chmod + x start_screencast
chmox + x terminate_screencast

Slutligen återstår bara att tilldela vart och ett av skripten till två genvägar (genvägar) som är bekväma för dig. På så sätt körs skripten när du trycker på vald tangentkombination.


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   Michael Sp sade

    Sedan jag fick lära känna Linux har jag frågat mig exakt samma sak som just har beskrivits i den här kommentaren. det skulle vara ett ambitiöst projekt.

  2.   pmf sade

    Självstudien verkar bra för mig, men hur säger man något enkelt för nybörjare? Det som verkar bäst för mig är KAzam, det är lätt att använda och konsumerar inte mycket enligt min åsikt !!!!!! Hälsningar

  3.   Låt oss använda Linux sade

    Inte alla. Dessutom tror jag ärligt att det inte finns något bra gränssnitt för screencasting (som har allt jag behöver), som fungerar med de format jag vill ha och som förbrukar få resurser.

    I mitt fall är terminalen det bästa alternativet. Jag låtsas inte att det är för alla, men det är bra att berätta vad man lär sig, eller hur?

    Skål! Paul.

  4.   Jorge Rocha sade

    Det är fel att om vi vill utöka operativsystemet under GNU / linux rekommenderar vi användare att göra den typen av saker i terminalen, folk vill ha något enkelt och funktionellt

    @ingjorgerocha

  5.   varförsoyjuan sade

    På servernivå använder jag också bara konsol, ingen grafisk miljö ... det är det mest praktiska och jag gör allt därifrån (automatisera säkerhetskopior till exempel som du väl säger ...), men på en maskin som du har som en server ... för vad vill du göra en screencast på den? hehe..ffmpeg är väldigt mycket giltig men jag tycker att konsolproblemet ska gå i bakgrunden beroende på vilka distributioner.
    Eftersom vi har så många distroer i Linux-världen, och konsolen är tillräckligt perfekt för att fungera ordentligt i alla situationer (det är nästan ofelbart snarare ..), bör vi börja förbättra apparna för allmänheten, börja för polering, kod och grafisk aspekt ... vilket är vad som krävs idag.
    Vi har ganska arkaiska och övergivna Linux-projekt, vi vet alla att ... ett bra exempel för mig är varför det inte längre finns ett körbart filformat som låter dig ta ett program på en pendrive och helt enkelt dubbelklicka och ett enkelt installation bortsett från att kräva arkiv (och därmed nätverk) .. ingen APTonCD, det här är föråldrat också .. vi behöver en standard, en ".tux" eller något liknande en Windows ".exe". Är det för utrymmesproblem? .. i Windows upptar Gimp-körningen 72mb och samma för Linux (.deb) upptar 4,2mb ... varför är det här? Tja, eftersom Gimp-programmet i sig åtföljs av alla bibliotek i Windows för att se till att programmet fungerar när det är installerat ... i Linux kan vi ha något detsamma, den körbara filen skulle uppta mer, vi skulle förlora fördelen med storlek men vi får portabilitet (och mer med minnena så stora att vi bär i dag i fickorna ... vilken skillnad gör det att bära 4 MB än 72 MB om nästan alla har 8 GB pendrives?)
    Alla dessa saker måste poleras ... systemet är stabilt, har stort stöd och förarkompatibilitet ... varför förbättrar vi inte det som finns? ... om någon uppmuntras startar vi det körbara projektet hehe.!

  6.   hidabe sade

    Uhm ... ja, människor som älskar konsolen älskar inte den för kära vän, de älskar den för att med den kan många saker automatiseras, till exempel på servernivå (även om detta inte är fallet).

  7.   varförsoyjuan sade

    Ärligt talat är konsolen väldigt användbar ... men det finns program med lite GUI som använder ffmpeg och är mer attraktiva och konstruktiva för eventuella nya Linux-användare ... Jag rekommenderar RecordMyDescktop som finns i förrådsplatserna för nästan alla distros. Jag vet det finns många som älskar konsolen, men detta måste avslutas med så mycket som möjligt ... Linux måste fokuseras på skrivbordet och en möjlig slutanvändare som i grunden vill ha det, ett grafiskt gränssnitt och om möjligt vackert och praktiskt .. ... är det så svårt? att vi inte kan låta oss trampa på ... Linux har en enorm potential och vi måste pressa den!
    Trots allt är det ett fantastiskt program! Bra inlägg ^^

  8.   varförsoyjuan sade

    Sanningen är, ja, det är fantastiskt att dela med sig av vad man lär sig ... Detta är inte en kritik i inläggets devalverande mening, utan en kritik av varför fler inte använder Linux ... vad de än säger, konsolen bör reduceras till ett andra plan för att ge plats för grafiska anläggningar (detta betyder inte att möjligheten att göra saker genom konsolen är utesluten, men att den som vill använda den och den som inte gör det, ja ...)
    I slutet av dagen är det som säljer, det som är slående är att använda ett operativsystem ... Linux är internt ostoppbar, men om vi lägger till den användarvänligheten och de intuitiva gränssnitten ... vinner vi användare och att det gynnar utvecklingen av samhället, de olika programmen, support från videospelföretag och därmed specifik hårdvara (säg grafikkort ..), skapande av specialiserad programvara som för närvarande bara finns på Windows / Mac ... Jag vet inte, tror jag det här är i 15M-planen ... allt väldigt trevligt men nu är det dags att ändra kurs lite ... och jag säger lite!

    Tja, det standardkörbara projektet i Linux står fortfarande, om någon läser det och vill att vi ska börja samarbeta, här är min e-post, jag gömmer mig inte hehe (whysoyjuan@gmail.com)

    Hälsningar och jag hoppas se fler kommentarer här ... oavsett om det är kritik eller beröm, faktum är att vi måste prata.

  9.   Låt oss använda Linux sade

    Bra! Bra bidrag.
    Kram! Paul.

  10.   gerardo sade

    Vad består detta program av ... var försiktig, jag är inte särskilt kunnig om detta!

    1.    låt oss använda Linux sade

      Generellt används den för att konvertera videor. I det här fallet visar vi hur man använder det för att spela in skrivbordet och göra en videohandledning, till exempel.
      Kram! Paul.

  11.   tarribalis sade

    Tack. I upplösning, t.ex. 1280X800, måste X vara versal för att kommandot ffmpeg ska fungera.