Jak vytvořit screencast pomocí ffmpeg

Pro ty, kteří nevědí, a screencast jedná se o digitální záznam výstupu z obrazovky počítače, někdy obsahující zvukové vyprávění.

En Linux, existuje několik nářadí dělat vysílání obrazovky. Ti, kteří to však raději dělají náročné na minimální zdroje nemohou přestat číst tento článek.


Pomocí 2 nástrojů (ffmpeg k zachycení obrazovky a xwininfo k získání souřadnic a rozměrů okna, které se má zaznamenat) se mi podařilo vytvořit screencasty s použitím minimálních zdrojů a získání optimálních výsledků.

Skript pro spuštění screencastu

#! / bin / bash

# Získejte souřadnice a velikost vybraného okna
# To vylučuje výzdobu okna.
  zrušit xywh
  eval $ (xwininfo -frame |
    sed -n -e "s / ^ + Absolutní levý horní X: + ([0-9] +). * / x = 1 / p"
           -e "s / ^ + Absolutní levý horní Y: + ([0-9] +). * / y = 1 / p"
           -e "s / ^ + Šířka: + ([0-9] +). * / w = 1 / p"
           -e "s / ^ + Výška: + ([0-9] +). * / h = 1 / p")
$ w = $ w + $ w% 2 # že šířka je násobkem 2, jinak si stěžuje ffmpeg
WIN_XY = $ x "," $ y # formát XY souřadnice
WIN_GEO = $ w "x" $ h # velikost okna formátu
# notify-send zobrazí zprávu označující začátek vysílání.
# spusťte ffmpeg s parametry, které vyhovují vaší konfiguraci.
oznámit-odeslat "Spouštění 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 -preset ultrarychlý - crf 0 -threads 0 save.mp4

Nemusíte plně rozumět všemu, co tento skript dělá. Stačí pouze sledovat komentáře. Je však velmi možné, že budete muset změnit některé parametry v řádku, kde je spuštěn ffmpeg, abyste je přizpůsobili konfiguraci vašeho stroje.

Zvuková architektura

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

2) Pokud používáte pouze ALSA, musíte použít parametry, které jsou ve skriptu (-f alsa -i hw: 0). Chcete-li zjistit počet po hw: můžete spustit aplay -l a zvolit příslušné číslo zvukové karty.

3) Pokud používáte Pulse Audio (používá to Ubuntu a deriváty), použijte parametry -f alsa -ac 1 -i pulse.

FPS

-r 25 označuje fps (snímky za sekundu nebo snímky za sekundu), na které chcete nahrávat. 25 je dobrá volba.

Audio, video a synchronizační kodek

-acodec libmp3lame je zvukový kodek. Rozhodl jsem se to nahrát do mp3. Můžete použít jakýkoli jiný.

-async 1 umožňuje synchronizaci zvuku s videem.

-vcodec libx264 -preset ultrarychlý -crf 0 -threads 0, říká ffmpeg, že video kodek, který se má použít, je x264 a že předvolba je ultrarychlá (existuje rychle, pomalu atd.), jinak nebude správně nahrávat v požadovaném množství fps. Parametr -crf 0 označuje úroveň komprese (čím nižší je komprese, tím nižší je komprese). Nakonec vlákna 0 označují počet vláken, která se mají použít, při předání 0 ffmpeg to automaticky vypočítá. Stejně jako u nastavení zvuku můžete zvolit další možnosti.

Všechna tato nastavení mi dala nejlepší výsledky: relativně malý soubor, dobrá kvalita videa, synchronizovaný zvuk a žádné zpoždění. Doporučuji vám však ponořit se do dokumentace ffmpeg a objevit další.

Skript pro ukončení screencastu

#! / bin / bash
oznámit a odeslat „Končí se vysílání ...“ && killall ffmpeg
Aby oba skripty fungovaly, musíte mít nainstalované upozornění a odesílání. Všechny distribuce odvozené z Ubuntu by měly být dodávány s nainstalovaným tímto nástrojem. V Archu a derivátech: sudo pacman -S libnotify.

ffcast

Při hledání informací k napsání skriptů jsem zjistil, že někdo má nápad velmi podobný mému. Ffcast je skript, který používá stejné nástroje (ffmpeg a xwininfo). Zmínil jsem to, protože některým se může tento skript hodit mnohem pohodlněji.

V Archu a derivátech jsem otevřel terminál a běžel:

yaourt -S ffcast

Zbytek si můžete stáhnout z zde.

Do konce…

Jakmile vytvoříte a uložíte skripty uložené ve složce HOME, musíte jí udělit oprávnění ke spuštění. Za předpokladu, že se volá start_screencast a finish_screencast, spusťte v terminálu následující příkazy:

chmod + x start_screencast
chmox + x terminate_screencast

Nakonec zbývá jen přiřadit každý ze skriptů ke 2 zkratkám (zkratkám), které jsou pro vás pohodlné. Tímto způsobem se skripty spustí, když stisknete vybranou kombinaci kláves.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.

  1.   Michael Sp řekl

    Od té doby, co jsem se seznámil s Linuxem, jsem si položil přesně to samé, co bylo právě popsáno v tomto komentáři. byl by to ambiciózní projekt.

  2.   pmf řekl

    Výukový program se mi zdá dobrý, ale jak říkáte něco snadného pro začínající uživatele? No, ten, který se mi zdá nejlepší, je KAzam, je snadno použitelný a podle mého názoru nespotřebovává moc !!!! Na zdraví

  3.   Pojďme použít Linux řekl

    Ne vše. Kromě toho upřímně věřím, že neexistuje dobré rozhraní pro screencasting (které má vše, co potřebuji), které pracuje s formáty, které chci, a které spotřebovává málo zdrojů.

    V mém případě je terminál nejlepší volbou. Nepředstírám, že je to pro každého, ale je dobré sdílet to, co se člověk učí, že?

    Na zdraví! Pavel.

  4.   Jorge Rocha řekl

    Je špatné, že pokud chceme rozšířit OS pod GNU / linux, doporučujeme uživatelům dělat takové věci v terminálu, lidé chtějí něco snadného a funkčního

    @jirgerocha

  5.   proč soyjuan řekl

    Na úrovni serveru také používám pouze konzolu, žádné grafické prostředí ... je to nejpraktičtější a vše dělám odtud (automatizuji zálohy například jak říkáte ...), ale na stroji, který máte jako server ... co na tom chcete udělat screencast? hehe .. Ffmpeg je velmi platný, ale myslím, že problém s konzolou by měl jít do pozadí v závislosti na tom, které distribuce.
    Protože ve světě Linuxu máme tolik různých distribucí a konzole je natolik zdokonalena, aby fungovala správně ve všech situacích (je to téměř neomylné ..), měli bychom začít vylepšovat aplikace pro veřejnost, začít leštit, kódovat a grafické hledisko ... což je dnes požadováno.
    Máme docela archaické a opuštěné projekty Linuxu, všichni víme, že ... dobrým příkladem pro mě je důvod, proč již neexistuje formát spustitelného souboru, který vám umožní převzít program na pendrive a jednoduše na něj dvakrát kliknout a jednoduchá instalace kromě požadavku na úložiště (a tedy i síť) .. bez APTonCD, to je také zastaralé .. potřebujeme standard, ".tux" nebo něco podobného jako Windows ".exe". Je to pro problém s prostorem ? .. ve Windows zabírá spustitelný soubor Gimp 72 MB a stejný pro Linux (.deb) 4,2 MB ... proč je to tak? Protože samotný program Gimp, ve Windows je doprovázen všemi knihovnami, aby se ujistil, že program funguje, když je nainstalován ... v Linuxu bychom mohli mít něco stejného, ​​spustitelný soubor by zabral více, ztratili bychom výhodu velikosti, ale získali jsme přenositelnost (a více se vzpomínkami tak velkými, že je dnes nosíme v kapsách ... jaký je rozdíl v tom, že nese 4 MB než 72 MB, pokud téměř každý z nás má 8 GB přívěsky?)
    Všechny tyto věci musí být vyleštěny ... systém je stabilní, má velkou podporu a kompatibilitu ovladačů ... proč nezlepšíme to, co existuje? ... pokud je někdo povzbuzen, spustíme spustitelný projekt hehe.!

  6.   hidabe řekl

    Uhm ... no, lidé, kteří milují konzolu, ji nemilují, protože milý příteli, milují ji, protože s ní lze mnoho věcí automatizovat, například na úrovni serveru (i když to tak není).

  7.   proč soyjuan řekl

    Upřímně řečeno, konzole je velmi užitečná ... ale existují programy s některými grafickými uživatelskými rozhraními, které používají ffmpeg a jsou atraktivnější a konstruktivnější pro případné nové uživatele Linuxu ... Doporučuji RecordMyDescktop, který je v úložištích téměř všech distribucí. Vím, že existuje mnoho lidí, kteří milují konzole, ale to musí být dokončeno co nejvíce ... Linux musí být zaměřen na plochu a možného koncového uživatele, který to zásadně chce, grafické rozhraní a pokud je to možné, krásné a praktické ... je to tak obtížné? že se nemůžeme nechat šlápnout .. Linux má obrovský potenciál a my ho musíme vytlačit!
    Přes všechno je to skvělý program! Dobrý příspěvek ^ ^

  8.   proč soyjuan řekl

    Pravdou je, že ano, je skvělé sdílet to, co se člověk učí ... Nejedná se o kritiku ve znehodnocujícím smyslu příspěvku, ale o kritiku toho, proč více lidí nepoužívá Linux ... ať řeknou cokoli, konzole by měla být omezena na druhé letadlo, které ustoupí grafickým zařízením (to neznamená, že je vyloučena možnost dělat věci pomocí konzoly, ale že kdo to chce použít a kdo ne, no, ne ..)
    Na konci dne to, co prodává, je zarážející snadnost ovládání OS ... Linux je interně nezastavitelný, ale když k tomu přidáme snadnost použití a intuitivní rozhraní ... vyhráváme uživatele a to přínosem pro rozvoj komunity, různých programů, podporu společností poskytujících videohry, a tedy specifický hardware (řekněme grafické karty ..), vytváření specializovaného softwaru, který v současné době existuje pouze pro Windows / Mac ... nevím, myslím to je v plánu 15M ... všechno velmi pěkné, ale teď je čas trochu změnit kurz ... a já říkám trochu!

    Standardní spustitelný projekt v Linuxu stále platí, pokud si ho někdo přečte a chce, abychom začali spolupracovat, zde je můj e-mail, neskrývám hehe (whysoyjuan@gmail.com)

    Zdravím a doufám, že zde uvidím další komentáře ... ať už je to kritika nebo chvála, faktem je, že si musíme promluvit.

  9.   Pojďme použít Linux řekl

    Dobrý! Dobrý příspěvek.
    Objetí! Pavel.

  10.   Gerardo řekl

    O čem je tento program ... buďte opatrní, nevím o tom moc!

    1.    pojďme použít linux řekl

      Obecně se používá k převodu videí. V tomto případě si ukážeme, jak jej použít například k záznamu vašeho počítače a vytvoření videonávodu.
      Objetí! Pavel.

  11.   tarribalis řekl

    Děkuji. V rozlišení, např. 1280X800, musí být X velké, aby příkaz ffmpeg fungoval.