Hangforrás rögzítése terminálban

Linux tipp
Linux tipp
Ffmpeg hangrögzítés? Bár nagyon sok jó és grafikus felületű hangrögzítő program van Linux alatt én mégis terminálos megoldást választottam. A célom egy olyan megoldás volt, aminél bármilyen hangforrásból tudjak minőségben hangot rögzíteni. Miért? Mert vannak olyan podcastok, illetve hasonló oldalak, amiről nem tudom letölteni a hanganyagot. Nem zenére gondolok, hanem egy-egy hangoskönyvre, amit amatőr felolvasók olvasnak fel. Amit hallgatok, azt jó lenne rögzíteni is, hiszen a tapasztalat szerint sok nagyon jó anyag készítője egy idő után megszünteti a csatornáját. Illetve sok tárhely szolgáltató szerzői jogi gondolatok miatt ezeket előszeretettel üldözi, megszünteti érdemes egy mentést csinálni ezekről. Ez a feladat, és ezt kell megoldani.

Alap gondolatsor a hangrögzítéshez, Linux alatt

A fenti feladat nagyon egyszerű, ha már a gépembe bejön a hang az interneten, akkor azt rögzíteni is lehet, ha nem a hangszóróra küldöm, hanem egy programnak, ami rögzíti. A másik megoldandó feladat, hogy meg tudjam adni a rögzítés hosszát is, hiszen nem egy pár perces zeneszámról van szó, hanem esetlegesen több órás felolvasásokról. Ideális lenne, ha közben nem szólna a hangszóróból, illetve mellette mást is tudnék hallgatni. A feladat lépései:

  • A hangeszköz meghatározása
  • A rögzítés paramétereinek meghatározása
  • Utómunka

A svájci bicska a hang és videó feldolgozáshoz: ffmpeg

Ffmpeg! Amikor körbejártam a témát nagyon kellemes meglepetés volt, hogy minden feladatot egy (plusz egy kisebb) program meg fog oldani. Az ffmpeg beállítását ehhez lépésről lépésre érdemes megtenni, mert minden kapcsolónak szerepe van és érdemes azokat valóban úgy beállítani, ahogy az neked ideális. Az ffmpeg jó eséllyel alapfelszereltség, de ha nem, akkor telepíteni kell. Minden normális disztribúcióban ott lesz.

Hang és hangeszköz

Ha indítunk egy programmal hanglejátszást, akkor a hangot egy hangeszköz kezeli, amit érdemes lesz megkeresni, mert meg kell adni az ffmpeg programnak, hogy melyik eszköztől kapja majd az adatfolyamot. Itt már gondoljunk arra, hogy egy hosszabb hang rögzítésénél mást is szeretnénk tenni a géppel, így ideális lenne, ha nem szólna közben a hangszóró.

Első lépésként felkeressünk a podcast stb. oldalát, ami eléggé el nem ítélhető mód nem adja a letöltési lehetőséget. Elindítjuk a kedvenc böngészőnkben a lejátszást és meggyőződünk arról, hogy valóban nincs semmi akadálya a lejátszásnak. De lehet ez a forrás egy akármilyen program is, amivel a hanganyagot hallgatni tudjuk, sok ilyen oldalnak van natív Linuxos programja. Ha van hang, akkor indítani kell a pavucontrol parancsot, vagy akár grafikus felületről a Hangerőszabályzót, vagy valami hasonló néven megtalálható alkalmazást. Itt látni fogjuk a "Lejátszás" fülön a böngészőnket és azt is, hogy szépen mozog a kijelző sávja.

Hangerőszabályzó
Hangerőszabályzó

Ha van több hangeszközünk, akkor a sáv felett lesz egy legördülő választómező, és ott felsorolják a hangeszközöket. Nálam három van, és mivel nem azt akarom használni, ami a hangszórókat üzemelteti, másikra váltok. Így a hangszóró elhalkul, de maga a lejátszás megy tovább. Második lépés már összetettebb, mert meg kell határozni az aktuális számát a hangeszköznek, amit használunk. Ez a szám változhat, illetve újraindítás után majdnem biztosan változni fog. Így ez a lépés nem kihagyható. Bár van olyan megoldás, aminél direkt hivatkozhatunk az eszközre, de én ezt választottam. Így mindig az aktuális feladatnak megfelelően állítom be a parancsot. A lekérdezést a pactl list short sources terminálba való beírásával kapjuk meg és egy listából kiválaszthatjuk a kívánt eszköz számát.

 1 alsa\_output.usb-Samson\_Technologies\_Samson\_GoMic-00.analog-stereo.monitor module-alsa-card.c s16le 2ch 44100Hz RUNNING
 2 alsa\_input.usb-Samson\_Technologies\_Samson\_GoMic-00.analog-stereo module-alsa-card.c s16le 2ch 44100Hz RUNNING
 3 alsa\_output.pci-0000\_0a\_00.4.analog-stereo.monitor module-alsa-card.c s16le 2ch 44100Hz RUNNING
 4 alsa\_output.pci-0000\_08\_00.1 **.hdmi**\-stereo-extra3.monitor module-alsa-card.c s16le 2ch 44100Hz RUNNING

Én könnyű helyzetben vagyok, mert a ..hdmi.. (nálam a videokártya) kiírása egyértelmű. Ha valami miatt nem egyértelmű (legyen az, és ismerd meg a gépedet!) akkor próbafelvételeket kell készíteni, és kitapasztalni mi melyik eszköz.
Nálam, ahogy látni a problémát a GoMic eszköz okozhatná, hiszen ott két eszköz van azonos néven. Az egyik a mikrofon, a másik a mikrofonba épített hangkimenet, ami elvileg egy hangszóróhoz kötve hangot is adna.

Ffmpeg paraméterezése

Harmadik lépés már izgalmasabb lesz! Az ffmpeg parancsot fel kell paraméterezni. Ami meglepő mód nagyon egyszerű. Bár a leírása, man és help oldalai komoly mennyiségű ismereteket adnak, mi egy minimális beállítás mellett használjuk.

fmpeg -f pulse -i 6 teszt.wav

fmpeg -f pulse Megadjuk neki, hogy pulseaudio rendszerből adjuk neki a hangfolyamot, ami a legtöbb rendszerben jó lesz, hiszen ezt rendszert használom. Az újabb pipewire megoldást nem tudtam tesztelni, így ott esetleg mást kell majd megadni. Nálam ez van jelenleg.
-i 4 teszt.wav. Annak az eszköznek a száma, amit használjon. Az előbb lekérdeztük, most csak a számát írjuk be. Illetve értelemszerűen megadunk egy fájlnevet. Itt választhatjuk a sima hanghullámot is, ami a wav kiterjesztésű, ez jó minőségű, de nincs tömörítve, azaz nem mp3 stb. Nagy, sok esetben nagyon nagy állományt ad. Bár az állomány nagy lesz, én ezt szeretem, mert a feldolgozása gyors, és minőség is jó.
Azonos hosszúságú anyag mp3-as fájlban sokkal lassabban tölt be a vágóprogramba nálam. Én maradok ennél. Bár nem feltétlen kötelező, de érdemes a fájlt a leggyorsabb lemezre tenni, hogy írási sebesség jó legyen. Jellemzően nem okoz gondot a lassabb lemez sem, de itt valóban realtime kell kiíratni az anyagot, így egy leharcolt HDD nem jó! Bár én nem használom, de aki mp3-asban szeretne menteni, a -acodec libmp3lame -ab 320k output.mp3 vagy hasonló megoldás jó lehet. Itt érdemes a leírásokat elolvasni, hiszen a hangfolyamot már tömörítjük, esetleg módosítjuk is a minőségét.
Tipp: ha nem vagy tisztában ezekkel a dolgokkal, akkor használj sima wav állományt, majd grafikus programmal konvertáld át. A hang kódolása, tömörítése összetett feladat, ha bizonytalan vagy, akkor készíts pár teszt beállítást.

A legtöbb esetben az internetről rögzítünk. Ha kicsi a sávszélesség akkor más le vagy feltöltés ne fusson.

Nagyon kellemesen meglepett, hogy az ffmpeg-nél megadható a felvétel hossza, így nem kell leállítani a felvételt, öntevékenyen leáll.
A -t 8:00:00 nyolc órás időtartamot jelent, ha csak fél perces próbát akarunk, a -t 30 lesz a jó megoldás. Miután teszteltük, indulhat is a felvétel. A felvétel után már a megszokott mód a kedvenc szerkesztő, vágó programba betölthetjük. Bár a legtöbb stream program, vagy internetes hangforrás normálisan kiírja a hosszúságot, de ne centizzük ki a hosszt. Könnyebb a végéről levágni egy üres szakaszt, mint újra venni az egészet, mert fél perc lemaradt…

Ez használható bármilyen hang felvételére, akár egy mikrofon is lehet a bemenő jel forrása, de egy program is.

Gondolom nem kell kiemelnem, hogy csak olyan hangot rögzítsünk, ami nem sérti senki szerzői jogát!

Tesztelve: MX, 2022 május. Kiegészítve: 2024-01-16 Mint.