Weekend Prosjekt: Bruke Pulseaudio å dele lyd på tvers av alle Computers



Pulseaudio er en Linux-lyd server som, gjennom abstraksjon lag, lover et mylder av fleksible lydfunksjoner: kombinere flere lyd kortene inn en singel, multi-kanals enhet, endre utskriftsenheter på fly for å kjøre programmer, selv omdirigere input og output mellom maskiner over nettverket. Men dessverre, det er vanligvis brukes bare som en bare-bones drop-in erstatning for eldre, buggier lyd servere som ESD - fordi det er den mest vanlige bruken saken, og fordi Pulseaudio dokumentasjon og verktøy som ikke er fanget opp i samme nivå som det underliggende biblioteket. Full Pulseaudio nirvana innebærer graving i prosjektet i dybden, men du kan i det minste få føttene våt i løpet av helgen, regi og selv multicasting lyd mellom Linux-maskiner på det lokale nettverket.

Første oppsett Pulseaudio er standard lyd server for de fleste GNOME-baserte desktop Linux-distribusjoner, så etter installasjonen, bør GNOME sin Pulseaudio konfigurasjon fungere med de fleste generell bruk som produserer lydutgang. Dessverre er det alltid unntak, oftest blant dedikerte multimedia apps som foretrekker å oppføre seg i henhold til sine egne konfigurasjonsregler fremfor bredere standarder. Listen kan inneholde videospillere som MythTV eller MPlayer, eller telefonmøter verktøy som Skype. Du bør gå videre og installere alle de Pulseaudio pakkene som følger med distribusjonen din - spesielt paprefs, pavucontrol og Pulseaudio-utils. Hvis du får problemer med en bestemt app, start ved å konsultere Pulseaudio wiki Perfect Setup siden som dokumenterer hvordan du konfigurerer oppførselen til en rekke spesifikke applikasjoner. Hvis du fortsatt ikke kan sortere ut søknaden i spørsmålet, er det best å besøke diskusjonsforum for din Linux-distribusjon - alt for ofte, små forskjeller i konfigurasjons detaljer som autospawning nisser og begravet preferanser er de skyldige. KDE-baserte distribusjoner vanligvis bruker Phonon audio layer. Heldigvis, alle Linux lyd lagene gi så mye abstraksjon at det er nesten alltid mulig å kartlegge noen par av dem til hverandre, og ved hjelp av Phonon på toppen av Pulseaudio er intet unntak. Start med å installere alle tilgjengelige Pulseaudio pakker, som beskrevet ovenfor. Du må da åpne Systeminnstillinger /Lyd og velger GStreamer som standard backend. Deretter går du til Innstillinger /Multimedia System Selector /Audio, og velg Pulseaudio. Uansett hvilken desktop du bruker, åpner Pulseaudio Volumkontroll søknaden: fra en kommandolinje, kjøre pavucontrol &. Hva du ser er en app med fem kategorier: avspilling, opptak, Output enheter, inndataenheter og konfigurasjon. Avspilling og opptak viser bare aktivitet fra programmer som kjører, så de er ikke mye bruk når du først kommer i gang. Ta en titt på Ut-enheter og inndataenheter, men - begge disse kategoriene liste opp alle tilgjengelige lyd ruting alternativer som Pulseaudio vet foreløpig om. Nederst finner du et utvalg boks som lar deg vise bare fysiske enheter (dvs. faktiske lydkort) eller andre undergrupper av totalen. Nøkkelen til deling lyd er å sette opp virtuelle enheter
i tillegg til det fysiske. Først vil vi sette opp en virtuell enhet for ekstern tilgang til en bestemt maskin. Når vi får det fungerer, vil vi sette opp en virtuell enhet som multicasts lyd til hver maskin som ønsker å høre det. Aksje og nyt Start Pulseaudio Volumkontroll app (hvis det ikke allerede kjører) på alle
av maskinene du har tenkt å rute audio mellom, og starte Pulseaudio Preferences app med paprefs & også. Dette Preferences vinduet er langt mer enn en enkel tilpasningsverktøy; det aktiverer og deaktiverer flere avanserte funksjoner hvis du vet hvor du skal lete. Det er fire kategorier: nettverkstilgang, nettverksserver, Multicast /RTP, og samtidig utgang. For ruting lyd fra en maskin til en annen, vil vi bruke bare de to første kategoriene. På hver maskin som du ønsker å bruke som en lyd kilde
, må du aktivere den " Gjør oppdagPulseAudio nettverk lyd enheter tilgjengelig lokalt " alternativet i Network Access. Motsatt, på hver maskin som du ønsker å får Hotell og spille av lyd, må du aktivere kategorien Nettverks Server alternativer - primært " Aktiver nettverkstilgang til lokale lyder enheter, " om du bør nok sjekke begge alternativene under for å tillate auto-oppdagelse og ikke krever autentisering. Hvis du er usikker på hva ditt bruksmønster vil bli, er det trygt å aktivere alle alternativene på alle maskinene. På et bedriftsnettverk, kan oppdagelsen og godkjenningsalternativer være en sikkerhetsrisiko (vurdere avlytting), men for testing og hjemme bruker den sidesteps mye feilsøking. Hvis klienten /server æren av disse alternativene virker intuitivt bakover, det er ikke din fantasi. Bare husk at det modeller samme distinkt definisjon av klient og server som X Windows popularisert; det vil etterhvert være mer fornuftig. Med begge alternativene aktivert på testmaskiner, bytte tilbake til vinduet Volumkontroll og se på Ut-enheter og kategorier inndataenheter. Du bør se nye oppføringer i hver, som representerer lydkort oppdaget av Pulseaudio på de andre maskinene. Hver vil være merket med en mindre enn brukervennlig navn sammensatt av den opprinnelige maskinens hardware enhetsnavn (for eksempel IDE1712 [Envy24] PCI Multi-Channel I /O Controller Digital Surround 4.0 (IEC958) etterfulgt av " på someusername @ somehostname ". hvor brukernavn er pålogget bruker og vertsnavnet er at av den eksterne maskinen med mindre du har flere lydkort av samme type på datamaskinene, vertsnavn er trolig nok til å fortelle deg hvilken virtuell enhet er som The. oppsett virtuell enhet er nå ferdig, men for å faktisk rute lyd, må du starte en lydavspilling. Starte et lydprogram (for eksempel Banshee, VLC, eller Amarok) på en maskin, og deretter bytte til kategorien Avspilling på at maskinens Volume . kontroll Spille applikasjonen vil være på bunnen av listen, til høyre for navnet vil du se et utvalg kontroll som viser alle de kjente lydenheter - og den lokale maskinvareenhet vil være den som valgte Bare klikk på. knappen og velg lydkortet på en annen maskin for å rute lyden der i stedet. Bortsett fra å ha en dypt feilkonfigurert lyd server til å begynne med (for eksempel en som ikke kan spille av lyd lokalt i det hele tatt), den eneste betydelige problemer du kan støte på er hvis Pulseaudio ikke automatisk oppdage eksterne maskiner som det skal. I mine tester, når dette skjer, er den raskeste løsning for å deaktivere og deretter reaktivere Network Access kategorien alternativ på lydkilden maskinen - dette tvinger en gjenoppdagelse. Du kan også prøve de- og re-aktivere Network Server alternativet på lyden mottar maskinen, men jeg har ikke funnet det som pålitelig en løsning. Og for at du tror at du må hoppe gjennom alle disse hoops hver gang, prøve å avslutte den lydavspilling søknaden. Nå starter den og begynne å spille igjen. Du skal høre det på mottakermaskinen automatisk - Pulseaudio husker hvordan lydstrømmen ble rutet. Dette alternativet er en god måte å dele lyd mellom to maskiner som er fysisk atskilt. For eksempel, vil du legge merke til at " System høres " er et børsnotert søknad under avspilling. Du kan rute systemlyder fra langt borte maskin til skrivebordet ditt og være sikker på at du vil høre noen plutselige varselklokkene. Du kan også slå på skrivebordet skjermleser for talen og har den lese meldinger høyt. På den annen side, kan du ikke bruke denne metoden for å dele lyd mellom tre eller flere maskiner, så du kan ikke starte en podcast på en datamaskin og rør det over hele huset og ut til garasjen. For å gjøre det, kan du slippe å kommandolinjen og hånd-opprette en stabel av virtuelle enheter den gammeldagse måten, men det er mye enklere å bruke multicast. Multicast Pulseaudio er multicast evner bruke Real-time Transport Protocol (RTP) også brukes til å levere medie nyttelast av SIP og andre VoIP protokoller. På et lokalt nettverk segment, bør du ikke ha noen problemer med å slå den på og mottar strømmen, men hvis du krysser en brannmur eller en ruter, må du kanskje sjekke at RTP er tillatelse til å krysse over uten filtrering. Multicast /RTP kategorien Pulseaudio Preferences innehar alle de nødvendige alternativene. De viktigste valgene er intuitive: " Aktiver Multicast /RTP mottaker " og " Aktiver Multicast /RTP avsender. " Enhver lydkilde maskinen må være aktivert som avsender, og noen mottakermaskinen som mottaker; som før det er trygt å aktivere både på en maskin. Hva er ikke fullt så klart er alternativene under " Aktiver Multicast /RTP avsender " - Du må velge mellom tre tilsynelatende urelaterte alternativer: " Send lyd fra lokal mikrofon, " " Send lyd fra lokale høyttalere, " og " Opprett separat lydenhet for Multicast /RTP. " Heldigvis for generell bruk, kan du bare velge det siste alternativet og glemme det. De to første er nyttig for å sette opp en alltid-på kringkastet strøm som er nok ikke hva du er interessert i Sist men ikke minst er det ". Loop tilbake lyd til lokal høyttalere " boksen; sjekke dette for å holde noen lyd til å velge å multicast spille på opprinnelses datamaskinen også. Med disse alternativene er aktivert, kan du gå til Pulseaudio Volumkontroll søknaden og sette avspillings for noen lyd søknad til " RTP Multicast. &Quot; All lyd produsert av applikasjonen vil umiddelbart begynne å spille på mottaker maskiner. I praksis kan kvaliteten på lyd ved hjelp av RTP være en kilde til frustrasjon. Den forbruker båndbredde, selv når multicasting stillhet, og hvis du har trafikk på nettverket kan du få hakkete lyd på grunn av forkastede pakker. Det er mindre sannsynlig til å skje med en direkte Pulseaudio rute som i forrige avsnitt, fordi RTP bruker UDP, og er laget for å droppe pakker hvis de kommer ". For sent " På toppen av det, vil du trenger mer CPU kraft samtidig multicast en RTP strøm og loop lyden til de lokale høyttalerne. På den annen side, denne løsningen bruker sikkert mindre båndbredde enn å kjøre flere forskjellige lyd ruter, så det er det beste alternativet for allment distribusjon av lyd. Hvis du har gjort det så langt, lurer du kanskje på om " Samtidig Output " fanen i Pulseaudio Preferences. Denne funksjonen, når aktivert, oppretter en virtuell enhet som representerer alle de maskinvare
enheter på den lokale maskinen. Med andre ord, hvis du har bare en enkelt lydkort, legger det ingen ekstra funksjoner og ytterligere forlenger listen over Output enheter. Men du kan bruke den til å sende lyden som systemvarsler til flere lydkort - svært nyttig hvis du bruker ett kort for høyttalere og en annen for en VoIP headset, for eksempel. Videre arbeid: Doing It All Hard Way volumkontrollen og preferanser verktøy krever at du marsjere gjennom ganske en rekke tiltak for å bare flytte en eneste lyd stream, men den gode nyheten er at de fungerer. Den forrige generasjonen av Pulseaudio grafiske verktøyene ikke engang gjøre det (Pulseaudio Device Manager og selskap). Men grunnen til at de grafiske verktøyene fungerer og fortsetter å arbeide på flere programinnstillinger er at Pulseaudio hemmelighet bemerker konfigurasjons endringene du gjør og laster dem. Ta en titt på .pulse katalogen i Hjem-mappen og " system /Pulseaudio " delen av GConf hvis du bruker GNOME. Hvis du nettopp funnet den grafiske grensesnitt for brukervennlig, bør du vurdere å grave i til dokumentasjonen Pulseaudio og finne ut hvordan du kan gjenskape den samme oppførselen i standard tekstkonfigurasjonsfiler. Cowboy måten er å redigere /etc/pulse/system.pa fil på hver maskin, og start Pulseaudio fra /etc/init.d. Men ikke gjør det bare for å skryte. Gjør det fordi du kan også bygge mer komplekse virtuelle enheter når du forstår syntaksen, for eksempel en enhet som gir " simultan utgang " til både en fysisk lydkort og Selge en RTP multicast-strøm. Betyr ikke det ... høres interessant?