Kako narediti screencast s pomočjo ffmpeg

Za tiste, ki ne vedo, a screencast gre za digitalni posnetek izpisa računalniškega zaslona, ​​ki včasih vsebuje zvočno pripoved.

En Linux, obstaja več orodja narediti predvajanje zaslona. Vendar tisti, ki to raje počnejo porabi minimalna sredstva tega članka ne morejo nehati brati.


Z dvema orodjema (ffmpeg za zajem zaslona in xwininfo za pridobitev koordinat in dimenzij okna, ki ga je treba posneti) mi je uspelo narediti predvajanje zaslona z minimalnimi sredstvi in ​​doseči optimalne rezultate.

Skript za začetek predvajanja zaslona

#! / Bin / bash

# Pridobite koordinate in velikost izbranega okna
# To izključuje dekoracijo oken.
  razveljavi xywh
  eval $ (xwininfo -frame |
    sed -n -e "s / ^ + Absolutni zgornji levi X: + ([0-9] +). * / x = 1 / p"
           -e "s / ^ + Absolutni zgornji levi Y: + ([0-9] +). * / y = 1 / p"
           -e "s / ^ + Širina: + ([0-9] +). * / w = 1 / p"
           -e "s / ^ + Višina: + ([0-9] +). * / h = 1 / p")
$ w = $ w + $ w% 2 # da je širina večkratnik 2, sicer se ffmpeg pritožuje
WIN_XY = $ x "," $ y # format XY koordinate
WIN_GEO = $ w "x" $ h # velikost okna formata
# notify-send bo prikazal sporočilo, ki označuje začetek predvajanja zaslona.
# zaženite ffmpeg s parametri, ki ustrezajo vaši 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 shrani.mp4

Ni vam treba popolnoma razumeti vsega, kar počne ta skript. Preprosto sledenje komentarjem je dovolj. Vendar je zelo mogoče, da boste morali spremeniti nekatere parametre v vrstici, kjer se izvaja ffmpeg, da jih prilagodite konfiguraciji vaše naprave.

Zvočna arhitektura

1) Če uporabljate OSS, zamenjajte -f alsa -i hw: 0 z -f oss -i / dev / dsp

2) Če uporabljate samo ALSA, morate uporabiti parametre, ki so v skriptu (-f alsa -i hw: 0). Če želite določiti številko po hw: lahko zaženete aplay -l in izberete ustrezno številko zvočne kartice.

3) Če uporabljate Pulse Audio (Ubuntu in derivati ​​uporabljajo to), uporabite parametre -f alsa -ac 1 -i pulse.

FPS

-r 25 označuje fps (sličice na sekundo ali sličice na sekundo), pri katerih želite snemati. 25 je dobra možnost.

Zvočni, video in sinhronizacijski kodek

-acodec libmp3lame je zvočni kodek. Odločil sem se, da ga posnamem v mp3. Uporabite lahko katero koli drugo.

-async 1 omogoča sinhronizacijo zvoka z videom.

-vcodec libx264 -preset ultrafast -crf 0 -threads 0, sporoča ffmpeg, da je uporabljen video kodek x264 in da je prednastavitev ultrahitra (obstaja hitra, počasna itd.), sicer ne bo pravilno snemala na želeno količino fps. Parameter -crf 0 označuje stopnjo stiskanja (nižja kot je stiskanje, nižja je stiskanje). Končno, niti 0 označujejo število niti, ki jih je treba uporabiti, ko jih prenese 0, jih samodejno izračuna. Tako kot pri zvočnih nastavitvah lahko izberete tudi druge možnosti.

Vse te nastavitve so mi prinesle najboljše rezultate: razmeroma majhna datoteka, dobra kakovost videa, sinhroniziran zvok in brez zaostankov. Vendar vam priporočam, da se potopite v dokumentacijo ffmpeg, da odkrijete druge.

Skript za zaključek predvajanja zaslona

#! / Bin / bash
notify-send "Končni prenos zaslona ..." && killall ffmpeg
Da obe skripti delujeta, morate imeti nameščeno funkcijo notify-send. Vse distribucije, ki izhajajo iz Ubuntuja, bi morale imeti nameščeno to orodje. V Arch in derivati: sudo pacman -S libnotify.

ffcast

V iskanju informacij za pisanje scenarijev sem odkril, da je nekdo imel idejo, ki je zelo podobna moji. Ffcast je skript, ki uporablja ista orodja (ffmpeg in xwininfo). Omenjam ga, ker se nekaterim zdi bolj priročno uporabljati ta skript.

V Archu in derivativih sem odprl terminal in zagnal:

yaourt -S ffcast

Ostalo lahko prenesete iz tukaj.

Na konec…

Ko ustvarite in shranite skripte, shranjene v mapi HOME, mu morate dodeliti dovoljenja za izvajanje. Ob predpostavki, da sta poklicana start_screencast in finish_screencast, v terminalu zaženite naslednje ukaze:

chmod + x start_screencast
chmox + x terminate_screencast

Na koncu ostane samo, da vsako skriptu dodelite dvema bližnjicama (bližnjicama), ki sta za vas udobni. Tako se skripti izvedejo, ko pritisnete izbrano kombinacijo tipk.


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.

  1.   Michael Sp je dejal

    Odkar sem spoznal Linux, sem se vprašal popolnoma enako, kar je bilo pravkar podrobno opisano v tem komentarju. to bi bil ambiciozen projekt.

  2.   pmf je dejal

    Menim, da je vadnica dobra, toda kako reči kaj lahkotnega za uporabnike začetnike? No, najboljši se mi zdi KAzam, enostaven za uporabo in po mojem mnenju ne porabi veliko !!!!!! Na zdravje

  3.   Uporabimo Linux je dejal

    Ne vsi. Prav tako resnično verjamem, da ni dobrega vmesnika za predvajanje zaslona (ki vsebuje vse, kar potrebujem), ki bi deloval s formati, ki jih želim, in bi porabil malo virov.

    V mojem primeru je terminal najboljša možnost. Ne pretvarjam se, da je namenjen vsem, vendar je dobro, če delimo to, kar se učimo, kajne?

    Na zdravje! Paul.

  4.   Jorge Rocha je dejal

    Napačno je, da če želimo razširiti operacijski sistem pod GNU / linux, uporabnikom svetujemo, naj to storijo v terminalu, da ljudje želijo nekaj preprostega in funkcionalnega

    @ingjorgerocha

  5.   zakajsoyjuan je dejal

    Na ravni strežnika uporabljam tudi samo konzolo, nobenega grafičnega okolja ... je najbolj praktično in delam vse od tam (avtomatiziram varnostne kopije, na primer, kot pravite ...), toda na računalniku, ki ga imate kot strežnik ... kaj želite narediti screencast na njem? hehe..ffmpeg je zelo veljaven, vendar mislim, da mora težava s konzolo iti v ozadje, odvisno od katere distribucije.
    Ker imamo v svetu Linuxa tako raznolike distribucije in je konzola dovolj izpopolnjena za pravilno delovanje v vseh situacijah (skorajda je nezmotljiva ..), bi morali začeti izboljševati aplikacije za javnost, začeti za poliranje, kodo in grafični vidik ... kar se danes zahteva.
    Imamo precej arhaične in zapuščene Linuksove projekte, vsi vemo, da ... dober primer zame je, zakaj ni več izvedljive datoteke, ki bi vam omogočala, da vzamete program na pendrive in preprosto dvokliknete in preprosto namestite poleg tega, da potrebujemo repozitorije (in s tem tudi omrežje) .. brez APTonCD, je tudi to zastarelo .. potrebujemo standard, ".tux" ali kaj podobnega ".exe" sistema Windows. Ali je to vprašanje prostora ? .. v operacijskem sistemu Windows zasedba Gimp zaseda 72 MB, enaka za Linux (.deb) pa 4,2 MB ... zakaj je to? No, ker sam program Gimp v sistemu Windows spremljajo vse knjižnice, da se prepriča, da program deluje ob namestitvi ... v Linuxu bi lahko imeli nekaj istega, več bi zasedli izvršljivi program, izgubili bi prednost velikosti, vendar bi pridobili na prenosljivosti (in bolj s tako velikimi spomini, ki jih danes nosimo v žepih ... kakšna je razlika, če nosimo 4 MB kot 72 MB, če skoraj vsi nosimo 8 GB nosilcev?)
    Vse te stvari je treba polirati ... sistem je stabilen, ima veliko podporo in združljivost z gonilniki ... zakaj ne bi izboljšali tega, kar obstaja? ... če koga spodbujamo, začnemo izvedljiv projekt hehe. !

  6.   hidabe je dejal

    Hm ... no, ljudje, ki imajo radi konzolo, je nimajo radi, ker dragi prijatelj, obožujejo jo, ker je z njo mogoče marsikaj avtomatizirati, na primer na ravni strežnika (čeprav temu ni tako).

  7.   zakajsoyjuan je dejal

    Iskreno povedano, konzola je zelo koristna ... obstajajo pa programi z nekaj GUI, ki uporabljajo ffmpeg in so bolj privlačni in konstruktivni za morebitne nove uporabnike Linuxa ... Priporočam RecordMyDescktop, ki je v repozitorijih skoraj vseh distribucij. Vem, da je veliko ljudi, ki imajo radi konzolo, vendar je treba to končati s čim več ... Linux mora biti osredotočen na namizje in morebitnega končnega uporabnika, ki si tega v osnovi želi, grafični vmesnik in po možnosti lep in praktičen ... je to tako težko? da na nas ne moremo stopiti .. Linux ima izjemen potencial in ga moramo iztisniti!
    Kljub vsemu je odličen program! Dobra objava ^^

  8.   zakajsoyjuan je dejal

    Resnica je, da da, čudovito je deliti to, kar se človek nauči ... To ni kritika v razvrednotilnem smislu prispevka, ampak kritika, zakaj več ljudi ne uporablja Linuxa ... karkoli rečejo, konzolo je treba zmanjšati na drugo ravnino, ki se umakne grafičnim objektom (to ne pomeni, da je izključena možnost izvajanja stvari s pomočjo konzole, ampak da, kdor jo hoče uporabiti in kdo ne, no ...
    Na koncu je tisto, kar prodaja, presenetljivo preprosto upravljanje operacijskega sistema ... Linux je notranje neustavljiv, če pa k temu dodamo enostavnost uporabe in intuitivne vmesnike ... pridobimo uporabnike in to Koristi razvoj skupnosti, različni programi, podpora podjetij za videoigre in s tem posebna strojna oprema (recimo grafične kartice ...), ustvarjanje posebne programske opreme, ki trenutno obstaja samo na Windows / Mac ... Ne vem, mislim to je v načrtu 15 milijonov ... vse zelo lepo, zdaj pa je čas, da malo spremenimo smer ... in rečem malo!

    No, standardni izvedljivi projekt v Linuxu še vedno stoji, če ga kdo prebere in želi, da začnemo sodelovati, tukaj je moj e-poštni naslov, ne skrivam hehe (whysoyjuan@gmail.com)

    Lep pozdrav in upam, da bom tu videl več komentarjev ... naj bodo to kritike ali pohvale, dejstvo je, da se moramo pogovarjati.

  9.   Uporabimo Linux je dejal

    Dobro! Dober prispevek.
    Objem! Paul.

  10.   Gerardo je dejal

    Iz česa je sestavljen ta program ... bodite previdni, glede tega nisem preveč razgledan!

    1.    uporabimo linux je dejal

      Na splošno se uporablja za pretvorbo videoposnetkov. V tem primeru vam predstavimo, kako ga lahko uporabite za snemanje namizja in na primer video vadnico.
      Objem! Paul.

  11.   tarribalis je dejal

    Hvala vam. V ločljivosti, npr. 1280X800, mora biti črka X velika, da bo ukaz ffmpeg deloval.