TheMaister Skrevet 11. desember 2009 Del Skrevet 11. desember 2009 (endret) 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 11. desember 2009 av TheMaister Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå