Ebbe a topikba gyűjtsük a linuxos hangrendszer problémáit, megoldásait. Itt lehet ötletelni, megoldási javaslatokkal előállni. Titkon azt remélem, a topik rövid életű lesz, mert hamar megoldódnak ezen problémák.
Jelen hozzászólásom akár a FAQ-ba is mehetett volna, mégis ide írom, mert ontopic. Bár nem gond, inkább megoldás.
Előfordulhat, hogy szükségünk van audio stream mentésére. Tegyük fel, azért, mert egy adott honlapon erre nem adnak közvetlen lehetőséget irigységből - politikailag korrekt megfogalmazás szerint jogvédelmi okokból. Ilyen lehet például a Magyar Rádió hangtára. (Ennek használatához tegyük whitelist-re a *radio.hu címet a Flashblock-ban.)
Az eljárást PulseAudio hangszerver használatával, Fedora 14-en kipróbálva adom meg.
azt elhiszem, de azert irtam oda az elejere, h akik nem azzal akarnak szenvedni h osszelojek a SIP kliensuket a pulseaudioval es szeretnenek hasznalni egyet out-of-the-box, azoknak jo ez. Ekiga, Qutecom illetve Xlite ezek nalam mind elhasaltak. utobbi 2-nel altalaban ugy hogy a kb. fel percig birtak a beszelgetest utana megadtak magukat.
Egy tipp azoknak akik SIP kliens szeretnenek hasznalni linux alatt de gondjaik vannak azzal a Pulseaudio miatt es lustak annak konfiguralasaval/kihajitasaval bajlodni: Twinkle
Én inkább úgy sejtem, hogy a TV-vevő bekapcsolódik, inicializálatlan, aztán amikor a firmware-e, vagy a hozzá tartozó kernel modul, vagy akinek ez dolga, eljut oda, akkor elnémítja a hangkimenetét.
Elég volt a store, a visszatöltés automatikusan megy. Most már van hangerő a bemeneten, nem kell állítgatni, mielőtt elindítom a tv progit.
Mellékhatás: ismét fehér zaj hallható pár másodpercig a display manager indulásakor és bejelentkezés után szintén. Logikus, hiszen hangot adtam a line-in -nek. Olyankor valamiért bekapcsolhatja a tv-vevőt pár másodpercre.
Miután beállítottad az alsamixerrel igény szerint, root joggal tedd ezt:
alsactl store
A /etc/rc.d/rc.local file-ba pedig tégy egy ilyen sort:
[ -f /etc/asound.state ] && alsactl restore
Ha leálláskor ad esetleg egy FAILED üzenetet a rendszer, az azért lehet, mert sima felhasználóként próbálna menteni talán az asound.state file-ba, amely a root által írható. Ezen régen elgondolkodtam, akkor tudtam, miért van, logikus, most hagy ne kelljen végiggondolni. Az a lényeg, hogy adhat hibát, de ez nem baj, mert pont az a lényeg, hogy ne az az állapot kerüljön mentésre, ami utoljára volt, hanem az, amit az alsactl store paranccsal mentettél. Tehát ha a gép leállásakor hibát ad, az nem hiba ebben az esetben. :)
Arra figyelj, hogy mielőtt az alsactl store parancsot root joggal kiadod, minden, ideértve a keverőt, elsősorban jelszintek, hangerő vonatkozásában egy általánosan használt kellemes, kívánt szintre legyen beállítva.
Már megint gondjaim vannak a hanggal. Na nem nagy gondok, csak kis bosszantóak. Most Fedora 13 alatt.
Korábbi (F12 és előtte) telepítéseknél az volt a gondom, hogy rendszerindításkor fehér zajt szólaltatott meg a hangbemenetre (line in) kötött tv-kártyáról.
Most ez megoldódott. Ugyanis a hangbemenet alapból némítva van. Elég hatásosan, ugyanis hiába piszkálom a hangbeállításokat (konkrétan a bemenetnél kiválasztottam a line-in-t és ott állítgattam a hangerőt, meg a némítást ki-be), nem történik semmi.
Viszont az alsamixer -c0 -t indítva meg tudtam szüntetni a némítást és tudtam hangerőt állítani a line-in-nek. Csak ezt nem jegyzi meg. Ha jól rémlik, az alsactl használható erre.
Na, majd kipróbálom, legfeljebb visszajön az indításkor hallott fehér zaj.
Debian Squeeze testing, kernel 2.6.32.-3-trunk Hangkártya: VIA Technologies, Inc. VT8233/A/8235/8237 AC97 Audio Controller (rev 50)
A hiba oka: a rendszer betöltésekor nem töltődött be a hangkártya meghajtó, így nem kerültek létrehozásra az eszközök. A portaudio-val csak bizonyos alkalmazások működnek együtt. Amit én szerettem volna használni az egy konzolos VoIP szerver alkalmazás. (SvxLink)
A probléma megoldása: A /etc könyvtárban lévő modules fájlba beírásra került az snd-via82xx sor azaz a hangkártya drivere. Így rendszerbetöltéskor létrejönnek a hiányzó hangeszközök. adsp, audio, dsp, mixer.
Using configuration file: /etc/svxlink.conf --- Using sample rate 16000Hz
Starting logic: SimplexLogic SNDCTL_DSP_GETCAPS ioctl failed: Oda nem illő ioctl az eszközön SNDCTL_DSP_GETCAPS ioctl failed: Inappropriate ioctl for device *** Error: Could not open audio device for receiver "Rx1" open audio device failed: No such file or directory
Javaslom ennek valamint ennek az oldalnak a tanulmányozását!
Can I get OSS and ALSA applications to work with PulseAudio?
Yes, you can! OSS applications are handled using the padsp utility shipped with PulseAudio:
padsp myapp <arguments to myapp>
ALSA applications are handled using the PulseAudio backend for alsa-lib. Documentation and the backend itself are shipped in the alsa-plugins package as part of the ALSA project.
A pulseaudio alapvetően nem úgy használható, mint az OSS, viszont van wrapper rétege ehhez.
Meg tudná valaki mondani, hogy Pulseaudio a /dev könyvtárban milyen néven találom meg a hangeszközt? dsp, audio néven semmi. Futtatni akarok egy VoIP alapú szervert és a konfigban meg kell adni az eszközt. Rendszer: Debian Squeeze testing. Egyébként hang van, mert más hangeszközt használó programok futnak rendesen, van hang.
Tapasztalataim szerint a PulseAudio még mindig több sebből vérzik. Végrehajtottam egy olyan kísérletet, amelyben két gép lokális hálózaton van, az egyiken audacious2 játszik le zenét, a PulseAudio RTP Multicast hálózatra teszi a stream-et, a másik gép PulseAudio hangszervere felszedi azt, s a lokális hangkártyáján hallhatóvá teszi.
A kísérlet ugyan sikerült, most másodjára stabilan megy egy órája, ugyanakkor első nekifutásra sikerült egy olyan állapotot előidéznem, hogy szaggatottan játszott le, és valahogy furcsán vinnyogva. Mintha teszem azt, minden második hangmintát küldene a hangkártyára, vagy nem 44.1 kHz mintavételi beállítást használna, persze úgy, hogy közben elfelejt resampling-et csinálni. Aztán emiatt kiszalad a buffer, megvárja, míg feltöltődik, aztán megint gyorsabban játszik le. Fura volt, s mintha az idő előrehaladtával nőtt volna a szünet ideje, s csökkent a vinnyogva lejátszás ideje.
További problémám, hogy erős gépeken - a stream-et küldő egy 2.5 GHz-es 2 magos AMD, a stream-et fogadó egy 3 GHz-es 4 magos AMD - képes eközben a PulseAudio 14%-os, illetve 10%-os CPU használatot összehozni.
Értem én, hogy a feladatnak van nehézsége, hiszen minden merev időzítésű. Maga a hanganyag 44.1 kHz mintavételű, a hangkártya ugyanígy fogadja be az adatot, de fizikailag másik gép, így másik órajel. Ha a tunkoló oldal siet, akkor lassan, de hízik a buffer, ha a stream-et fogadó oldal siet, akkor idővel buffer underflow lesz. Nem véletlen az, hogy elvileg a telefonos hálózatok a maguk 8 kHz mintavételével - CCITT G.711 - az egész világon szinkronban járnak, s az eszközök PLL-el ráhúznak a központ órajelére frekvenciában. Tehát átérzem a feladat nehézségét.
Amit szerintem csinálni lehet, hogy buffer overflow esetén néha egy-egy hangmintát el kellene dobni - aligha hallatszik ez meg -, buffer underflow esetén pedig egy-egy extra hangmintát be kell szúrni - célszerűen az utolsót megismételni. Vagy valamilyen metóduson keresztül biztosítani a szinkront. Hiszen máris nem olyan merev a lejátszás, ha az időzítést a hangkártya adja, a hálózatra meg nem forszírozva mennének az adó oldalon a csomagok, hanem akkor, amikor a vevő bufferében már csak kevés hanganyag van.
Mindegy is, a szösszenetem lényege, hogy noha működésre bírható, ugyanakkor egyelőre bugzik a PulseAudio. Továbbra is tartom magam ahhoz a megfigyeléshez, hogy ha valamiért úgy jönnek össze a fázisviszonyok, hogy a PA sok futásidőt visz, akkor nagyon vacak, recseg-ropog a hang, ha viszont kevés futásidőt emészt fel, jól működik. Fura módon erős gépen a Skype nagyon sok futásidőt visz, de olyankor a PulseAudio is. Szokott is ropogni, akadozni a hang.
Vágyni és tudni nem ugyanaz. Nem tudom hogy kell. Amúgy a DNS régóta ennyi. Egyébbként a következő konfigurációm van: T mobiel net => PC (suse 11.2) ==UTP crossover==> laptop (vista). Tudom, hogy kellene egy router, az UTP kábel viszont sokkal olcsóbb (3G route 30e Ft). A net nem megy át a vistás géphez. Ha leíród a szerveres megoldást, légyszives ezt vedd figyelembe, hátha megoldódik ez is.
Jó, jó, de nem az igazi. Ez egészen addig működni fog, amíg a szolgáltatód nem változtatja meg a DNS szerverének IP címét. Látom, nem nagyon vágysz indítani egy DNS szervert a gépeden, amely ki is szolgálna téged a loopback device-on...
Azt mondom, hogy amikor azt hiszed, hogy nincs net, akkor is van. Csak névfeloldás nincs. Indíts már egy névszervert a saját gépeden, aztán add meg DNS-nek a 127.0.0.1-et, és jó lesz.