Portál AbcLinuxu, 7. května 2025 09:55
pcm.!default { type asym playback.pcm "LoopAndReal" ## capture.pcm "looprec" ## capture.pcm "hw:0,0" capture.pcm "xonar-in" } ctl.!default { type hw card Device } pcm.xonar-in { type dsnoop ipc_key 1026 ipc_key_add_uid yes slave { pcm "hw:1,0" # period_size 512 # buffer_size 2048 } } pcm.onboard { type hw card Intel } ctl.onboard { type hw card Intel } pcm.xonar-usb { type hw card Device } ctl.xonar-usb { type hw card Device } pcm.looprec { type hw card "Loopback" device 1 subdevice 0 } pcm.LoopAndReal { type plug slave.pcm mdev route_policy "duplicate" } pcm.mono { type route slave.pcm LoopAndReal slave.channels 2 ttable.0.0 0.5 ttable.0.1 0.5 ttable.1.0 0.5 ttable.1.1 0.5 } pcm.mdev { type multi slaves.a.pcm pcm.MixReale slaves.a.channels 2 slaves.b.pcm pcm.MixLoopback slaves.b.channels 2 bindings.0.slave a bindings.0.channel 0 bindings.1.slave a bindings.1.channel 1 bindings.2.slave b bindings.2.channel 0 bindings.3.slave b bindings.3.channel 1 } pcm.MixReale { type dmix ipc_key 1027 slave { pcm "hw:1,0" period_size 512 buffer_size 2048 } } pcm.MixLoopback { type dmix ipc_key 1025 slave { pcm "hw:Loopback,0,0" period_size 512 buffer_size 2048 } }Posledních pár dní když ale pustím nějakou muziku nebo film, tak se běhěm 2-3 minut přehrávání postupně zvyšuje vytížení CPU až na 100%. Po chvilce co se procesor peče a video se seká, se to nějak záhadně samo resetne, a zase pomaloučku 2 minuty stoupá až na 100% load. A tak furt dokola. Pokud během přehrávání zmáčknu pauzu, resetne se to taky. Jako hlavní přehrávač používám mpv ale dělají to všecky programy co používají zvuk. Zezačátku jsem zkoušel různě downgradovat alsí balíky což taky nepomáhalo. Nikde žádná chybová hláška.
Postupně jsem se metodou pokus omyl dopídil k tomu, že pokud není v asound.conf natvrdo nastavený period_size a buffer_size tak toto nezlobí. Zato se ale objeví nechutné zpoždění zvuku. Odhadem tak okolo 200 milisekund. Při přehrávání muziky to až tak moc nevadí ale ve hrách je to docela hnus. Taky Mumble se občas zblázní a přehrává zvuk sekaně, když má alsa moc veliký buffer.
Nemůžu přijít na to co se změnilo abych to mohl vrátit do stavu, v jakém to bylo zhruba před týdnem. Snesitelné latence, možnost nahrávat a mixovat loopback s mikrofonem ..a takŘešení dotazu:
period_size 512 buffer_size 2048a latence jsou v pohodě a CPU se nezapíká.
Pokud si uživatel nenastaví ty buffery ručně, tak se použije defaultních
period_size 6000 buffer_size 18000to je šíleně moc a proto ten zvuk hraje opožděně. Jsem si toho předtím nevšiml protože s tak velikým defaultním bufferem se to začalo projevovat až po čtvrthodině souvislého přehrávání.
Takže na vině té zátěže CPU teda není buffer ale může za to ta loopback virtuální zvukovka
Teď ješte přijít na to kde je v tom konfiguráku krpa.Zkoušel jsem například tu externí zvukovku fyzicky odpojit a mixovat ten loopback s interní zvukovkou co je na desce a naopak, tu integrovanou Intelí zvukovku zakázat v biosu a mixovat s loopback s externí. Taky jsem zkusil vrátit defaultní takty na desce (normálně mám nataktováno z 3.0GHz na 3.6GHz). No chová se to furt stejně blbě. Nevypadá to že by na to hardware měl vliv.
Udělal jsem takový pokus:
aplay -vDhw:Loopback,0,0 zvuk.wavna druhém xtermu jsem pustil:
arecord -Dhw:Loopback,1,0 -f s16_le -c 2 -r 44100 | aplay -Dhw:Device,0,0a ono to hrálo v pořádku, žádné zvyšování zátěže CPU ani po půlhodině se nekonalo. Ten loopback bude teda nejspíš v pořádku.
Tím se zůžil počet podezřelých na dva. Buď něco hnije v tom alsím směšování mdev multi, nebo mám v tom konfiguráku nejaký konstrukt který je dneska už "obsolete", nebo nevím ...
Nakonec jsem zbaběle vyměknul a nainstaloval pulseaudio. Jsem k tomu měl naučenou nedůvěru z doby tak 10-15 roků zpátky, kdy na to lidi nadávali, furt s tím byl nějaký problém a vůbec jsem to vnímal jako další zbytečný mezikus v cestě audiosignálu. Překvapivě ale dneska pulse funguje. Zátěž CPU zmizela, latence jsou taky v pohodě. Akorát to má takové divné krkolomné názvy zvukovek.
ffmpeg -f pulse -i alsa_output.usb-C-Media_Electronics_Inc._USB_Advanced_Audio_Device-00.analog-stereo.monitor ....a pro mikrofon:
ffmpeg -f pulse -i alsa_input.usb-C-Media_Electronics_Inc._USB_Advanced_Audio_Device-00.analog-stereo .....Ale s tím se dá žít. Takže z uživatelského pohledu je problém vyřešen! Ale stejně by mě zajímalo co se podělalo.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.