Hvordan lage en screencast ved hjelp av ffmpeg

For de som ikke vet, a screencast det er et digitalt opptak av dataskjermutgang, noen ganger inneholder lydfortelling.

En Linux, det er flere verktøy å gjøre skjermkasting. Imidlertid de som foretrekker å gjøre det forbruker minimale ressurser de kan ikke slutte å lese denne artikkelen.


Ved å bruke to verktøy (ffmpeg for å fange skjermen og xwininfo for å oppnå koordinatene og dimensjonene til vinduet som skal spilles inn) klarte jeg å lage skjermsendinger med minimale ressurser og oppnå optimale resultater.

Manuset for å starte screencast

#! / Bin / bash

# Få koordinatene og størrelsen på det valgte vinduet
# Dette ekskluderer vindusdekorasjon.
  unset xywh
  eval $ (xwininfo -frame |
    sed -n -e "s / ^ + Absolutt øvre venstre X: + ([0-9] +). * / x = 1 / p"
           -e "s / ^ + Absolutt øvre venstre Y: + ([0-9] +). * / y = 1 / p"
           -e "s / ^ + Bredde: + ([0-9] +). * / w = 1 / p"
           -e "s / ^ + Høyde: + ([0-9] +). * / h = 1 / p")
$ w = $ w + $ w% 2 # at bredden er et multiplum av 2, ellers klager ffmpeg
WIN_XY = $ x "," $ y # format XY-koordinater
WIN_GEO = $ w "x" $ h # format vindu størrelse
# notify-send vil vise en melding som indikerer starten på skjermkastingen.
# kjør ffmpeg med parametrene som passer til konfigurasjonen din.
varsle-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 -innstilt ultrafast - crf 0-tråder 0 save.mp4

Du trenger ikke å forstå alt dette skriptet gjør. Bare det å følge kommentarene er nok. Det er imidlertid veldig mulig at du må endre noen parametere i linjen der ffmpeg utføres for å justere dem til maskinens konfigurasjon.

Lydarkitektur

1) Hvis du bruker OSS, erstatter -f alsa -i hw: 0 med -f oss -i / dev / dsp

2) Hvis du bare bruker ALSA, må du bruke parametrene som kommer i skriptet (-f alsa -i hw: 0). For å bestemme tallet etter hw: du kan kjøre aplay -l og velge riktig lydkortnummer.

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

FPS

-r 25 indikerer fps (bilder per sekund eller bilder per sekund) du vil spille inn på. 25 er et godt alternativ.

Audio, video og sync codec

-acodec libmp3lame er lydkodeken. Jeg valgte å spille inn den i mp3. Du kan bruke alle andre.

-async 1 tillater synkronisering av lyd med video.

-vcodec libx264 -innstilt ultrafast -crf 0-tråder 0, forteller ffmpeg at videokodeken som skal brukes er x264 og at forhåndsinnstillingen er ultrafast (det er raskt, sakte osv.), ellers vil det ikke ta opp riktig kl. ønsket mengde fps. Parameteren -crf 0 indikerer kompresjonsnivået (jo lavere komprimering, jo lavere komprimering). Til slutt angir tråder 0 antall tråder som skal brukes, når den passerer 0, beregner den automatisk. Som med lydinnstillingene, kan du velge andre alternativer.

Alle disse innstillingene var de som ga meg de beste resultatene: en relativt liten fil, god videokvalitet, med synkronisert lyd og ingen forsinkelser. Imidlertid anbefaler jeg at du dykker ned i ffmpeg-dokumentasjonen for å oppdage andre.

Manuset for å avslutte screencast

#! / Bin / bash
varsle-send "Ending screencast ..." && killall ffmpeg
For at begge skriptene skal fungere, må du ha varslet-send installert. Alle Ubuntu-avledede distribusjoner skal komme med dette verktøyet installert. I Arch og derivater: sudo pacman -S libnotify.

ffcast

På jakt etter informasjon for å skrive manusene, oppdaget jeg at noen hadde en ide som var veldig lik min. Ffcast er et skript som bruker de samme verktøyene (ffmpeg og xwininfo). Jeg nevner det fordi noen kan synes det er mer praktisk å bruke dette skriptet.

I Arch og derivater åpnet jeg en terminal og løp:

yaourt -S ffcast

Resten kan du laste ned fra her.

Å ende…

Når du har opprettet og lagret skriptene som er lagret i HJEM-mappen, må du gi det utførelsestillatelser. Forutsatt at start_screencast og finish_screencast kalles, kjør følgende kommandoer i en terminal:

chmod + x start_screencast
chmox + x terminate_screencast

Til slutt gjenstår det bare å tilordne hvert av manusene til to snarveier (snarveier) som er komfortable for deg. På den måten vil manusene kjøre når du trykker på den valgte tastekombinasjonen.


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.

  1.   Michael Sp sa

    Siden jeg ble kjent med Linux, har jeg spurt meg selv nøyaktig det samme som bare ble beskrevet i denne kommentaren. det ville være et ambisiøst prosjekt.

  2.   pmf sa

    Opplæringen virker bra for meg, men hvordan sier du noe enkelt for nybegynnere? Vel, den som virker best for meg er KAzam, den er enkel å bruke og bruker ikke mye etter min mening !!!!!! Jubel

  3.   La oss bruke Linux sa

    Ikke alle. I tillegg tror jeg ærlig talt at det ikke er noe godt grensesnitt for screencasting (som har alt jeg trenger), som fungerer med de formatene jeg ønsker og som bruker få ressurser.

    I mitt tilfelle er terminalen det beste alternativet. Jeg later ikke som om det er for alle, men det er bra å dele det man lærer, ikke sant?

    Jubel! Paul.

  4.   Jorge Rocha sa

    Det er galt at hvis vi ønsker å utvide operativsystemet under GNU / linux, anbefaler vi brukere å gjøre den slags ting i terminalen, folk vil ha noe enkelt og funksjonelt

    @ingjorgerocha

  5.   hvorforsoyjuan sa

    På servernivå bruker jeg også bare konsoll, ingen grafiske omgivelser ... det er det mest praktiske og jeg gjør alt derfra (automatiske sikkerhetskopier for eksempel som du godt sier ...), men på en maskin du har som en server ... for hva vil du gjøre en screencast på den? hehe..ffmpeg er veldig veldig gyldig, men jeg tror konsollproblemet skal gå i bakgrunnen avhengig av hvilke distribusjoner
    Siden vi har så mange distroer i Linux-verdenen, og konsollen er perfekt nok til å fungere skikkelig i alle situasjoner (det er nesten ufeilbarlig heller ..), bør vi begynne å forbedre appene for publikum, start å polere, kode og grafisk aspekt ... som er det som kreves i dag.
    Vi har ganske arkaiske og forlatte Linux-prosjekter, vi vet alle at ... et godt eksempel for meg er hvorfor det ikke lenger er et kjørbart filformat som lar deg ta et program på en pendrive og bare dobbeltklikke og et enkelt installasjon bortsett fra å kreve repositories (og derfor nettverk) .. ingen APTonCD, dette er også utdatert .. vi trenger en standard, en ".tux" eller noe som ligner på en Windows ".exe". Er det for plassproblemer? .. i Windows opptar Gimp-kjørbar 72mb og den samme for Linux (.deb) opptar 4,2mb ... hvorfor er dette? Vel, fordi selve Gimp-programmet, i Windows, ledsages det av alle bibliotekene for å sikre at programmet fungerer når det er installert ... i Linux kunne vi ha noe lignende, den kjørbare filen ville okkupere mer, vi ville miste fordelen med størrelse men vi får portabilitet (og mer med minnene så store at vi har i dag i lommene ... hvilken forskjell gjør det å bære 4 MB enn 72 MB hvis nesten alle av oss har 8 GB pennstasjoner?)
    Alle disse tingene må poleres ... systemet er stabilt, har god støtte og driverkompatibilitet ... hvorfor forbedrer vi ikke det som er? ... hvis noen blir oppmuntret, starter vi det kjørbare prosjektet hehe. !

  6.   hidabe sa

    Uhm ... vel, folk som elsker konsollen ikke elsker det fordi kjære venn, de elsker det fordi med det kan mange ting automatiseres, for eksempel på servernivå (selv om dette ikke er tilfelle).

  7.   hvorforsoyjuan sa

    Ærlig talt er konsollen veldig nyttig ... men det er programmer med noe GUI som bruker ffmpeg og er mer attraktive og konstruktive for mulige nye Linux-brukere ... Jeg anbefaler RecordMyDescktop som er i repositoriene til nesten alle distroer. Jeg vet det er mange som elsker konsollen, men dette må være ferdig med så mye som mulig ... Linux må være fokusert på skrivebordet og en mulig sluttbruker som fundamentalt vil ha det, et grafisk grensesnitt og om mulig vakkert og praktisk .. ... er det så vanskelig? at vi ikke kan la oss tråkke på ... Linux har et enormt potensial, og vi må presse det!
    Til tross for alt er det et flott program! Bra innlegg ^^

  8.   hvorforsoyjuan sa

    Sannheten er at ja, det er flott å dele det man lærer ... Dette er ikke en kritikk i devaluerende forstand av innlegget, men en kritikk av hvorfor ikke flere bruker Linux ... uansett hva de sier, konsollen bør reduseres til et andre plan for å vike for grafiske fasiliteter (dette betyr ikke at muligheten for å gjøre ting med konsoll er utelukket, men at den som vil bruke den og den som ikke gjør det, vel ...)
    På slutten av dagen er det som selger, det som er slående, det enkle å betjene et operativsystem ... Linux er internt ustoppelig, men hvis vi legger til den brukervennligheten og de intuitive grensesnittene ... vinner vi brukere og at det fordeler utvikling av samfunnet, de forskjellige programmene, støtte fra videospillbedrifter og derfor spesifikk maskinvare (si grafikkort ...), oppretting av spesialisert programvare som foreløpig bare finnes på Windows / Mac ... Jeg vet ikke, jeg tror dette er i 15M plan ... alt veldig hyggelig, men nå er det på tide å endre kurs litt ... og jeg sier litt!

    Vel, det standard kjørbare prosjektet i Linux står fortsatt, hvis noen leser det og vil at vi skal begynne å samarbeide, her er e-posten min, jeg skjuler ikke hehe (whysoyjuan@gmail.com)

    Hilsen og jeg håper å se flere kommentarer her ... det være seg kritikk eller ros, faktum er at vi må snakke.

  9.   La oss bruke Linux sa

    Flink! Godt bidrag.
    Klem! Paul.

  10.   Gerardo sa

    Hva består dette programmet av ... vær forsiktig, jeg er ikke veldig kunnskapsrik om dette!

    1.    la oss bruke linux sa

      Vanligvis brukes den til å konvertere videoer. I dette tilfellet demonstrerer vi hvordan du bruker det til å ta opp skrivebordet ditt og lage en videoopplæring, for eksempel.
      Klem! Paul.

  11.   tarribalis sa

    Takk skal du ha. I oppløsning, f.eks. 1280X800, må X ha store bokstaver for at ffmpeg-kommandoen skal fungere.