Sådan oprettes en screencast ved hjælp af ffmpeg

For dem der ikke ved, a screencast det er en digital optagelse af computerskærmoutput, som undertiden indeholder lydfortælling.

En Linux, Der er flere værktøjer at gøre skærmstøbning. Men dem, der foretrækker at gøre det forbruger minimale ressourcer de kan ikke stoppe med at læse denne artikel.


Ved hjælp af 2 værktøjer (ffmpeg til at fange skærmen og xwininfo for at få koordinaterne og dimensionerne af det vindue, der skal optages), lykkedes det mig at lave screencasts ved hjælp af minimale ressourcer og opnå optimale resultater.

Scriptet til at starte screencast

#! / Bin / bash

# Få koordinaterne og størrelsen på det valgte vindue
# Dette udelukker vinduesdekoration.
  frakoblet xywh
  eval $ (xwininfo -frame |
    sed -n -e "s / ^ + Absolut øverst til venstre X: + ([0-9] +). * / x = 1 / p"
           -e "s / ^ + Absolut øverste venstre Y: + ([0-9] +). * / y = 1 / p"
           -e "s / ^ + Bredde: + ([0-9] +). * / w = 1 / p"
           -e "s / ^ + Højde: + ([0-9] +). * / h = 1 / p")
$ w = $ w + $ w% 2 # at bredden er et multiplum af 2, ellers klager ffmpeg
WIN_XY = $ x "," $ y # format XY-koordinater
WIN_GEO = $ w "x" $ h # format vinduesstørrelse
# notify-send viser en besked, der angiver starten på screencast.
# kør ffmpeg med de parametre, der passer til din konfiguration.
meddelelse-send "Starter screencast ..." && ffmpeg -f alsa -i hw: 0 -f x11grab -r 25 -s $ WIN_GEO -i: 0.0 + $ WIN_XY -acodec libmp3lame -async 1 -vcodec libx264 -forudindstillet ultrahurtig - crf 0-tråde 0 gemme.mp4

Du behøver ikke fuldt ud at forstå alt dette script gør. Det er nok bare at følge kommentarerne. Det er dog meget muligt, at du bliver nødt til at ændre nogle parametre i den linje, hvor ffmpeg udføres for at justere dem til din maskinkonfiguration.

Audio arkitektur

1) Hvis du bruger OSS, skal du erstatte -f alsa -i hw: 0 med -f oss -i / dev / dsp

2) Hvis du kun bruger ALSA, skal du bruge de parametre, der kommer i scriptet (-f alsa -i hw: 0). For at bestemme antallet efter hw: du kan køre aplay -l og vælge det passende lydkortnummer.

3) Hvis du bruger Pulse Audio (Ubuntu og derivater bruger dette), skal du bruge parametrene -f alsa -ac 1 -i puls.

FPS

-r 25 angiver de fps (billeder pr. sekund eller billeder pr. sekund), du vil optage på. 25 er en god mulighed.

Audio, video og sync codec

-acodec libmp3lame er lydkodeken. Jeg valgte at optage det i mp3. Du kan bruge enhver anden.

-async 1 tillader synkronisering af lyd med video.

-vcodec libx264 -indstillet ultrafast -crf 0-tråde 0, fortæller ffmpeg, at videokodecen, der skal bruges, er x264, og at forudindstillingen er ultrahurtig (der er hurtig, langsom osv.), ellers vil den ikke optage korrekt i den ønskede mængde fps. Parameteren -crf 0 angiver kompressionsniveauet (jo lavere kompression, jo lavere kompression). Endelig angiver tråde 0 antallet af tråde, der skal bruges, når ffmpeg passerer 0, beregner det automatisk. Som med lydindstillingerne kan du vælge andre muligheder.

Alle disse indstillinger var dem, der gav mig de bedste resultater: en relativt lille fil, en god videokvalitet med synkroniseret lyd og ingen forsinkelser. Jeg anbefaler dog, at du dykker ned i ffmpeg-dokumentationen for at opdage andre.

Scriptet til at afslutte screencast

#! / Bin / bash
meddelelse-send "Afslutning af screencast ..." && killall ffmpeg
For at begge scripts skal fungere, skal du have notify-send installeret. Alle Ubuntu-afledte distributioner skal leveres med dette værktøj installeret. I Arch og derivater: sudo pacman -S libnotify.

ffcast

På udkig efter information til at skrive manuskripterne opdagede jeg, at nogen havde en idé, der lignede min meget. Ffcast er et script, der bruger de samme værktøjer (ffmpeg og xwininfo). Jeg nævner det, fordi nogle måske finder det mere praktisk at bruge dette script.

I Arch og derivater åbnede jeg en terminal og løb:

yaourt -S ffcast

Resten kan du downloade fra her.

At afslutte…

Når du har oprettet og gemt de scripts, der er gemt i din HOME-mappe, skal du give det eksekveringstilladelser. Forudsat at start_screencast og finish_screencast kaldes, skal du køre følgende kommandoer i en terminal:

chmod + x start_screencast
chmox + x afslut_screencast

Endelig er det kun tilbage at tildele hvert af scriptsne til to genveje (genveje), der er behagelige for dig. På den måde udføres scripts, når du trykker på den valgte tastekombination.


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   Michael Sp sagde han

    Siden jeg lærte Linux at kende, har jeg spurgt mig selv nøjagtigt det samme, som netop blev beskrevet i denne kommentar. det ville være et ambitiøst projekt.

  2.   pmf sagde han

    Selvstudiet virker godt for mig, men hvordan siger du noget let for nybegyndere? Nå, den der synes bedst for mig er KAzam, det er let at bruge og forbruger ikke meget efter min mening !!!! Skål

  3.   Lad os bruge Linux sagde han

    Ikke alle. Derudover tror jeg ærligt, at der ikke er nogen god grænseflade til screencasting (der har alt hvad jeg har brug for), der fungerer med de formater, jeg ønsker, og som bruger få ressourcer.

    I mit tilfælde er terminalen den bedste mulighed. Jeg foregiver ikke, at det er for alle, men det er godt at fortælle, hvad man lærer, ikke?

    Skål! Paul.

  4.   Jorge Rocha sagde han

    Det er forkert, at hvis vi ønsker at udvide operativsystemet under GNU / linux, råder vi brugerne til at gøre den slags ting i terminalen, folk vil have noget let og funktionelt

    @ingjorgerocha

  5.   hvorforsoyjuan sagde han

    På serverniveau bruger jeg også kun konsol, intet grafisk miljø ... det er det mest praktiske, og jeg gør alt derfra (automatiser sikkerhedskopier for eksempel som du godt siger ...), men på en maskine, du har som en server ... hvad vil du lave en screencast på den? hehe .. Ffmpeg er meget meget gyldig, men jeg synes, konsolproblemet skal gå i baggrunden afhængigt af hvilke distributioner.
    Da vi har så mange forskellige distroer i Linux-verdenen, og konsollen er perfekt nok til at fungere ordentligt i alle situationer (det er næsten ufejlbarligt snarere ..), bør vi begynde at forbedre apps til offentligheden, begynde at polere, kode og grafisk aspekt ... hvilket i dag er det, der kræves.
    Vi har ret arkaiske og forladte Linux-projekter, vi ved alle, at ... et godt eksempel for mig er, hvorfor der ikke længere er et eksekverbart filformat, der giver dig mulighed for at tage et program på en pendrive og blot dobbeltklikke og et simpelt installation bortset fra at kræve arkiver (og derfor netværk) .. ingen APTonCD, dette er også forældet .. vi har brug for en standard, en ".tux" eller noget der ligner en Windows ".exe". Er det til pladsproblemer? .. i Windows optager Gimp-eksekverbar 72mb, og den samme til Linux (.deb) optager 4,2mb ... hvorfor er det? Nå, fordi selve Gimp-programmet i Windows ledsages af alle bibliotekerne for at sikre, at programmet fungerer, når det er installeret ... i Linux kunne vi have noget det samme, den eksekverbare ville besætte mere, vi ville miste fordelen ved størrelse, men vi vinder i bærbarhed (og mere med de erindringer, der er så store, at vi har i dag i lommen ... hvilken forskel betyder det at bære 4 MB end 72 MB, hvis næsten alle os har 8 GB pendrives?)
    Alle disse ting skal poleres ... systemet er stabilt, har stor support og driverkompatibilitet ... hvorfor forbedrer vi ikke, hvad der er? ... hvis nogen tilskyndes, starter vi det eksekverbare projekt hehe.!

  6.   hidabe sagde han

    Uhm ... godt, folk der elsker konsollen elsker det ikke, fordi kære ven, de elsker det, fordi mange ting med det kan automatiseres, for eksempel på serverniveau (selvom dette ikke er tilfældet).

  7.   hvorforsoyjuan sagde han

    Ærligt talt er konsollen meget nyttig ... men der er programmer med noget GUI, der bruger ffmpeg og er mere attraktive og konstruktive for mulige nye Linux-brugere ... Jeg anbefaler RecordMyDescktop, som findes i arkiverne i næsten alle distroer. Jeg ved det der er mange mennesker, der elsker konsollen, men dette skal afsluttes med så meget som muligt ... Linux skal være fokuseret på skrivebordet og en mulig slutbruger, der grundlæggende ønsker det, en grafisk grænseflade og om muligt smuk og praktisk ... er det så svært? at vi ikke kan lade os træde på .. Linux har et enormt potentiale, og vi skal presse det!
    På trods af alt er det et fantastisk program! Godt indlæg ^^

  8.   hvorforsoyjuan sagde han

    Sandheden er, at ja, det er dejligt at dele, hvad man lærer ... Dette er ikke en kritik i postens devaluerende betydning, men en kritik af, hvorfor flere ikke bruger Linux ... hvad de end siger, konsollen skal reduceres til et andet plan for at give plads til grafiske faciliteter (dette betyder ikke, at muligheden for at gøre ting ved hjælp af konsollen er udelukket, men at den, der ønsker at bruge den, og den der ikke gør det, ja, nej ..)
    I slutningen af ​​dagen er det, det sælger, hvad der er slående let at betjene et operativsystem ... internt er Linux ustoppeligt, men hvis vi føjer til den brugervenlighed og intuitive grænseflader ... vinder vi brugere, og det gavner udvikling af samfundet, de forskellige programmer, support fra videospilvirksomheder og derfor specifik hardware (f.eks. grafikkort ..), oprettelse af specialsoftware, der i øjeblikket kun findes på Windows / Mac ... Jeg ved ikke, jeg tror dette er i 15M plan ... alt sammen dejligt, men nu er det tid til at ændre kurs lidt ... og jeg siger lidt!

    Nå, det standard eksekverbare projekt i Linux står stadig, hvis nogen læser det og vil have os til at begynde at samarbejde, her er min e-mail, jeg skjuler ikke hehe (whysoyjuan@gmail.com)

    Hilsen og jeg håber at se flere kommentarer her ... det være sig kritik eller ros, faktum er, at vi er nødt til at tale.

  9.   Lad os bruge Linux sagde han

    Godt! Godt bidrag.
    Kram! Paul.

  10.   Gerardo sagde han

    Hvad består dette program af ... pas på, jeg er ikke særlig vidende om dette!

    1.    lad os bruge linux sagde han

      Generelt bruges det til at konvertere videoer. I dette tilfælde demonstrerer vi, hvordan du bruger det til at optage dit skrivebord og lave en video tutorial, for eksempel.
      Kram! Paul.

  11.   tarribalis sagde han

    Tak skal du have. I opløsning, f.eks. 1280X800, skal X være med store bogstaver, før kommandoen ffmpeg fungerer.