Для начала установим и настроим PulseAudio. Этому посвящены километры блогов и записей в багтрекере одноименной системы, поэтому я не буду тут останавливаться - считайте что все уже работает ;)
создадим небольшую функцию в .bashrc
1
2
3
4
5
6
7
8
9
10
11
12
13
|
function pashare {
case "$1" in
start)
pactl load-module module-simple-protocol-tcp rate=48000 format=s16le channels=2 source=alsa_output.pci-0000_00_1b.0.analog-stereo.monitor record=true port=myPort listen=myIp
;;
stop)
pactl unload-module `pactl list | grep tcp -B1 | grep M | sed 's/<^0-9>//g'`
;;
*)
echo "Usage: $0 start|stop" >&2
;;
esac
}
|
Команда
pashare start раздает выход с устройства
alsa_output.pci-0000_00_1b.0.analog-stereo.monitor при подключении на соответствующий
ip:port В этом легко убедится, присоединившись с помощью telnet на соответствующий адрес и включив какой-либо трек для проигрывания.
Конечно имя устройства нужно сменить на присутствующее в системе. делается все это командой
pactl list | grep Name, показывающей имена загруженных модулей и устройств.
Команда
pashare stop прибивает сетевой модуль, после нахождения его номера в списке загруженных модулей.
Важно - модуль
module-simple-protocol-tcp не требует авторизации, т.е. в принципе кто угодно сможет слушать аудиовыход с карты через сеть после его активации.
Теперь о главном. К сожалению у меня не получилось заставить работать Android ни через Multicast, ни через UPnP.
Поэтому доступен велосипед. Это простое сетевое приложение, скачивающее данные с указанного адреса и отправляющее их в аудиостек телефона. Для тех, кому не интересен код, прямая ссылка на скачивание apk
После установки этого чуда на телефон, вводим
ip address, port и нажимаем кнопочку Play!
Буду благодарен, если научите запускать mplayer с небольшим опережением аудио при проигрывании фильма, ибо задержка при воспроизведении конечно есть и как всегда - есть к чему стремиться ;)
Веселых выходных всем присутствующим.