Ako vytvoriť screencast pomocou ffmpeg

Pre tých, ktorí nevedia, a screencast je to digitálny záznam výstupu z obrazovky počítača, niekedy obsahujúci zvukové rozprávanie.

En Linux, je ich niekoľko nástroje robiť vysielanie obrazovky. Avšak tí, ktorí to radšej robia náročné na minimálne zdroje nemôžu prestať čítať tento článok.


Pomocou 2 nástrojov (ffmpeg na zachytenie obrazovky a xwininfo na získanie súradníc a rozmerov okna, ktoré sa majú zaznamenať) sa mi podarilo vytvoriť screencasty s použitím minimálnych zdrojov a získaním optimálnych výsledkov.

Skript na spustenie screencastu

#! / Bin / bash

# Získajte súradnice a veľkosť vybraného okna
# Toto vylučuje výzdobu okna.
  zrušiť xywh
  eval $ (xwininfo -frame |
    sed -n -e "s / ^ + Absolútna ľavá horná časť X: + ([0-9] +). * / x = 1 / p"
           -e "s / ^ + Absolútna ľavá horná Y: + ([0-9] +). * / y = 1 / p"
           -e "s / ^ + šírka: + ([0-9] +). * / w = 1 / p"
           -e "s / ^ + výška: + ([0-9] +). * / h = 1 / p")
$ w = $ w + $ w% 2 # že šírka je násobkom 2, inak sa ffmpeg sťažuje
WIN_XY = $ x "," $ y # formát XY súradníc
WIN_GEO = $ w "x" $ h # veľkosť okna formátu
# notify-send zobrazí správu označujúcu začatie screencastu.
# spustite ffmpeg s parametrami, ktoré vyhovujú vašej konfigurácii.
upozorniť-poslať "Spustenie screencastu ..." && ffmpeg -f alsa -i hw: 0 -f x11grab -r 25 -s $ WIN_GEO -i: 0.0 + $ WIN_XY -acodec libmp3lame -async 1 -vcodec libx264 -predvoliť ultrarýchle - crf 0-vlákna 0 save.mp4

Nemusíte úplne rozumieť všetkému, čo tento skript robí. Stačí len sledovať komentáre. Je však veľmi možné, že budete musieť zmeniť niektoré parametre v riadku, kde sa vykonáva ffmpeg, aby ste ich prispôsobili konfigurácii vášho stroja.

Audio architektúra

1) Ak používate OSS, nahraďte -f alsa -i hw: 0 za -f oss -i / dev / dsp

2) Ak používate iba ALSA, musíte použiť parametre, ktoré sa nachádzajú v skripte (-f alsa -i hw: 0). Určenie čísla po hw: môžete spustiť aplay -l a zvoliť príslušné číslo zvukovej karty.

3) Ak používate Pulse Audio (používa to Ubuntu a jeho deriváty), použite parametre -f alsa -ac 1 -i pulse.

FPS

-r 25 označuje snímky za sekundu (snímky za sekundu alebo snímky za sekundu), na ktoré chcete nahrávať. 25 je dobrá voľba.

Audio, video a synchronizačný kodek

-acodec libmp3lame je zvukový kodek. Rozhodol som sa to nahrať do mp3. Môžete použiť akýkoľvek iný.

-async 1 umožňuje synchronizáciu zvuku s videom.

-vcodec libx264 -preset ultrarýchly -crf 0 -threads 0, hovorí ffmpeg, že video kodek, ktorý sa má použiť, je x264 a že predvoľba je ultrarýchla (je rýchla, pomalá, atď.), inak sa nebude nahrávať správne na požadované množstvo fps. Parameter -crf 0 označuje úroveň kompresie (čím nižšia je kompresia, tým nižšia je kompresia). Nakoniec vlákna 0 označujú počet vlákien, ktoré sa majú použiť, pri prechode hodnotou 0 ffmpeg to automaticky počíta. Rovnako ako v prípade nastavení zvuku, aj tu môžete zvoliť ďalšie možnosti.

Všetky tieto nastavenia mi priniesli najlepšie výsledky: relatívne malý súbor, dobrá kvalita videa, synchronizovaný zvuk a žiadne oneskorenia. Odporúčam vám však ponoriť sa do dokumentácie ffmpeg, aby ste objavili ďalšie.

Skript na ukončenie obrazovky

#! / Bin / bash
upozorniť a poslať „Končí sa screencast ...“ && killall ffmpeg
Aby oba skripty fungovali, musíte mať nainštalované upozornenie na odoslanie. Všetky distribúcie odvodené od Ubuntu by mali byť dodávané s nainštalovaným týmto nástrojom. In Arch a deriváty: sudo pacman -S libnotify.

ffcast

Pri hľadaní informácií na napísanie skriptov som zistil, že niekto mal nápad veľmi podobný môjmu. Ffcast je skript, ktorý používa rovnaké nástroje (ffmpeg a xwininfo). Spomínam to, pretože pre niekoho môže byť použitie tohto skriptu pohodlnejšie.

V Arche a derivátoch som otvoril terminál a spustil:

jogurt -S ffcast

Zvyšok si môžete stiahnuť z tu.

Do konca…

Po vytvorení a uložení skriptov uložených vo vašom priečinku HOME mu musíte udeliť povolenie na vykonávanie. Za predpokladu, že sa volá start_screencast a finish_screencast, spustite v termináli nasledujúce príkazy:

chmod + x start_screencast
chmox + x terminate_screencast

Nakoniec zostáva iba priradiť každý zo skriptov k dvom skratkám (skratkám), ktoré vám vyhovujú. Takto sa skripty spustia po stlačení vybranej kombinácie klávesov.


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.

  1.   Michael Sp dijo

    Odkedy som Linux spoznal, položil som si otázku presne to isté, čo bolo práve podrobne popísané v tomto komentári. bol by to ambiciózny projekt.

  2.   pmf dijo

    Výukový program sa mi zdá dobrý, ale ako poviete niečo ľahké pre začínajúcich používateľov? No, ten, ktorý sa mi zdá najlepší, je KAzam, je ľahko použiteľný a podľa môjho názoru nespotrebuje veľa !!!!!! Na zdravie

  3.   Použime Linux dijo

    Nie všetko. Úprimne tiež verím, že neexistuje dobré rozhranie pre screencasting (ktoré má všetko, čo potrebujem), ktoré pracuje s formátmi, ktoré chcem, a ktoré spotrebúva málo zdrojov.

    V mojom prípade je terminál najlepšou voľbou. Netvárim sa, že je to pre každého, ale je dobré zdieľať to, čo sa človek učí, však?

    Na zdravie! Pavla.

  4.   Jorge Rocha dijo

    Je nesprávne, že ak chceme rozšíriť OS pod GNU / linux, odporúčame používateľom, aby robili také veci v termináli, ľudia chcú niečo ľahké a funkčné

    @ingjorgerocha

  5.   whyyyuan dijo

    Na úrovni servera používam iba konzolu, žiadne grafické prostredie ... je to najpraktickejšie a všetko robím odtiaľ (automatizujem zálohy napríklad ako dobre vravíte ...), ale na počítači, ktorý máte ako server ... čo na ňom chcete urobiť screencast? hehe .. Ffmpeg je veľmi platný, ale myslím si, že problém s konzolou by mal ísť do pozadia v závislosti od toho, ktoré distribúcie.
    Keďže vo svete Linuxu máme toľko rozmanitých distribúcií a konzola je natoľko zdokonalená, aby fungovala správne vo všetkých situáciách (je to takmer neomylné ..), mali by sme začať vylepšovať aplikácie pre verejnosť, začať na leštenie, kódovanie a grafické aspekty ... čo je dnes požadované.
    Máme dosť archaické a opustené projekty Linuxu, všetci vieme, že ... dobrým príkladom pre mňa je dôvod, prečo už neexistuje spustiteľný formát súboru, ktorý vám umožní prevziať program na pendrive a jednoducho dvakrát kliknúť a jednoducho inštalácia okrem vyžadovania úložísk (a teda siete) .. žiadny APTonCD, aj tento je zastaraný .. potrebujeme štandard, „.tux“ alebo niečo podobné ako „Windows“ .exe “. Je to kvôli problému s priestorom? .. vo Windows obsadí spustiteľný súbor Gimp 72 MB a ten istý pre Linux (.deb) 4,2 MB ... prečo je to tak? Pretože samotný program Gimp, vo Windows ho sprevádzajú všetky knižnice, aby sa ubezpečil, že program funguje, keď je nainštalovaný ... v Linuxe by sme mohli mať niečo rovnaké, spustiteľný súbor by zaberal viac, stratili by sme výhodu veľkosť, ale získavame na prenosnosti (a viac vďaka pamätiam, ktoré sú také veľké, že ich dnes nosíme vo vreckách ... aký je rozdiel v nosení 4 MB a 72 MB, ak takmer každý z nás nesie prívesky s veľkosťou 8 GB?)
    Všetky tieto veci musia byť vyleštené ... systém je stabilný, má veľkú podporu a kompatibilitu s ovládačmi ... prečo nezlepšíme to, čo existuje? ... ak je niekto povzbudený, spustíme spustiteľný projekt hehe. !

  6.   hidabe dijo

    Hm ... no, ľudia, ktorí milujú konzolu, ju nemilujú, pretože je drahý priateľ, milujú ju, pretože pomocou nej je možné automatizovať veľa vecí, napríklad na úrovni servera (aj keď to tak nie je).

  7.   whyyyuan dijo

    Úprimne povedané, konzola je veľmi užitočná ... ale existujú programy s určitým grafickým rozhraním, ktoré používajú ffmpeg a sú atraktívnejšie a konštruktívnejšie pre možných nových používateľov systému Linux ... Odporúčam RecordMyDescktop, ktorý je v úložiskách takmer všetkých distribúcií. existuje veľa ľudí, ktorí milujú konzolu, ale toto treba dokončiť čo najviac ... Linux sa musí sústrediť na plochu a možného koncového používateľa, ktorý to zásadne chce, grafické rozhranie a pokiaľ je to možné, krásny a praktický ... je to také ťažké? že sa nemôžeme nechať šliapať .. Linux má obrovský potenciál a my ho musíme vytlačiť!
    Napriek všetkému je to skvelý program! Dobrý príspevok ^ ^

  8.   whyyyuan dijo

    Pravda je, že áno, je skvelé zdieľať to, čo sa človek učí ... Toto nie je kritika v znehodnocujúcom zmysle príspevku, ale kritika toho, prečo viac ľudí nepoužíva Linux ... nech už hovoria čokoľvek, konzola by mala byť znížená na druhú rovinu, aby ustúpila grafickým možnostiam (to neznamená, že je vylúčená možnosť robiť veci pomocou konzoly, ale že kto ju chce používať a kto nie, dobre, nie ..)
    Nakoniec to, čo predáva, je zarážajúca ľahká obsluha operačného systému ... Linux je vnútorne nezastaviteľný, ale ak k tomu pripočítame jednoduchosť použitia a intuitívne rozhrania ... vyhrávame používateľov a výhody vývoj komunity, rôzne programy, podpora od spoločností poskytujúcich videohry, a teda konkrétny hardvér (napríklad grafické karty ..), tvorba špecializovaného softvéru, ktorý v súčasnosti existuje iba pre systémy Windows / Mac ... neviem, myslím si, že toto je v pláne 15 miliónov ... všetko veľmi pekné, ale teraz je čas trochu zmeniť smer ... a hovorím trochu!

    No, štandardný spustiteľný projekt v Linuxe stále stojí, ak si ho niekto prečíta a chce, aby sme začali spolupracovať, tu je môj e-mail, neskrývam hehe (whysoyjuan@gmail.com)

    Zdravím a dúfam, že tu uvidím ďalšie komentáre ... či už sú to kritiky alebo chvály, faktom je, že musíme hovoriť.

  9.   Použime Linux dijo

    Dobre! Dobrý príspevok.
    Objať! Pavla.

  10.   Gerardo dijo

    O čom je tento program ... buďte opatrní, nemám o tom veľmi dobré vedomosti!

    1.    pouzivajme linux dijo

      Spravidla sa používa na prevod videí. V takom prípade ukážeme, ako ho použiť na záznam vašej pracovnej plochy a napríklad vytvoriť videonávod.
      Objať! Pavla.

  11.   tarribalis dijo

    Ďakujem. V rozlíšení, napr. 1280X800, musí byť písmeno X veľké, aby príkaz ffmpeg fungoval.