Screencast készítése az ffmpeg használatával

Azok számára, akik nem tudják, a screencast ez a számítógép képernyőjének kimenetének digitális felvétele, amely néha audio narrációt tartalmaz.

En Linux, több is van szerszámok csinálni képernyõs vetítés. Azok azonban, akik inkább ezt teszik minimális erőforrásokat fogyasztva nem hagyhatják abba a cikk olvasását.


2 eszköz használatával (ffmpeg a képernyő rögzítéséhez és az xwininfo a rögzítendő ablak koordinátáinak és méreteinek megszerzéséhez) minimális erőforrások felhasználásával és optimális eredmények elérése érdekében sikerült képernyősávokat készítenem.

A forgatókönyv indításához szükséges szkript

#! / bin / bash

# Szerezze be a kijelölt ablak koordinátáit és méretét
# Ez kizárja az ablakdíszítést.
  unset xywh
  eval $ (xwininfo -frame |
    sed -n -e "s / ^ + Abszolút bal felső X: + ([0-9] +). * / x = 1 / p"
           -e "s / ^ + Abszolút bal felső Y: + ([0-9] +). * / y = 1 / p"
           -e "s / ^ + Szélesség: + ([0-9] +). * / w = 1 / p"
           -e "s / ^ + Magasság: + ([0-9] +). * / h = 1 / p")
$ w = $ w + $ w% 2 # hogy a szélesség a 2-es többszöröse, különben az ffmpeg panaszkodik
WIN_XY = $ x "," $ y # formátum XY koordináták
WIN_GEO = $ w "x" $ h # formátumú ablakméret
A # értesítés-küldés üzenetet jelenít meg, amely jelzi a képernyő elkezdését.
# futtassa az ffmpeg-t a konfigurációjának megfelelő paraméterekkel.
értesítés-küldés "Indító képernyőfelvétel ..." && 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 ultragyors - crf 0 -szálak 0 save.mp4

Nem kell teljesen megértenie mindent, amit ez a szkript tesz. Elég csak a megjegyzések követése. Nagyon lehetséges, hogy néhány paramétert meg kell változtatnia abban a sorban, ahol az ffmpeg fut, hogy a gép konfigurációjához igazítsa őket.

Audio architektúra

1) Ha OSS-t használ, cserélje le az -f alsa -i hw: 0 parancsot az -f oss -i / dev / dsp fájlra

2) Ha csak ALSA-t használ, akkor a szkriptben szereplő paramétereket kell használnia (-f alsa -i hw: 0). A hw utáni szám meghatározása: futtathatja az aplay -l alkalmazást, és kiválaszthatja a megfelelő hangkártya számát.

3) Ha Pulse Audio-t használ (az Ubuntu és a származékai ezt használják), használja az -f alsa -ac 1 -i pulse paramétereket.

FPS

-r 25 azt az fps-t jelöli (képkocka másodpercenként vagy képkocka másodpercenként), amelyen rögzíteni kíván. 25 egy jó lehetőség.

Audio, video és szinkron kodek

-acodec A libmp3lame az audio kodek. Úgy döntöttem, hogy mp3-ban rögzítem. Bármely más használható.

-async 1 lehetővé teszi az audio és a videó szinkronizálását.

-vcodec libx264 -preset ultragyors -crf 0 -threads 0, megmondja az ffmpeg-nek, hogy a használni kívánt videokodek x264, és hogy az előre beállított ultragyors (van gyors, lassú stb.), különben nem rögzíti helyesen a kívánt mennyiségben fps. A -crf 0 paraméter a tömörítési szintet jelzi (minél alacsonyabb a tömörítés, annál alacsonyabb a tömörítés). Végül a 0 szál jelzi a használandó szálak számát, amikor a 0 átadása az ffmpeg automatikusan kiszámítja. Az audio beállításokhoz hasonlóan más lehetőségeket is választhat.

Mindezek a beállítások adták a legjobb eredményt: viszonylag kicsi fájl, jó videominőség, szinkronizált hanggal és késések nélkül. Javaslom azonban, hogy merüljön el az ffmpeg dokumentációjában, hogy felfedezhesse másokat.

A forgatókönyv befejezése

#! / bin / bash
értesít-küld "Screencast befejezése ..." && killall ffmpeg
Ahhoz, hogy mindkét szkript működjön, telepítenie kell az értesítés-küldés parancsot. Minden Ubuntu-alapú disztribúciónak telepítve kell lennie ezzel az eszközzel. Archban és származékaiban: sudo pacman -S libnotify.

ffcast

Információt keresve a szkriptek megírásához rájöttem, hogy valakinek nagyon hasonló ötlete van, mint nekem. Az Ffcast egy szkript, amely ugyanazokat az eszközöket használja (ffmpeg és xwininfo). Azért említem, mert egyesek kényelmesebbnek találhatják ennek a szkriptnek a használatát.

Az Arch és származékaiban megnyitottam egy terminált és futottam:

yaourt -S ffcast

A többit letöltheti innen itt.

Befejezni…

Miután létrehozta és elmentette a HOME mappába mentett szkripteket, meg kell adnia a végrehajtási engedélyeket. Ha feltételezzük, hogy a start_screencast és a finish_screencast meghívásra kerül, futtassa a következő parancsokat egy terminálon:

chmod + x start_screencast
chmox + x terminate_screencast

Végül csak az egyes szkriptek hozzárendelése 2 gyorsbillentyűhöz (gyorsbillentyűk), amelyek kényelmesek az Ön számára. Így a parancsfájlok végrehajtásra kerülnek, amikor megnyomja a kiválasztott billentyűkombinációt.


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.

  1.   Michael Sp dijo

    Amióta megismertem a Linuxot, pontosan ugyanazt kérdeztem magamtól, amit az imént részleteztek ebben a megjegyzésben. ambiciózus projekt lenne.

  2.   pmf dijo

    Az oktatóanyag jónak tűnik számomra, de hogy mondasz valami egyszerűt a kezdő felhasználók számára? Nos, nekem az tűnik a legjobban a KAzam, könnyen kezelhető, és véleményem szerint nem sokat fogyaszt !!!!!! Egészségére

  3.   Használjuk a Linuxot dijo

    Nem mind. Ezenkívül őszintén hiszem, hogy nincs jó felület a képernyőfelvetítéshez (ebben minden megvan, amire szükségem van), amely a kívánt formátumokkal működik, és kevés erőforrást emészt fel.

    Esetemben a terminál a legjobb megoldás. Nem teszek úgy, mintha mindenki számára szólna, de jó megosztani, amit tanul, igaz?

    Egészségére! Pál.

  4.   Jorge Rocha dijo

    Téves, hogy ha bővíteni akarjuk az operációs rendszert a GNU / linux alatt, akkor azt tanácsoljuk a felhasználóknak, hogy tegyenek ilyesmit a terminálban, az emberek valami könnyű és funkcionális dolgot akarnak

    @ingjorgerocha

  5.   miértsoyjuan dijo

    Szerver szinten én is csak konzolt használok, nincs grafikus környezet ... ez a legpraktikusabb, és mindent onnan csinálok (például automatizálom a biztonsági mentéseket, ahogy te mondod ...), de, egy gépen, amellyel rendelkezel szerverként ... mit akarsz csinálni rajta egy screencast? hehe..ffmpeg nagyon érvényes, de szerintem a konzol kérdésének háttérbe kell kerülnie, attól függően, hogy melyik disztribúció.
    Mivel nagyon sokféle disztribúciónk van a Linux világában, és a konzol eléggé tökéletesen működik ahhoz, hogy minden helyzetben megfelelően működjön (szinte tévedhetetlen ..), el kell kezdenünk fejleszteni az alkalmazásokat a nyilvánosság számára, el kell kezdenünk csiszolni, kódolni és grafikai szempont ... amit ma követelnek.
    Van elég archaikus és elhagyott Linux projektünk, mindannyian tudjuk, hogy ... számomra jó példa arra, hogy miért nincs többé olyan futtatható fájlformátum, amely lehetővé tenné egy program felvételét egy pendrive-ra, és egyszerűen dupla kattintással és egy egyszerű telepítés, kivéve a tárolók (és ezért a hálózat) igénylését .. nincs APTonCD, ez is elavult .. szükségünk van egy szabványra, egy ".tux" -ra vagy valami hasonlóra, mint egy Windows ".exe". a Windows rendszerben a Gimp futtatható fájl 72 MB-ot foglal el, és ugyanaz a Linux (.deb) esetén 4,2 MB ... miért van ez? Nos, mivel maga a Gimp program, a Windows-ban az összes könyvtár kíséri, hogy megbizonyosodjon arról, hogy a program telepítve működik-e ... Linux alatt lehet valami hasonló, a futtatható fájl többet foglalna el, elveszítenénk a méret előnyét de a hordozhatóság terén nyerünk (és még inkább az akkora memóriákkal, amelyeket ma a zsebünkben hordunk ... mi a különbség, ha 4 MB-ot hordozunk, mint 72 MB-ot, ha szinte mindannyian 8 GB-os pendrive-ot hordunk?
    Mindezeket a dolgokat csiszolni kell ... a rendszer stabil, nagy támogatottsággal és illesztőprogram-kompatibilitással rendelkezik ... miért nem fejlesztjük tovább, mi van? ... ha valakit ösztönözünk, elindítjuk a futtatható projektet hehe.!

  6.   hidabe dijo

    Uhm ... nos, azok az emberek, akik szeretik a konzolt, nem szeretik, mert kedves barátom, azért szeretik, mert vele sok minden automatizálható, például szerver szinten (bár ez nem így van).

  7.   miértsoyjuan dijo

    Őszintén szólva, a konzol nagyon hasznos ... de vannak olyan programok néhány GUI-val, amelyek ffmpeg-t használnak, és vonzóbbak és konstruktívabbak a lehetséges új Linux-felhasználók számára. sok ember szereti a konzolt, de ezt a lehető legjobban be kell fejezni ... A Linux-nak az asztalra kell összpontosítania, és egy lehetséges végfelhasználóra, aki alapvetően ezt akarja, egy grafikus felületet, és ha lehetséges, szép és praktikus .. olyan nehéz? hogy nem léphetünk fel .. A Linuxnak óriási lehetőségei vannak, és meg kell szorítanunk!
    Mindennek ellenére remek program! Jó poszt ^^

  8.   miértsoyjuan dijo

    Az az igazság, hogy igen, nagyon jó megosztani, amit tanul ... Ez nem kritika a bejegyzés leértékelő értelmében, hanem az a kritika, hogy miért nem használják többen a Linuxot ... bármit is mondanak, a a konzolt egy második síkra kell csökkenteni, hogy utat engedjen a grafikus létesítményeknek (ez nem azt jelenti, hogy kizárt a konzolon keresztüli dolgok lehetősége, hanem azt, hogy aki használni akarja, és aki nem, hát ...)
    A nap végén ami elad, ami szembetűnő, az az operációs rendszer egyszerű működtetése ... A Linux belsőleg megállíthatatlan, de ha hozzátesszük ezt a könnyű kezelhetőséget és az intuitív interfészeket ... megnyerjük a felhasználókat, és ez előnyös a közösség fejlesztése, a különféle programok, a videojáték-társaságok támogatása, ezért speciális hardver (mondjuk grafikus kártyák ...), speciális szoftver létrehozása, amely jelenleg csak Windows / Mac-en létezik ... Nem tudom, nem Szerintem ez 15M-es tervben van ... mind nagyon szép, de most itt az ideje, hogy kicsit változtassunk az irányon ...

    Nos, a szokásos futtatható projekt a Linuxban még mindig áll, ha valaki elolvassa és azt akarja, hogy kezdjünk együtt dolgozni, itt van az e-mailem, nem titkolom hehe (whysoyjuan@gmail.com)

    Üdvözlet, és remélem, hogy itt további megjegyzéseket láthatok ... legyenek kritikák vagy dicséretek, az a tény, hogy beszélnünk kell. Xao

  9.   Használjuk a Linuxot dijo

    Jó! Jó hozzájárulás.
    Ölelés! Pál.

  10.   Gerardo dijo

    Miből áll ez a program ... légy óvatos, ebben nem vagyok túl tájékozott!

    1.    használjuk a linuxot dijo

      Általában a videók konvertálásához használják. Ebben az esetben bemutatjuk, hogyan használhatjuk például az asztalunk rögzítésére és egy video oktatóanyag készítésére.
      Ölelés! Pál.

  11.   tarribalis dijo

    Köszönöm. Felbontásban, pl. 1280X800, az X-et nagybetűvel kell írni, hogy az ffmpeg parancs működjön.