Puncte:0

Browser fără cap: ieșire audio către Pulseaudio

drapel cg

Încerc să rulez un browser fără cap pe o instanță EC2/Ubuntu 20.04 și apoi să scot fluxul audio rezultat la receptorul Pulseaudio implicit (care este apoi preluat de DarkIce/Icecast). Vreau doar să rulez o singură pagină web (a mea, găzduită pe un alt server, care necesită jQuery și Howler.js), iar browserul/fluxul rezultat trebuie să rămână deschis 24/7.

Am reușit să obțin un fișier audio pe instanță pentru a fi redat pe Icecast (folosind ogg123), așa că ogg123>Pulseaudio>Darkice>Icecast2 funcționează. Am creat o chiuvetă implicită ca mai jos

pactl load-module module-null-sink sink_name=radio
pacmd update-sink-proplist radio device.description=radio
pacmd set-default-sink radio

și a făcut Pulseaudio driverul implicit creând ~/.asoundrc pentru a include

pcm.puls implicit
ctl.puls implicit

Nu sunt sigur care este abordarea corectă pentru a face browserul să se joace frumos. Am încercat (atât google-chome, cât și chromium) să indice direct atât un fișier audio, cât și o pagină cu js care redă audio (cu intenția de a o rula în cele din urmă în Screen), ambele par să găsească conținutul, nici o abordare. redă orice sunet. De exemplu,

 google-chrome-stable --headless --disable-gpu --autoplay-policy=no-user-gesture-required --user-data-dir=/home/ubuntu/chromeUser --disable-accelerated-video-decode - -disable-software-rasterizer --enable-logging=stderr --v=1 https://domain.name/stream.html 

generează următoarele

[0608/102421.257217:INFO:cpu_info.cc(53)] Număr disponibil de nuclee: 1
[0608/102421.258656:INFO:cpu_info.cc(53)] Număr disponibil de nuclee: 1
[0608/102421.258861:VERBOSE1:zygote_main_linux.cc(217)] ZygoteMain: inițializarea 0 delegați furk
[0608/102421.259318:VERBOSE1:zygote_main_linux.cc(217)] ZygoteMain: inițializarea 0 delegați fork
[0608/102421.271947:VERBOSE1:webrtc_internals.cc(118)] Nu s-a putut obține directorul de descărcare.
[0608/102421.280120:VERBOSE1:breakpad_linux.cc(2071)] Descarcarea fără blocare a browserului este activată pentru: proces-gpu
[0608/102421.283276:EROARE:gpu_init.cc(440)] Transferul nu este acceptat, GL este dezactivat
[0608/102421.286107:VERBOSE1:breakpad_linux.cc(2071)] Descarcarea fără blocare a browserului este activată pentru: redare
[0608/102421.288099:VERBOSE1:sandbox_linux.cc(69)] Sandbox seccomp-bpf activat pentru tipul de proces: proces-gpu.
[0608/102421.293815:VERBOSE1:sandbox_linux.cc(69)] Sandbox seccomp-bpf activat pentru tipul de proces: redare.
[0608/102421.303930:VERBOSE1:device_data_manager_x11.cc(216)] X Extensia de intrare nu este disponibilă
[0608/102421.356750:VERBOSE1:configured_proxy_resolution_service.cc(852)] Suportul PAC a fost dezactivat deoarece nu există nicio implementare a sistemului
[0608/102421.357514:VERBOSE1:configured_proxy_resolution_service.cc(852)] Suportul PAC este dezactivat deoarece nu există nicio implementare a sistemului
[0608/102421.359494:VERBOSE1:network_delegate.cc(32)] NetworkDelegate::NotifyBeforeURLRequest: https://domain.name/stream.html
[0608/102421.411474:VERBOSE1:document.cc(3974)] Document::DispatchUnloadEvents() URL = <null>
[0608/102421.411727:VERBOSE1:document.cc(4054)] De fapt, trimiterea unui UnloadEvent: URL = <null>
[0608/102421.421675:VERBOSE1:network_delegate.cc(32)] NetworkDelegate::NotifyBeforeURLRequest: /path/to/jquery.min.js
[0608/102421.424968:VERBOSE1:network_delegate.cc(32)] NetworkDelegate::NotifyBeforeURLRequest: /path/to/jquery-ui.min.js
[0608/102421.429480:VERBOSE1:network_delegate.cc(32)] NetworkDelegate::NotifyBeforeURLRequest: /path/to/howler.min.js

Este aceasta abordarea potrivită pentru ca acest lucru să funcționeze (și, dacă da, de ce nu?), sau ar trebui să folosesc Selenium/Puppeteer/altceva?

Mulțumesc, Chris

[oparte: am încercat o număr de lucruri pentru a încerca să eliminați eroarea „Passthrough nu este acceptată, GL este swiftshader”, fără succes, deși nu pare să împiedice browserul să acceseze pagina]

Puncte:1
drapel cg

Am reușit să lucrez asta rulând Puppeteer, mai degrabă decât încercând să disput Chromium din linia de comandă. am folosit acest raspuns pentru a (sperăm) să păstrați Puppeteer deschis cu următoarele argumente pentru ca sunetul să pornească automat.

 this.browser = await puppeteer.launch({
     fără cap: adevărat,
     ignoreDefaultArgs: [
         „--mute-audio”,
     ],
     argumente: [
         „--autoplay-policy=no-user-gesture-required”,
     ],
  });

După configurarea receptorului implicit în PulseAudio și adăugarea ~/.ascoundrc (ca mai sus), totul funcționează (sunetul colector preluat de DarkIce > IceCast > difuzare). Probabil voi folosi pm2 să supravegheze Puppeteer, dar deocamdată este o soluție funcțională.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.