how tu setup pulseaudio->streaming via cvlc
(command line vlc -> so should simmilarily work with gui version (in my case don't)):
https://superuser.com/a/1021823/81861
get pulseaudio source from list:
pactl list | grep "Monitor Source"
and assign to P
, e.g. in my case it's usually:
P=pulse://combined.monitor
Then run one of following cvlc
:
flac:
cvlc -vvv "$P" --sout '#transcode{vcodec=none,acodec=flac,ab=1441,channels=2,samplerate=44100,scodec=none}:standard{access=http,dst=0.0.0.0:8888/pc.flac}'
or mp3:
cvlc -vvv "$P" --sout '#transcode{acodec=mp3,ab=128,channels=2}:standard{access=http,dst=0.0.0.0:8888/pc.mp3}'
Now let's use http://python-soco.com/ to insert our new http://192.168.0.111:8888/pc.flac (or http://192.168.0.111:8888/pc.mp3) on playlist! (you may use other tool for that, maybe some other sonos controller will allow you to provide url)
Now , modifying my script to play flac files from flocal serwer ( https://gist.github.com/gwpl/92ab540016bf43359654d5b0f013b1ec )
argv[1] = speaker ip (you can get with socos list
) assuming you used flac
cvlc command, otherwise change line to s.add_uri_to_queue('http://192.168.0.111:8888/pc.mp3')
:
#!/usr/bin/env python3
import sys
import soco
ip=sys.argv[1]
print('Playing on Speaker with ip='+ip)
s=soco.SoCo(ip)
print(' get_speaker_info()='+str(s.get_speaker_info()))
s.clear_queue()
s.add_uri_to_queue('http://192.168.0.111:8888/pc.flac')
s.play_from_queue(0)
When nothing feeds input, then stream gets stuck and sonos speakers give up -> very annying when I try to move video to particular point as it creates short breaks in audio stream then whole setup does not hangle smoothly. Forutnatelly there is solution! Play in background silence in a loop (command to play in a loop from command line taken from https://askubuntu.com/a/316048/31300 ):
ffplay -nodisp -autoexit -loop 9999 silence_10s.wav
I did a more generic/polished version of that solution.
https://github.com/antonylesuisse/sonos