Weekend Prosjekt: Post Fra Skype-samtaler og andre applikasjoner på Linux



Alle liker bekvemmeligheten av Skype og andre voice-over-IP (VoIP) applikasjoner, men de offisielle verktøy fortsatt tendens til å fokusere på å gjøre enkle en-til-en-samtaler. En av de vanligste begrensningene nevnt er hvor vanskelig det er å ta opp digital audio stream på datamaskinen. Podkastere, lagene holder konferansesamtaler, og journalister gjør intervjuer (blant annet) alle trenger å ta opp samtaler for senere bruk. Det er noen få frittstående verktøy laget for å jobbe med spesifikke applikasjoner, men med bare litt ekstra tid kan du sette opp et system som kan ta opp lyd fra alle programmer – Skype, klienter, gruppechat verktøy, og mange flere.

Single-App Recording



ulike Session Initiation Protocol (SIP)

Hvis du bare bruke den populære – men lukket og proprietær – Skype service, da har du en plug-and-play løsning for å ringe opptak via åpen kildekode Skype Call Recorder (SCR) søknad. SCR kan ta opp samtaler til WAV, MP3, eller Vorbis format, og har flere fine funksjoner, for eksempel betinget auto-opptak, slik at du kan fortelle til alltid ta opp samtaler med bestemte andre brukere. SCR støtter de nyeste versjonene av Skype utgitt for Linux, 2.1-serien, men det er avhengig av Skypes proprietære APIer for sin funksjonalitet, så det er alltid mulighet for at en oppdatering til Skype vil gjengi SCR-fungerende inntil en løsning er funnet.

Blant de ulike audio chat programmer for Linux, to har innebygd støtte for opptak av samtaler: lukket kildekode SIP klient Gizmo5, og åpen kildekode SFLphone, som kan bruke både SIP protokollstakken eller IAX2 stabelen brukt av Asterisk. De andre, SIP Communicator, Mumble, QuteCom, glitre, KPhone, Ekiga, og Linphone, inkluderer ingen opptak støtte på dette tidspunktet.

Asterisk telefoniserver plattformen støtter samtaleopptaket gjennom sin Monitor kommando. Selv Monitor er utformet for å lytte til en kanal på serversiden (og dermed uten menneskelig inngripen), helt siden versjon 1.2, har det vært mulig å konfigurere Asterisk å aktivere per samtale opptak også. Det finnes noen verktøy for å bringe denne funksjonen til stasjonære PC-telefoner, som for eksempel Astguiclient, men i det store og Asterisk kall-opptaksfunksjonen er likevel ment å bli administrert av Asterisk administrator.

Hvis du ikke bruker noen av de lett-innspilte klient apps, eller hvis du ønsker å kunne bytte mellom dem og fremdeles være i stand til å ta opp samtaler, vil du trenger for å sette opp en ekstern opptaksløsning.

Ring Opptak Basics, og hvorfor de Vil ikke jobbe

Når du går utenfor de app-spesifikke verktøy for innspilling, bør det være åpenbart at det spiller ingen rolle om et program bruker, SIP, H.323, eller IAX – spiller inn samtalen er et spørsmål om å hanke inn den audio layer og lagre en kopi av den på disk. Det beste stedet å gjøre det på er ved lyden serveren

De fleste store stasjonære Linux-distribusjoner i dag bruker Pulseaudio som en god server &mdash.; inkludert Debian, Fedora, opensuse, Mandriva, og Ubuntu. Pulseaudio kjerne gjør for en god samtale opptak point-of-avskjæring av to grunner. Først fordi det sitter under flere forskjellige kompatibilitetsbiblioteker; applikasjoner som kaller libalsa APIer, KDEs kunst, og til og med GNOME esound alle bli rutet til Pulseaudio på en ensartet måte, akkurat som nyere applikasjoner skrevet direkte for Pulseaudio APIer. For det andre har Pulseaudio et sterkt system av " virtuell " input og output enheter som gjør det mulig å kjede lydstrømmer sammen og re-rute dem helt, uten at du trenger eksplisitt støtte fra programmene selv.

Selvfølgelig, det betyr ikke at Pulseaudio dokumentasjon eller verktøy gjør det helt klart hvordan du gjør noe av dette, noe som ofte er problemet at nye brukere opplever. For å få taket på ting, vil vi se på hvordan å spille inn en singel lydstrøm fra ett program, og deretter håndtere kompleksiteten i toveis talekommunikasjon.

Begynn med å installere den Pulseaudio Volumkontroll søknad, pavucontrol . Selv om distroer ovenfor bruk Pulseaudio, de fleste ikke
installere denne pakken som standard, og de store skrivebordsmiljøer har hver sin enkle " volumkontroll " verktøy. Å være sløv, det er litt av navngiving forvirring her; disse desktop volumkontroll verktøy gjør litt mer enn å la deg flytte en glidebryter fra 0 til 100 på din standard utgang. I kontrast, bør pavucontrol trolig bli kalt noe mer beskrivende som Pulseaudio Router, fordi det eksponerer langt mer av Pulseaudio interne funksjonalitet.

Launch pavucontrol fra kommandolinjen, og starte Skype eller andre foretrukne stemmen app. Velg " Vis Alle Streams " i kategorien pavucontrol avspillings. Hva vil du se en liste over alle programmene som er koblet til Pulseaudio å åpne en avspillingskanal. Tilsvarende viser kategorien Innspilling alle programmer som har koblet til Pulseaudio forventet lydinngang.

Når du ringer med stemmen din app, vil du se programnavnet vises nederst i kategorien pavucontrol avspilling med en merke som " Skype: Output på " ... Ved siden av en knapp. Ved å klikke på knappen åpner opp en rullegardinliste som viser alle Pulseaudio konfigurerte " vasker " – både de faktiske lydkort og noen virtuelle enheter. I øyeblikket er det sannsynligvis bare lister Intern Audio Analog Surround 4.0
eller noe sånt, som representerer standard utgang vasken. The Recording kategorien vil også vise stemmen app, merket " Skype: Innspill fra " ... Etterfulgt av navnet på standard lydinngang enhet, forhåpentligvis mikrofonen, som også vil være merket med et generisk navn som Intern Audio Analog Stereo
fra en lignende nedtrekkslisten for å kjøre Pulseaudio ". kilder "

Mens stemmen programmet er på samtalen, åpne opp ethvert lydopptak program (Krecord, GNOME Sound Recorder, Audacity, etc.), og starte innspillingen. I pavucontrol Recording fanen, vil opptaket app vises i listen. Her er der det blir vanskelig. Uansett hvilken kilde du velger fra nedtrekkslisten ved siden av opptaket app er hva innspillingen app vil fange. For å ta opp lyden blir produsert av stemmen app, velger " Monitor av Intern Audio Analog Surround 4.0
" eller hvilken vasken ble oppført i kategorien Avspilling (dette " Monitor " er en virtuell kilde som Pulseaudio oppretter automatisk basert på den virkelige vasken). For å ta opp en kopi av stemmen din fra din egen mikrofon, velger du Intern Audio Analog Stereo
eller hva stemmen app er også koblet til.

Problemet er at lydstrømmer er separate, og du kan bare koble opptaket app til det ene eller det andre, enten fange din slutten av samtalen eller den andre partens. Du sikkert kunne fyre opp to opptaks apps samtidig, og koble den ene til den Monitor virtuelle kilde og en til inngangsenheten, men du vil senere ha to separate spor, og vil bruke mye tid på å prøve å synkronisere og bland dem i en lyd-editor .

Calling All Ninjas: Full-Duplex opptak

Den virkelige løsningen for å fange begge sider av samtalen er å konstruere en virtuell Pulseaudio enhet som kobles til dem begge. Dessverre, Pulseaudio ikke har en innebygd kommando for å slå sammen en vask og en kilde eller to vasker i én virtuell enhet, slik at vi faktisk trenger tre stykker: en " null vask " og to " loopback " enheter

". null vask " er som et sett av virtuelle høyttalere, og hver " loopback " er en virtuell kilde-til-synke-kontakt. Vi kan koble loopbacks til stemmen app reelle lydkilde og vask, egentlig kloning en ekstra kopi av hver enkelt, og rute dem begge inn i null vasken. Så registrerer vi null vasken, fange den sammenslåtte lyd i en enkelt fil.

Lag null vask og gi den et vennlig navn fra en terminal med pactl load-modul modul-null-vask sink_name = mywiretap, deretter lage to loopback enheter med pactl load-modul modulloopback; pactl load-modul modulloopback. Loopbacks har ikke navn, men som du vil se at ikke virkelig påvirke ting.

Nå kan du gå til kategorien Avspilling i pavucontrol. Pulseaudio vil ha festet hver loopback til standardenheten; koble dem begge til " Null Output " synke fra rullegardinmenyen i stedet – dette er null vasken opprettet tidligere, til tross for liten forskjell i terminologi.

Begge loopbacks vil også vises i opptak fanen, der igjen Pulseaudio vil ha festet dem til standardenhet. I dette tilfellet, hva vi ønsker å gjøre er å koble en av dem til kilden mikrofon ( Intern Audio Analog Stereo
i eksempelet ovenfor), og en av dem til " Monitor " kilde for standard audio vask (" Monitor av Intern Audio Analog Surround 4.0
" i eksempelet). Det spiller ingen rolle hvilken du koble til hvilken kilde, fordi i kategorien Avspilling begge rutes til Null Output uansett.

Til slutt, bytte tilbake til kategorien Innspilling. Starte innspillingen app, og når det vises i listen, koble den til " Monitor av Null Output " kilde i nedtrekkslisten. Voila. Både stemmen og de andre innringere rutes til stemmen app og " klonet " av en loopback enhet, og de dupliserte lydstrømmer er fanget på null vasken

Calling All Dobbelt Ninjas. CLI Approach

Du lurer kanskje på hvorfor det var viktig å gi den freshly- skapte null vask en minneverdig navn, når det ikke vises i pavucontrol sin GUI-grensesnitt. Svaret er at mens pavucontrol er et flott verktøy for å sette opp systemet første gang, da de særegenheter lydkortet kan bety det tar et par prøver å finne de riktige valgene i rullegardinmenyene, for å gjøre oppsettet ditt vedvare på reboots du må gjenskape den i Pulseaudio konfigurasjonsfil.

Kjør først pacmd info fra en skallet spørsmål. Dette vil skrive ut det grunnleggende gjeldende konfigurasjon. Du trenger vil referere til det i bare et minutt.

Neste, fra et annet vindu, lage en personlig kopi av hele systemet Pulseaudio konfigurasjonsfil ved å kjøre cp /etc/pulse/default.pa ~ /.pulse /default.pa, deretter åpne den i din favoritt editor. På slutten av filen, vil vi legge til kommandoer som tilsvarer skritt vi tok tidligere, inkludert CLI kommandoer utstedt pactl og alternativene satt i pavucontrol. Din strofe vil se omtrent slik ut:

# satt opp null vask og loopbacks å spille inn taleanrop load-modul modul-null-vask sink_name = mywiretap load-modul modulloopback source = alsa_output.pci-0000_00_06. 1.analog-surround-40.monitor vask = mywiretap load-modul modulloopback source = alsa_input.pci-0000_00_06.1.analog-stereo vask = mywiretap

Som du kan se, for å spesifisere disse kommandoene i default.pa, må du levere kilde og vask navn som argumenter til loopback modul-lasting linjer. Vi gjorde ikke begynne å bruke disse argumentene på kommandolinjen fordi de lange kilde betegnelser er ikke lett å gjette. I stedet fikk vi til konfigurasjonen vi trengte hjelp av GUI først, så vi kjørte pacmd info. Utgangen av at info kommandoen lister den eksakte kilden navne argumenter vi trenger, så alt vi trenger å gjøre er å kopiere og lime dem inn i filen.

Hva er ekstra fint om dette oppsettet er at Pulseaudio lagrer søknad
tilkoblingsdetaljer automatisk, slik at neste gang du logger inn, du trenger ikke å gjenta prosessen med å koble innspillingen app til Null Output Monitor – bare fyre opp lydopptaker, telefon dine sammensvorne på Skype, og begynne å plotte neste Watergate cover-up med uvøren forlate. Ja, det ville være fint om Pulseaudio husket også hele null-vask og loopback prosessen, snarere enn å kreve oss for å lagre det i default.pa, men det finnes ikke noe slikt som en gratis lunsj

Extra Credit.: Pulse Feilsøking, Video

Den ovennevnte løsning vil arbeide for et program på en fungerende Pulseaudio system – Skype, Google Chat, Ekiga, eller noen av flere andre. Men det sier seg selv at hvis stemmen din app ikke fungerer som den skal, går gjennom null-vask /loopback oppsett trinnene vil ikke gjøre deg i stand til å ta opp fra den. Det beste stedet å få hjelp hvis du ikke kan feilsøke hvorfor stemmen din app ikke er plukke opp stemmen din eller spille av lyd på riktig måte er sannsynligvis en distribusjonsspesifikke diskusjonsforum. I min erfaring, kan selv om Skype og flere andre tjenester har Linux-spesifikke hjelpe fora på sine egne nettsider, er andelen av personer med feilsøking erfaring langt høyere på distro fora.

At spesielt gjelder når du av og til snuble over en stemme app som ikke er satt opp til å bruke Pulseaudio som standard. Flere og flere er, Skype inkludert siden 2009, men det er mange av VoIP-programmer med overlappende funksjonssettene. For eksempel bare to, glitre og SFLphone, støtter sikker ZRTP ende-til-ende kryptering protokoll utviklet av skaperen av PGP. Hvis din distro ikke riktig konfigurere disse apps ut av boksen, kan du møte ekstra tid å få dem til å jobbe med Pulseaudio. Start med å gjøre det; ikke komplisere saker helt fra starten ved å sette opp null-vask /loopback konfigurasjon.

Til slutt, hvis du fikk din opptaksløsning jobber som en drøm, du kan også ha fått håp at innspillingen Videodelen av et anrop er like enkelt. Dessverre er det ikke. Så langt er det ikke en enkel, fungerer-overalt måte å fange innkommende og utgående videoinnhold under en videosamtale. Eller hvis det er, det meste av verden ikke vet om det. Hvis du har funnet den løsningen, dele den med alle andre, slik at de vil alle ha noe å se frem til neste helg. Anmeldelser