Kako napraviti screencast pomoću ffmpeg

Za one koji ne znaju, a screencast to je digitalni zapis izlaza sa računarskog ekrana, koji ponekad sadrži audio naraciju.

En Linux, postoji nekoliko alati uraditi screen casting. Međutim, oni koji to više vole trošeći minimalne resurse ne mogu prestati čitati ovaj članak.


Koristeći 2 alata (ffmpeg za snimanje zaslona i xwininfo za dobivanje koordinata i dimenzija prozora koji se snimaju) uspio sam napraviti snimke zaslona koristeći minimalne resurse i postižući optimalne rezultate.

Skripta za početak prikazivanja ekrana

#! / bin / bash

# Dohvatite koordinate i veličinu odabranog prozora
# Ovo isključuje ukrašavanje prozora.
  unset xywh
  eval $ (xwininfo -frame |
    sed -n -e "s / ^ + Apsolutni gornji lijevi X: + ([0-9] +). * / x = 1 / p"
           -e "s / ^ + Apsolutni gornji lijevi Y: + ([0-9] +). * / y = 1 / p"
           -e "s / ^ + Širina: + ([0-9] +). * / w = 1 / p"
           -e "s / ^ + Visina: + ([0-9] +). * / h = 1 / p")
$ w = $ w + $ w% 2 # da je širina višestruka od 2, inače se ffmpeg žali
WIN_XY = $ x "," $ y # format XY koordinate
WIN_GEO = $ w "x" $ h # veličina prozora
# notify-send će prikazati poruku koja označava početak ekranizacije.
# pokrenite ffmpeg s parametrima koji odgovaraju vašoj konfiguraciji.
notify-send "Starting 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 -preset ultrafast - crf 0-niti 0 spremi.mp4

Ne trebate u potpunosti razumjeti sve što ova skripta radi. Jednostavno praćenje komentara je dovoljno. Međutim, vrlo je moguće da ćete morati promijeniti neke parametre u retku u kojem se izvršava ffmpeg kako biste ih prilagodili konfiguraciji vašeg stroja.

Audio arhitektura

1) Ako koristite OSS, zamijenite -f alsa -i hw: 0 sa -f oss -i / dev / dsp

2) Ako koristite samo ALSA, morate koristiti parametre koji dolaze u skripti (-f alsa -i hw: 0). Da biste odredili broj nakon hw: možete pokrenuti aplay -l i odabrati odgovarajući broj zvučne kartice.

3) Ako koristite Pulse Audio (Ubuntu i derivati ​​koriste ovo), upotrijebite parametre -f alsa -ac 1 -i pulse.

FPS

-r 25 označava fps (sličice u sekundi ili sličice u sekundi) na kojem želite snimati. 25 je dobra opcija.

Audio, video i sinhronizacijski kodek

-acodec libmp3lame je audio kodek. Odlučio sam da to snimim u mp3 formatu. Možete koristiti bilo koji drugi.

-async 1 omogućava sinhronizaciju zvuka i videa.

-vcodec libx264 -preset ultrafast -crf 0 -threads 0, kaže ffmpeg da je video kodek koji se koristi x264 i da je unaprijed postavljena postavka ultrabrza (postoji brza, spora itd.), inače neće snimati pravilno na željena količina fps. Parametar -crf 0 označava razinu kompresije (što je niža kompresija, to je niža kompresija). Napokon, niti 0 označavaju broj niti koje će se koristiti, kada se proslijedi 0, ffmpeg ga automatski izračunava. Kao i kod postavki zvuka, možete odabrati i druge opcije.

Sve ove postavke dale su mi najbolje rezultate: relativno mala datoteka, dobar kvalitet video zapisa, sinhronizirani zvuk i bez zastoja. Međutim, preporučujem vam da zaronite u ffmpeg dokumentaciju da biste otkrili druge.

Skripta za završetak ekranizacije

#! / bin / bash
notify-send "Završava se screencast ..." && killall ffmpeg
Da bi obje skripte radile, morate imati instalirano notify-send. Sve distribucije izvedene iz Ubuntua trebale bi imati instaliran ovaj alat. U Arch i izvedenice: sudo pacman -S libnotify.

ffcast

Tražeći informacije za pisanje skripti, otkrio sam da je netko imao ideju vrlo sličnu mojoj. Ffcast je skripta koja koristi iste alate (ffmpeg i xwininfo). Spominjem ga jer će nekima biti prikladnije koristiti ovu skriptu.

U Archu i derivatima otvorio sam terminal i pokrenuo:

yaourt -S ffcast

Ostalo možete preuzeti sa ovdje.

Do kraja…

Jednom kada kreirate i spremite skripte spremljene u vašu mapu HOME, morate joj dodijeliti dozvole za izvršavanje. Pod pretpostavkom da su pozvani start_screencast i finish_screencast, pokrenite sljedeće naredbe u terminalu:

chmod + x start_screencast
chmox + x terminate_screencast

Konačno, ostaje samo dodijeliti svaku od skripti u 2 prečice (prečice) koje su vama ugodne. Na taj će se način skripte pokrenuti kada pritisnete odabranu kombinaciju tipki.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   Michael Sp rekao je

    Otkako sam upoznao Linux, pitao sam se upravo ono isto što je upravo detaljno opisano u ovom komentaru. bio bi to ambiciozan projekat.

  2.   pmf rekao je

    Vodič mi se čini dobar, ali kako se kaže nešto lako za početnike? Pa, najbolji mislim da je KAzam, jednostavan je za upotrebu i ne troši puno po mom mišljenju !!!!!! Živjeli

  3.   Koristimo Linux rekao je

    Ne sve. Uz to, iskreno vjerujem da ne postoji dobar interfejs za prikazivanje ekrana (koji ima sve što mi treba), koji radi sa formatima koje želim i koji troši malo resursa.

    U mom slučaju je terminal najbolja opcija. Ne pretvaram se da je to za sve, ali dobro je podijeliti ono što se uči, zar ne?

    Živjeli! Paul.

  4.   Jorge Rocha rekao je

    Pogrešno je da ako želimo proširiti OS pod GNU / linux, savjetujemo korisnicima da rade takve stvari u terminalu ljudi žele nešto lako i funkcionalno

    @ingjorgerocha

  5.   whysoyjuan rekao je

    Na nivou poslužitelja također koristim samo konzolu, bez grafičkog okruženja ... najpraktičnije je i sve radim odatle (automatiziram sigurnosne kopije, na primjer kako dobro kažete ...), ali, na računaru koji imate kao server ... što želite na njemu napraviti screencast? hehe..ffmpeg je vrlo valjan, ali mislim da bi problem s konzolom trebao ići u pozadinu, ovisno o distribucijama.
    Budući da u svijetu Linuxa imamo takvu raznolikost distribucija, a konzola je dovoljno usavršena da ispravno radi u svim situacijama (gotovo je nepogrešiva ​​..), trebali bismo početi s poboljšanjem aplikacija za javnost, početi za poliranje, kodiranje i grafički aspekt ... što je ono što se danas traži.
    Imamo prilično arhaične i napuštene Linux projekte, svi to znamo ... za mene je dobar primjer zašto više ne postoji izvršni format datoteke koji vam omogućava da program prebacite na slobodni pogon i jednostavno dvostrukim klikom i jednostavnom instalacijom osim potrebe za spremištima (a samim tim i mrežom) .. nema APTonCD, i ovo je zastarjelo .. potreban nam je standard, ".tux" ili nešto slično Windowsu ".exe". Je li to problem sa prostorom ? .. u Windowsu izvršna datoteka Gimp zauzima 72mb, a ista za Linux (.deb) zauzima 4,2mb ... zašto je ovo? Pa, jer sam Gimp program, u sustavu Windows ga prate sve biblioteke kako bi bili sigurni da program radi kad se instalira ... u Linuxu bismo mogli imati nešto isto, izvršna bi datoteka zauzimala više, izgubili bismo prednost veličine, ali dobili bismo na prenosivosti (i više s toliko velikim uspomenama koje danas nosimo u džepovima ... kakva je razlika nositi 4MB nego 72MB ako skoro svi nosimo nosioce od 8GB?)
    Sve ove stvari moraju biti uglačane ... sistem je stabilan, ima veliku podršku i kompatibilnost s upravljačkim programima ... zašto ne bismo poboljšali ono što postoji? ... ako neko bude ohrabren, započinjemo izvršni projekat hehe.!

  6.   hidabe rekao je

    Uhm ... pa, ljudi koji vole konzolu ne vole je jer dragi prijatelju, oni je vole jer se s njom mnoge stvari mogu automatizirati, na primjer, na nivou poslužitelja (iako to nije slučaj).

  7.   whysoyjuan rekao je

    Iskreno, konzola je vrlo korisna ... ali postoje programi s nekim GUI-jem koji koriste ffmpeg i privlačniji su i konstruktivniji za moguće nove korisnike Linuxa ... Preporučujem RecordMyDescktop koji se nalazi u spremištima gotovo svih distroa. Znam da ima mnogo ljudi koji vole konzola, ali ovo mora biti završeno sa što je više moguće ... Linux mora biti usredotočen na radnu površinu i mogućeg krajnjeg korisnika koji to u osnovi želi, grafičko sučelje i ako je moguće lijepo i praktično ... je li tako teško? da ne možemo dopustiti da nas zgaze ... Linux ima ogroman potencijal i moramo ga istisnuti!
    Uprkos svemu, to je sjajan program! Dobar post ^^

  8.   whysoyjuan rekao je

    Istina je, da, sjajno je podijeliti ono što se uči ... Ovo nije kritika u obezvređivačkom smislu posta, već kritika zašto više ljudi ne koristi Linux ... što god kažu, konzolu treba svesti na druga ravnina koja ustupa mjesto grafičkim objektima (to ne znači da je isključena mogućnost izvođenja stvari putem konzole, već da onaj ko to želi koristiti, a onaj ko ne, pa ...)
    Na kraju, ono što se prodaje, upada u oči je jednostavnost upravljanja OS-om ... Linux je interno nezaustavljiv, ali ako tome dodamo jednostavnost upotrebe i intuitivno sučelje ... osvajamo korisnike i to ima koristi razvoj zajednice, različiti programi, podrška kompanija za video igre i samim tim specifični hardver (recimo grafičke kartice ...), stvaranje specijaliziranog softvera koji trenutno postoji samo na Windows / Mac ... Ne znam, ja mislim da je ovo u planu 15M ... sve vrlo lijepo, ali sada je vrijeme da malo promijenimo kurs ... i kažem malo!

    Pa, standardni izvršni projekt u Linuxu i dalje stoji, ako ga netko pročita i želi da započnemo suradnju, evo moje e-pošte, ne krijem hehe (whysoyjuan@gmail.com)

    Pozdrav i nadam se da ću ovdje vidjeti više komentara ... bili oni kritika ili pohvala, činjenica je da moramo razgovarati. Xao

  9.   Koristimo Linux rekao je

    Dobro! Dobar doprinos.
    Zagrljaj! Paul.

  10.   Gerardo rekao je

    O čemu se radi u ovom programu ... budite oprezni, nisam baš upućen u ovo!

    1.    iskoristimo linux rekao je

      Generalno se koristi za pretvaranje video zapisa. U ovom slučaju, demonstriramo kako ga koristiti za snimanje radne površine i izradu video vodiča, na primjer.
      Zagrljaj! Paul.

  11.   tarribalis rekao je

    Hvala ti. U rezoluciji, npr. 1280X800, X mora biti napisano velikim slovima da bi naredba ffmpeg mogla raditi.