Gå til innhold

Esound hakker


Anbefalte innlegg

Hei!

 

Kjører esd på maskinen som har lydkort slik:

 

# esd -tcp -public

 

Når jeg sender lyd til denne maskinen med denne kommandoen:

 

esddsp -s 192.168.1.3:16001 mplayer -ao esd http://mms-live.online.no/P5_Oslo

 

Så hakker lyden. Bra kvalitet osv, men det hakker.

 

 

Er det mulig å stille bufferen på maskinen som har lydkort?

Streamingen funker, så det er ikke den som hakker...

 

Takk for hjelpen!

Lenke til kommentar
Videoannonse
Annonse

Jo, men det funker.. Pulsaudio gir meg bare denne feilmeldingen når jeg starter det:

 

W: main.c: Unable to contact D-Bus: org.freedesktop.DBus.Error.Spawn.ExecFailed: /bin/dbus-launch terminated abnormally without any error message

Welcome to PulseAudio! Use "help" for usage information.

 

Dessuten vet jeg ikke hvordan jeg setter opp PA på server og klient, og ble ikke klok på det jeg fant når jeg googlet.. Var ikke noen gode howtos ute...

Så hvis det bare er hakkingen som er issuet, så tenker jeg at jeg bare må finne ut hvordan det fikses, så er jeg der :)

Lenke til kommentar

Jo, men det funker.. Pulsaudio gir meg bare denne feilmeldingen når jeg starter det:

 

W: main.c: Unable to contact D-Bus: org.freedesktop.DBus.Error.Spawn.ExecFailed: /bin/dbus-launch terminated abnormally without any error message

Welcome to PulseAudio! Use "help" for usage information.

 

Dessuten vet jeg ikke hvordan jeg setter opp PA på server og klient, og ble ikke klok på det jeg fant når jeg googlet.. Var ikke noen gode howtos ute...

Så hvis det bare er hakkingen som er issuet, så tenker jeg at jeg bare må finne ut hvordan det fikses, så er jeg der :)

 

esound er ganske broken. Er designet for old-school OSSv3, og tydeligvis ikke ALSA/OSSv4. Får det ikke til å funke skikkelig selv lokalt :\ Får knitring som du nevner, og av og til kræsj i MPlayer. Vel, hvis du har lyst å prøve har jeg utviklet en erstatning (fortsatt i utvikling) for esound.

 

http://github.com/Themaister/RSound

 

Og har patch til mplayer her.

http://github.com/Themaister/RSound/raw/master/patches/mplayer-rsound.patch

 

Da kan du kjøre rsoundserv på serveren og mplayer -ao rsound:host=<ip> f.eks.

Hvilken distro bruker du btw?

 

EDIT: Fra TODO i ESound source:

 

TODO
====

- Find a willing victim to maintain Esound.

- Write an Esound replacement.

Endret av TheMaister
Lenke til kommentar

Humm ... Ja, har ikke laget noen ferdige binære pakker, men det bør ikke være spesielt vanskelig å kompilere hvis du har gjort det før. Først må du kompilere rsound på serveren.

 

Du trenger både på servern og klient:

git

autoconf

automake

alsa-lib (trenger sikkert devel-pakker for sånt i Suse.)

 

git clone git://github.com/Themaister/RSound.git
cd RSound
./autogen.sh
./configure --prefix=/usr
make
sudo make install

 

Vil tro det kanskje er lettere å installere alsa-pluginen på klienten, så slipper du å rekompilere hele mplayer.

 

git clone git://github.com/Themaister/alsa-plugins-rsound.git
cd alsa-plugins-rsound
./gitcompile
sudo make install

 

Etter dette kan du i .asoundrc eller /etc/asound.conf sette opp en virtuell device for

ALSA slik

 

pcm.rsound
{
  type rsound
  host "ip her"
}

Så kan du kjøre f.eks mplayer -ao alsa:device=rsound i mplayer :)

Endret av TheMaister
Lenke til kommentar

Høres bra ut.

 

Hvordan fungerer dette, teknisk sett?

Jeg tenker på krav til båndbredde osv. Hvordan har du testet det?

 

Slik jeg ser det, virker det som om man nå kan sende lyd fra hvilket som helst program, siden rsound er et "lydkort"?

 

Hvor angir jeg hvilken maskin jeg skal sende lyden til, og hvordan styres rettigheter her?

Rsound må da startes som en deamon eller noe?

Lenke til kommentar

Høres bra ut.

 

Hvordan fungerer dette, teknisk sett?

Jeg tenker på krav til båndbredde osv. Hvordan har du testet det?

 

Slik jeg ser det, virker det som om man nå kan sende lyd fra hvilket som helst program, siden rsound er et "lydkort"?

 

Hvor angir jeg hvilken maskin jeg skal sende lyden til, og hvordan styres rettigheter her?

Rsound må da startes som en deamon eller noe?

 

Rent teknisk er prinsippet veldig enkelt, men har vært ganske mye prøving og feiling. Klienten åpner tilkobling til serveren, mottar grunnleggende informasjon fra serveren, og sender rå PCM-data til serveren i en pakkestørrelse som er bestemt av serveren, som så blir videresendt til lydkortet på serveren. Rsound blir en slags cross-platform proxy. Dette er det samme approach som esd og pulse gjør vil jeg tro.

 

Båndbredden er den som brukes på PCM-lyden. For vanlig musikk er dette omlag 180kB/s (1.5mbit). For 5.1-surround blir dette noe som 600kB/s (~5mbit). På LAN er dette ingenting. Jeg har brukt rsound over internett også, og det funker ganske ok hvis man sitter på god nok upload. Det er ingen "ekstra" data som sendes over nettverket utenom ren lyd, og kanskje TCP/IP-headere, men det er vel det. Dette har jeg også verifisert med ymse programvare.

 

Med ALSA-pluginen kan du i teorien bruke alle ALSA-kompatible programmer med rsound, men ikke alle typer programmer er egnet hvis programmet gjør noe spesielt avansert, eller har strenge krav til latency. For eksempel er det sikkert ikke spesielt morsomt å spille skytespill der lydene henger 1-2 sekunder etter. :) Jeg har prøvd å få til "low-latency", men da ender jeg fort opp med problemer som ESD, og delvis PulseAudio har.

 

Har brukt rsound med f.eks Spotify i Wine, XBMC, MPlayer, MPD, Flash-video, og en rekke musikkspillere. Har opplevd problemer med programmer som VLC.

 

Når det kommer til rettigheter har jeg valgt å droppe dette konseptet. Alle har tilgang til rsoundserv, så lenge en brannmur ikke er satt opp. Å sette opp permissions føler jeg er et unødvendig hinder for å bruke programvaren. Så lenge du ikke kjører rsoundserv som root tror det ikke det er noen sikkerhetshull, men jeg er ikke noen ekspert på dette området akkurat.

 

 

For å bruke rsound over LAN gjør du mye av det samme som du ville ha gjort med esd.

På serveren starter du

rsoundserv

Da kjører rsoundserv i bakgrunnen, og er klar til å ta imot lyd :D

rsoundserv prøver å velge den første og beste lyddriveren tilgjengelig, og bør funke hvis du bruker ALSA, da "default" gjerne er dmix, eller noe sånt. Bruker du OSS kan du bruke rsoundserv --backend oss. Vil du ikke kjøre rsoundserv som en bakgrunnsservice kan du bruke --no-daemon.

 

På klientsiden setter du opp en virtuell ALSA-device i ~/.asoundrc eller /etc/asound.conf som vist tidligere, f.eks

pcm.server
{
  type rsound
  host "serverens ip her"
}

Endret av TheMaister
Lenke til kommentar

Takk for raskt, og ikke minst utfylldende svar.

Dette gleder jeg meg til å teste.

Det er jo mange morsomme muligheter med et konsept som rsound, dersom man han noen linuxboxer rundt om :)

 

Hva er slikt mest brukt til egentlig? Jeg fikk ideen om å se etter noe slikt fordi jeg ville spille av lyd på en maskin som ikke hadde høyttalere, men siden "nabomaskinen" hadde det, så tenkte jeg at det måtte være mulig å sende det over nettverket.

 

Jeg har for øvrig en 5mbit upload-linje, så jeg bør kunne leke meg litt over nett med dette også, skjønner jeg :)

Lenke til kommentar

Selv bruker jeg for det meste RSound til MPD, da jeg har flere PC-er rundt om i huset, og orker ikke sette opp nfs/sshfs + flere mpd-servere, og oppdatere mpd-git på hver PC i ny og ne. Pulse er jo klart beregnet på dette også, men pulse er broken på PC-en min, og bruker 50% cpu på netbooken (og hakker), som ikke er spesielt moro. Bruker det på nettene når jeg vil se film på storskjermen uten å vekke familien (overfører lyd til netbooken). Kunne ha dratt en 5-6 meter lang headsetkabel, men er jo greit å kunne slippe. Hender jeg streamer spotify til anlegget også. :p

Lenke til kommentar

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

Laster...
×
×
  • Opprett ny...