Kaip padaryti ekrano kopiją naudojant ffmpeg

Tiems, kurie nežino, a Screencast tai skaitmeninis kompiuterio ekrano išvesties įrašas, kartais turintis garso pasakojimą.

En Linux, yra keli įrankiai daryti ekranizavimas. Tačiau tie, kurie nori tai daryti sunaudojant minimalius išteklius jie negali nustoti skaityti šio straipsnio.


Naudodamas 2 įrankius (ffmpeg užfiksuoti ekraną ir xwininfo, norėdamas gauti įrašomo lango koordinates ir matmenis), man pavyko padaryti ekrano vaizdus naudojant minimalius išteklius ir gaunant optimalius rezultatus.

Scenarijos pradžios scenarijus

#! / bin / bash

# Gaukite pasirinkto lango koordinates ir dydį
# Tai neįtraukia langų dekoravimo.
  nenustatyti xywh
  eval $ (xwininfo -frame |
    sed -n -e "s / ^ + Absoliutus kairysis kairysis X: + ([0-9] +). * / x = 1 / p"
           -e "s / ^ + Absoliutus kairysis kairysis Y: + ([0-9] +). * / y = 1 / p"
           -e "s / ^ + Plotis: + ([0-9] +). * / w = 1 / p"
           -e "s / ^ + Aukštis: + ([0-9] +). * / h = 1 / p")
$ w = $ w + $ w% 2 # kad plotis yra 2 kartotinis, kitaip skundžiasi „ffmpeg“
WIN_XY = $ x "," $ y # formato XY koordinatės
WIN_GEO = $ w "x" $ h # formato lango dydis
# Pranešti-siųsti bus rodomas pranešimas, nurodantis ekrano pradžios pradžią.
# paleiskite „ffmpeg“ su parametrais, kurie tinka jūsų konfigūracijai.
pranešimas-siuntimas „Pradedama ekrano siuntimo ...“ && 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 ultra fast - crf 0 -threads 0 save.mp4

Jūs neturite iki galo suprasti visko, ką daro šis scenarijus. Pakanka paprasčiausiai sekti komentarus. Tačiau labai gali būti, kad turėsite pakeisti kai kuriuos parametrus eilutėje, kurioje vykdoma ffmpeg, kad pritaikytumėte juos savo mašinos konfigūracijai.

Garso architektūra

1) Jei naudojate OSS, pakeiskite -f alsa -i hw: 0 į -f oss -i / dev / dsp

2) Jei naudojate tik ALSA, turite naudoti scenarijuje pateiktus parametrus (-f alsa -i hw: 0). Norėdami nustatyti skaičių po hw: galite paleisti aplay -l ir pasirinkti tinkamą garso plokštės numerį.

3) Jei naudojate „Pulse Audio“ (tai naudoja „Ubuntu“ ir dariniai), naudokite parametrus -f alsa -ac 1 -i pulse.

FPS

-r 25 nurodo kadrus per sekundę arba kadrus per sekundę), kuriais norite įrašyti. 25 yra geras pasirinkimas.

Garso, vaizdo ir sinchronizavimo kodekas

-acodec libmp3lame yra garso kodekas. Pasirinkau įrašyti į mp3. Galite naudoti bet kurį kitą.

-async 1 leidžia sinchronizuoti garsą su vaizdo įrašu.

-vcodec libx264 - išankstinis greitas -crf 0 -gijos 0, nurodo ffmpeg, kad naudojamas vaizdo kodekas yra x264 ir kad išankstinis nustatymas yra labai greitas (yra greitas, lėtas ir pan.), kitaip jis nebus teisingai įrašomas norimu kiekiu fps. Parametras -crf 0 rodo suspaudimo lygį (kuo mažesnis suspaudimas, tuo mažesnis suspaudimas). Galiausiai gijos 0 nurodo naudojamų gijų skaičių, kai perduodant 0 ffmpeg automatiškai apskaičiuoja. Kaip ir garso nustatymuose, galite pasirinkti kitas parinktis.

Visi šie nustatymai man davė geriausius rezultatus: palyginti mažas failas, gera vaizdo kokybė, sinchronizuotas garsas ir jokių vėlavimų. Tačiau rekomenduoju pasinerti į „ffmpeg“ dokumentaciją, kad atrastumėte kitų.

Scenarijavimo pabaigos scenarijus

#! / bin / bash
pranešti-siųsti „Baigiama ekrano kopija ...“ && killall ffmpeg
Kad abu scenarijai veiktų, turite būti įdiegę pranešimų siuntimą. Visi „Ubuntu“ išvestiniai paskirstymai turėtų būti įdiegti su šiuo įrankiu. Arch ir dariniuose: sudo pacman -S libnotify.

ffcast

Ieškodamas informacijos scenarijams parašyti, atradau, kad kažkas turėjo labai panašią mintį. „Ffcast“ yra scenarijus, kuriame naudojami tie patys įrankiai (ffmpeg ir xwininfo). Aš tai pamenu, nes kai kuriems gali būti patogiau naudoti šį scenarijų.

„Arch“ ir jos dariniuose atidariau terminalą ir paleidau:

yaourt -S ffcast

Likusią dalį galite atsisiųsti iš čia.

Baigti…

Sukūrę ir išsaugoję scenarijus, išsaugotus savo HOME aplanke, turite suteikti jam vykdymo teises. Darant prielaidą, kad iškviečiami start_screencast ir finish_screencast, terminale vykdykite šias komandas:

chmod + x start_screencast
chmox + x nutraukti_screencast

Galiausiai belieka priskirti kiekvieną scenarijų prie 2 jums patogių sparčiųjų klavišų (nuorodų). Tokiu būdu scenarijai bus vykdomi, kai paspausite pasirinktą klavišų kombinaciją.


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.

  1.   Michael Sp sakė

    Nuo tada, kai susipažinau su „Linux“, savęs paklausiau to paties, kas buvo ką tik išsamiai aprašyta šiame komentare. tai būtų ambicingas projektas.

  2.   pmf sakė

    Pamoka man atrodo gera, bet kaip pasakyti ką nors lengvo pradedantiesiems vartotojams? Na, man atrodo, kad geriausia yra KAzam, ja lengva naudotis ir, mano nuomone, ji nevartoja daug !!!! Cheers

  3.   Panaudokime „Linux“ sakė

    Ne visi. Be to, nuoširdžiai tikiu, kad nėra geros ekranų siuntimo sąsajos (joje yra viskas, ko man reikia), kuri veikia su norimais formatais ir sunaudoja mažai išteklių.

    Mano atveju, terminalas yra geriausias pasirinkimas. Aš neapsimetinėju, kad tai tinka visiems, bet gerai pasidalinti tuo, ko mokosi, tiesa?

    Cheers! Paulius.

  4.   Jorge Rocha sakė

    Neteisinga, kad jei norime išplėsti OS naudodami GNU / Linux, patariame vartotojams daryti tokius dalykus terminaluose, kad žmonės norėtų ko nors lengvo ir funkcionalaus

    @ingjorgerocha

  5.   kodel soyjuan sakė

    Serverio lygiu taip pat naudoju tik konsolę, jokios grafinės aplinkos ... ji yra praktiškiausia ir viską darau iš ten (pvz., Automatizuoju atsargines kopijas, kaip sakote ...), bet kompiuteryje, kurį turite kaip serveris ... ką norite padaryti ekrano kopiją? hehe..ffmpeg yra labai tinkamas, bet manau, kad konsolės problema turėtų pereiti į antrą planą, priklausomai nuo to, kurie paskirstymai.
    Kadangi „Linux“ pasaulyje turime tiek daug įvairių distrofijų ir konsolė yra pakankamai ištobulinta, kad tinkamai veiktų visose situacijose (ji yra beveik neklystanti ..), turėtume pradėti tobulinti programas visuomenei, pradėti šlifuoti, koduoti ir grafinis aspektas ... ko reikalaujama šiandien.
    Mes turime gana archajiškus ir apleistus „Linux“ projektus, visi tai žinome ... man geras pavyzdys yra tai, kodėl nebėra vykdomojo failo formato, kuris leistų jums paimti programą į „pendrive“ ir tiesiog dukart spustelėti ir paprastą diegimas, išskyrus reikalingas saugyklas (taigi ir tinklą) .. nėra APTonCD, tai taip pat yra pasenusi .. mums reikia standarto, „.tux“ ar kažko panašaus į „Windows“ .exe. Ar tai kosmoso klausimas? .. „Windows“ sistemoje „Gimp“ vykdomasis failas užima 72 MB, o tas pats „Linux“ (.deb) - 4,2 MB ... kodėl taip yra? Na, kadangi pati „Gimp“ programa, sistemoje „Windows“ ją lydi visos bibliotekos, kad įsitikintų, jog programa veikia įdiegus ... „Linux“ sistemoje galėtume turėti tą patį, vykdomoji programa užimtų daugiau, prarastume dydžio pranašumą, bet mes įgyjame perkeliamumą (ir dar daugiau - su tokiais dideliais prisiminimais, kuriuos šiandien nešiojamės kišenėse ... koks skirtumas, ar nešiotis 4 MB, nei 72 MB, jei beveik visi mes nešiojamės 8 GB „pendrive“?)
    Visi šie dalykai turi būti nušlifuoti ... sistema yra stabili, pasižymi dideliu palaikymu ir tvarkyklių suderinamumu ... kodėl gi ne patobulinę tai, kas yra? ... jei kas nors yra skatinamas, mes pradedame vykdomąjį projektą hehe.!

  6.   hidabe sakė

    Uhm ... na, žmonės, kurie myli pultą, nemyli to, nes brangus draugas, jie myli, nes su juo galima daug ką automatizuoti, pavyzdžiui, serverio lygiu (nors taip nėra).

  7.   kodel soyjuan sakė

    Sąžiningai, konsolė yra labai naudinga ... tačiau yra programų su tam tikra GUI, kurios naudoja ffmpeg ir yra patrauklesnės bei konstruktyvesnės galimiems naujiems „Linux“ vartotojams ... Aš rekomenduoju „RecordMyDescktop“, kuris yra beveik visų rajonų saugyklose. Aš žinau yra daugybė žmonių, kurie mėgsta konsolę, tačiau tai turi būti kuo daugiau užbaigta ... „Linux“ turi būti sutelktas į darbalaukį ir galimą vartotoją, kuris iš esmės to nori, grafinę sąsają ir, jei įmanoma, gražią ir praktišką .. Ar tai taip sunku? kad negalime leisti sau žengti ... „Linux“ turi milžinišką potencialą ir turime jį išspausti!
    Nepaisant visko, tai puiki programa! Geras įrašas ^ ^

  8.   kodel soyjuan sakė

    Tiesa, taip, puiku pasidalinti tuo, ko mokosi ... Tai nėra kritika nuvertinančia pranešimo prasme, bet kritika, kodėl daugiau žmonių nenaudoja „Linux“ ... ką jie sako, konsolė turėtų būti sumažinta iki antros plokštumos, kad būtų suteikta vieta grafinėms priemonėms (tai nereiškia, kad yra atmetama galimybė atlikti veiksmus konsole, bet kad kas norėtų ja naudotis, kas ne, na, ne ..)
    Dienos pabaigoje tai, kas parduoda, stebina tai, kad operacinę sistemą lengva valdyti ... „Linux“ yra nesustabdoma iš vidaus, bet jei pridėsime prie šio paprasto naudojimo ir intuityvių sąsajų ... mes laimime vartotojus ir tai naudinga bendruomenės plėtra, įvairios programos, vaizdo žaidimų kompanijų palaikymas ir todėl specifinė aparatūra (tarkim, vaizdo plokštės ...), specializuotos programinės įrangos, kuri šiuo metu egzistuoja tik „Windows“ / „Mac“, kūrimas ... Aš nežinau, aš manau, kad tai yra 15 mln. plane ... viskas labai gražu, bet dabar atėjo laikas šiek tiek pakeisti kursą ... ir aš šiek tiek sakau!

    Na, standartinis „Linux“ vykdomas projektas vis dar yra, jei kas nors jį skaito ir nori, kad pradėtume bendradarbiauti, štai mano el. Paštas, neslepiu hehe (whysoyjuan@gmail.com)

    Sveikinimai ir tikiuosi čia pamatyti daugiau komentarų ... ar tai būtų kritika, ar pagyros, faktas yra tas, kad mes turime kalbėti. Xao

  9.   Panaudokime „Linux“ sakė

    Gerai! Geras indėlis.
    Apkabink! Paulius.

  10.   Gerardo sakė

    Apie ką ši programa ... būkite atsargūs, nesu labai gerai apie tai išmanęs!

    1.    naudokime linux sakė

      Paprastai jis naudojamas konvertuoti vaizdo įrašus. Tokiu atveju mes parodome, kaip jį naudoti, norint įrašyti darbalaukį ir, pavyzdžiui, sukurti vaizdo įrašo pamoką.
      Apkabink! Paulius.

  11.   tarribalis sakė

    Ačiū. Raiškoje, pvz., 1280X800, norint, kad komanda ffmpeg veiktų, X turi būti rašoma didžiosiomis raidėmis.