среда, 23 марта 2011 г.

linux audio over network

Звук берем через pulseaudio server
находим название аудио устройства:
$ pactl list | grep alsa_out
Name: alsa_output.pci-0000_00_07.0.analog-stereo
Monitor Source: alsa_output.pci-0000_00_07.0.analog-stereo.monitor # - это аудиовыход который нужен
Name: alsa_output.pci-0000_00_07.0.analog-stereo.monitor
Monitor of Sink: alsa_output.pci-0000_00_07.0.analog-stereo
запись в файл
$ pacat -r -d alsa_output.pci-0000_00_07.0.analog-stereo.monitor | sox -t raw -r 44100 -s -L -b 16 -c 2 - output.wav
звук по сети
pacat -r -d alsa_output.pci-0000_00_1b.0.analog-stereo.monitor | ssh user@192.168.1.1 "play -t raw -r 44100 -c -s -b 16 -" 
или через netcat
на стороне сервера
pacat -r -d alsa_output.pci-0000_00_1b.0.analog-stereo.monitor | nc -l 8008
на стороне клиента
nc 192.168.1.1 8008 | pv -b | pacat -p --latency-msec=5000 --process-time-msec=5000 



PS: так и несмог избавиться от запаздывания звука на 2-5сек на стороне клиента :(

2 комментария:

  1. Спасибо за подборку советов!
    Очень пригодились и не пришлось изобретать велосипед.

    Убрать задержку удалось уменьшив буфер до минимума (60..100) и добавив trim в конце, что бы очистить буфер методом усечения и воспроизведение почти идеально попадает: Задержка конечно по прежнему есть, но в районе значения%размер_буфера%, что в плеере mplayer легко поправляется сдвигом A-V, а для музыки - не критично.
    Ставить меньше 60 не рекомендую. Вызывает рывки звука.

    живой вызов:
    pacat -r -d alsa_output.pci-0000_00_1b.0.analog-stereo.monitor | ssh -p @ "play -t raw -r 44100 --buffer 100 -c 2 -s -b 16 - trim 6"

    ОтветитьУдалить