Záznam obrazu a zvuku v linuxu

Pokud chcete nahrávat svou obrazovku a ještě zachytávat zvuk z reproduktorů (např. točit Let’s playe), nemáte takový komfort jako ve Windows. Ne, že by to linux neuměl, ale prostě neexistuje grafické klikátko, kde by šlo vše nastavit jedním klepnutím myši. V tomto článku ukážu, jak si poradit s častými problémy, na které můžete narazit.

Software pro natáčení

Zde bych chtěl doporučit program Vokoscreen (https://github.com/vkohaupt/vokoscreen, dostupný také z oficiálních repozitářů Ubuntu). Umožňuje komfortní volbu, co nahrávat (jakou obrazovku, jaké okno, výřez na monitoru) a při použití PulseAudia i které vstupy/výstupy zahrnout do nahrávaného videa (zde jsem objevil chybu, o které se zmiňuji na konci článku). Zvolíte si FPS, video a audio kodeky a už točíte.

Alternativně můžete použít přímo programy avconv nebo ffmpeg a natáčet rovnou z příkazové řádky. Ostatně samotný Vokoscreen volá tyto externí programy a zpracovává jejich výstup. Volání může vypadat třeba takto:

avconv -f x11grab -r 25 -video_size 1920x1080 -i :0.0+0,0 -dcodec copy -f alsa -i pulse -pix_fmt yuv420p -c:v libx264 -preset veryfast -c:a libmp3lame -q:v 1 output.avi

Všechny parametry si můžete vyhledat v manuálových stránkách. Zde se bude nahrávat oblast 1920×1080 na displeji 0 od souřadnic 0,0 v x264, bude se brát vstup z PulseAudia s kodekem lame.

Odstranění šumu z mikrofonu

Real-time

Určitě to znáte. Mluvíte do mikrofonu, pak si záznam přehrajete a slyšíte šumění v pozadí. Tak snížíte citlivost mikrofonu, jenže pak nejste slyšet. Toto je možné u některých ovladačů ve Windows odstranit zaškrtnutím checkboxu v nastavení zvukové karty. V linuxu si to musíme udělat sami.

Nainstalujeme program sox a program pro úpravu audia Audacity:

sudo apt-get install sox audacity

Pomocí Audacity nahrajeme 3 vteřiny ticha (šumu z mikrofonu) do souboru noise.wav. Dále vytvoříme profil této nahrávky:

sox noise.wav -n noiseprof noise.prof

Pro ALSA vytvoříme tzv. loopback zařízení. To použijeme jako most mezi vstupem z mikrofonu a výstupem opraveného audia.

sudo modprobe snd_aloop

Nakonec spustíme tento příkaz, který provede odstranění šumu v pozadí a vrátí opravené audio:

pacat -r -d alsa_input.pci-0000_00_1b.0.analog-stereo --latency=1msec | sox -b 16 -e signed -c 2 -r 44100 -t raw - -b 16 -e signed -c 2 -r 44100 -t raw - no isered noise.prof 0.2 | pacat -p -d alsa_output.platform-snd_aloop.0.analog-stereo --latency=1msec

Samozřejmě nahradíme alsa_input.pci-0000_00_1b.0.analog-stereoalsa_output.platform-snd_aloop.0.analog-stereo za Vaše zařízení. Jak se přesně jmenují můžete zjistit pomocí programu paman nebo příkazu:

pactl list sources | grep "Name:"

Při přehrávání a nahrávání určitě poslouží grafický program pavucontrol, ve kterém můžete přepínat zařízení a měnit hlasitosti pro jednotlivé aplikace.

Audacity

Odstranit šum lze i pomocí aplikace na úpravu zvuku Audacity. Importujte nahrávku a myší označte tu část, ve které se nachází samotný šum. Klikněte na Efekty -> Odstranění šumu -> Získat profil šumu. Pak označte celou nahrávku a opět klikněte na Efekty -> Odstranění šumu a ve 2. kroku nastavte parametry (např. Zmenšení šumu o 20 dB). Voilá, v nahrávce se zmenší šum na minimum.

Můžete se podívat na mé video, kde demonstruji, jak odstranit šum.

Mixovaný zvuk ve Vokoscreenu

Pokud ve Vokoscreenu používáte jedno zařízení pro zvuk, nebudete mít problémy. Ovšem jakmile začnete „mixovat“, např. výstup zvuku ze hry a vstup mikrofonu, může po několika desítkách vteřin dojít k zhoršení kvality zvuku. Já na to upozorňuji přímo u repozitáře na Githubu.

Edit: Autor projektu schválil můj patch a začlenil ho do hlavního repozitáře. Je možné, že se tato opravená verze brzy objeví i v repozitářích linuxových distribucí.

Můžete si stáhnout zdrojové soubory, provést opravu a zkompilovat vlastní verzi. Tato úprava se týká verze 2.4.0.

git clone https://github.com/vkohaupt/vokoscreen.git
cd vokoscreen
git checkout 2.4.0
vim screencast.cpp

Zde přejděte na řádek 2369 a změňte podmínku

if ( counter > 0 )
 value = "-f alsa -i pulse ";

na

if (counter > 1) { 
 value = "-f alsa -f pulse -i vokoscreenMix.monitor ";
} else
if ( counter > 0 )
 value = "-f alsa -i pulse ";

Znamená to změnu a přidání parametru -f pulse -i vokoscreenMix.monitor, které zajistí použití správného „mixeru“, pokud se používá více než jedno audio zařízení.

Kompilace je snadná:

qmake
make clean
make -j4
sudo ln -s ~/Programy/vokoscreen/vokoscreen /usr/local/bin/vokoscreen
Příspěvek byl publikován v rubrice Tutoriály se štítky a jeho autorem je Petr Pošvic. Můžete si jeho odkaz uložit mezi své oblíbené záložky nebo ho sdílet s přáteli.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *