Gå til innhold

rALSA (KISS nettverkslyd)


Anbefalte innlegg

Jeg har jobbet litt på et prosjekt i det siste. I hovedsak er det en server og en klient for å sende PCM lyd over nettverket så simpelt som mulig uten å måtte ty til "store" løsninger (pulseaudio).

 

Designet er veldig simpelt. Serveren kjører på den PCen du vil sende lyd til.

Klientprogrammet tar PCM-data (raw, eller .wav) kun fra stdin, og sender denne dataen rått over TCP/IP, som spilles av på direkten. Server-koden er multi-threaded og flere klienter kan få avspilt lyd samtidig (så lenge APIet støtter dette).

 

Så langt har jeg implementert ALSA, OSS og libao i tre forskjellige .c-filer, så man kan kompilere den man ønsker. Jeg gjorde ren ALSA og OSS først siden jeg var redd for mye latency med libao, men det viste seg å funke ganske bra allikevel med libao etter min erfaring.

 

Et anvendelig bruksområde er når man vil se film, der bilde og lyd er separert over på to forskjellige PC-er.

 

Prosjektet kan hentes på git (Har enda ikke implementert et make-system eller noe sånt, så får kompilere manuelt):

 

git clone git://github.com/Themaister/ralsa.git ralsa
cd ralsa
gcc -o ralsad ralsad.c -lasound -lpthread # For ren ALSA
gcc -o rossd rossd.c -lpthread # For ren OSS (har ikke testa på BSD enda :P)
gcc -o raod raod.c -lao -lasound # For libAO
gcc -o rsound rsound.c # Klient

For å gjøre livet lettere for Arch-brukere er det en PKGBUILD i AUR: http://aur.archlinux.org/packages.php?ID=32474

 

Eks.: Se film på desktop, lyd på laptop.

# Laptop:
raod -v #libAO-lyd. ralsad eller rossd bør også fungere. Den forker til bakgrunnen som man forventer av en daemon.

# Desktop:
mkfifo /tmp/temp.wav
rsound <ip til laptop> < /tmp/temp.wav &
mplayer <video> -vo null -vc null -ao pcm:file=/tmp/temp.wav -nocorrect-pts &
mplayer <video> -ao null -nosound <video>
killall rsound
killall mplayer

Video og lyd bør være i sync såpass godt at det ikke merkes. Jeg har ikke testet på mange nok setups, men det har fungert veldig bra her. Et problem med denne måten å gjøre ting på er at seeking ikke går. Det er dog fullt mulig å starte begge mplayer-prosessene med -ss <sekunder> for seeking hvis lyden skulle dette ut av sync eller tilsvarende. Jeg prøvde å dumpe til .wav i samme prosess som videoen, men resultatet ble svært hakkete video.

Endret av TheMaister
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...