Linux users may be interested in a small headless client I've been working on called Squeezelite. It's scope is constrained to offering a headless (Squeezeslave like) player which runs on linux desktops and potentially small linux devices using alsa for audio output.
It should support the following:
- headless playback
- gapless, high res support, direct streaming support (works with my Spotify plugin)
- flac, mp3 and pcm (wav/aiff), aac/mp4, ogg playback; flac/mp3/aac/ogg require libFLAC, libmad, libfaad, libvorbisfile/tremor to be separately installed
- usb dacs with support for direct playback to the hardware device (supports S24_3LE output format)
- sync
- tunable buffer sizes
- ability to disable codecs (if you like to only use wav, then only enable pcm other codecs will not be loaded)
The code is opensource (GPLv3) and available here: http://code.google.com/p/squeezelite/
To run:
Code:./squeezelite -? - lists options ./squeezelite -o hw:CARD=MDAC - starts with alsa device: hw:CARD=MDAC used as the output (this is an example usb audio dac)
Results 1 to 10 of 3855
-
2012-11-02, 16:53 #1
- Join Date
- Apr 2005
- Posts
- 8,410
Announce: Squeezelite - a small headless squeezeplay emulator for linux (alsa only)
Last edited by Triode; 2012-12-22 at 11:13.
-
2012-11-03, 05:53 #2
Brilliant !
Thanks
Excellent
Now I have a simple player for my desktop PC Linux Mint 13
I put it in /opt used mint's GUI tool to add a startup app added this to the command -o default 192.168.1.50 (did not bother to open ports for auto discovery my server is fixed anyway )
Many other options gave weird noises to the sound .
This is not the hifi application you had in mind this goes trough the mixer and ads to rest and
"default - Playback/recording through the PulseAudio sound server "
You said Alsa only ,but it is fir for my purpose anyway , I don't "hifi listen" at my pc even if do use a pair of Adam A3X as speakers .
Thanks anyway it works brilliantly as soon as the pc boots it starts to play ! if I did not pause it . and I have the web-UI or my iPad to control it .
Ligthweigth and always there when the pc boots i don't have think about it and start a player .
And it uses microscopical amount of resources--------------------------------------------------------------------
Main hifi: Rasbery PI digi+ MeridianG68J MeridianHD621 MeridianG98DH 2 x MeridianDSP5200 MeridianDSP5200HC 2 xMeridianDSP3100 +Rel Stadium 3 sub.
Bedroom/Office: Boom
Loggia: Raspi hifiberry dac + Adams
Bathroom : Radio (with battery)
iPad with iPengHD & SqueezePad
(spares Touch, SB3, reciever ,controller )
server Intel NUC Esxi VM Linux mint 18 LMS 7.9.2
http://people.xiph.org/~xiphmont/demo/neil-young.html
-
2012-11-03, 08:19 #3
Thank you
Hi Triode
Many thanks for this. It will be really usefull at some time.
I tried it on a Debian system and was able to connect to it from LMS, and it could play MP3s and Flacs and radiostations from the internet.
However, there were some problems:
1. It would play fine for some time, and then the sound started to fluctuate rapidly for (10-20 sec) then playing fine again for 1-20 sec , then start to break up again and it continued to change like this. The fluctuations is very rapid it sounded very unpleasant but it is difficult to describe. (Something like stuttering - but still not quite the same)
2. If I tried to start it with logging enabled like this:
./squeezelite -d=debug 192.168.1.19 SORRY SHOULD HAVE USED -d all=debug / results in next post
I got this: Segmentation fault
3. Regarding the different buffer sizes....... -a <time>:<count> Specify ALSA buffer_time and period_count what will be reasonable values?
and also for -b <stream>:<output> Specify internal Stream and Output buffer sizes in Kbytes what will be reasonable values here?
I will be happy to provide further info if needed
Edit: It synchronizes fine with both a Duet and a Radio - and the stuttering has nothing to do with synchronizationLast edited by sbp; 2012-11-03 at 08:35.
piCorePlayer a small player for the Raspberry Pi in RAM.
Homepage: https://www.picoreplayer.org
Please donate if you like piCorePlayer
-
2012-11-03, 08:34 #4
- Join Date
- Apr 2005
- Posts
- 8,410
Thanks for trying some responses below:
If the system is busy try running it as root, or allowing it to use the FIFO scheduler class (I can't remember what you need do for this, but root can by default). This will only be used for the output thread, but will make sure it can run even if the machine is busy. If its not this then happy to take some debugs..
2. If I tried to start it with logging enabled like this:
./squeezelite -d=debug 192.168.1.19
I got this: Segmentation fault
3. Regarding the different buffer sizes....... -a <time>:<count> Specify ALSA buffer_time and period_count what will be reasonable values?
and also for -b <stream>:<output> Specify internal Stream and Output buffer sizes in Kbytes what will be reasonable values here?
-
2012-11-03, 08:39 #5
OK here is the log file>
root@debian:/# cd opt
root@debian:/opt# cd squeezelite
root@debian:/opt/squeezelite# ./squeezelite -d all=debug 192.168.1.19
[15:25:30.615784] output_init:552 init output
[15:25:30.616375] output_init:553 outputbuf size: 3528000
[15:25:30.632021] output_init:567 output: default maxrate: 192000
[15:25:30.632344] output_thread:287 open output device: default
[15:25:30.638228] alsa_open:200 opened device default using format: S32_LE sample rate: 44100
[15:25:30.638491] alsa_open:225 buffer time: 85328 period count: 4
[15:25:30.648461] stream_init:205 init stream
[15:25:30.648651] stream_init:206 streambuf size: 2097152
[15:25:30.648870] decode_init:89 init decode
[15:25:30.650087] load_flac:180 loaded libFLAC
[15:25:30.650145] register_pcm:140 using pcm
[15:25:30.650487] load_mad:186 loaded libmad
[15:25:30.650936] slimproto:559 connecting to 192.168.1.19:3483
[15:25:30.650985] slimproto:560 cap: MaxSampleRate=192000,flc,pcm,aif,mp3
[15:25:30.651304] slimproto:573 connected
[15:25:30.651342] sendHELO:135 mac: 00:90:dc:07:14:90
[15:25:30.656634] process:330 strm
[15:25:30.656695] process_strm:214 strm command q
[15:25:30.698782] process:330 audg
[15:25:30.698957] process_audg:304 audg gainL: 2048 gainR: 2048 fixed: 134566784
[15:25:30.701209] process:330 strm
[15:25:30.701350] process_strm:214 strm command s
[15:25:30.701384] process_strm:271 strm s autostart: 0
[15:25:30.701416] sendSTAT:174 STAT: STMf
[15:25:30.701494] codec_open:116 codec open: 'f'
[15:25:30.701743] stream_sock:258 connecting to 192.168.1.19:9000
[15:25:30.702014] stream_sock:298 header: GET /stream.mp3?player=00:90:dc:07:14:90 HTTP/1.0
[15:25:30.702062] sendSTAT:174 STAT: STMc
[15:25:30.702141] process:330 audg
[15:25:30.702174] process_audg:304 audg gainL: 2048 gainR: 2048 fixed: 134566784
[15:25:30.703990] process:334 unhandled setd
[15:25:30.704129] process:334 unhandled setd
[15:25:30.704174] process:334 unhandled aude
[15:25:30.704243] process:330 audg
[15:25:30.704288] process_audg:304 audg gainL: 2048 gainR: 2048 fixed: 134566784
[15:25:30.757908] stream_thread:142 headers: len: 109
HTTP/1.0 200 OK
Server: Squeezebox Server (7.6.2 - 33593)
Connection: close
Content-Type: audio/x-flac
[15:25:30.758211] sendRESP:205 RESP
[15:25:30.772615] sendSTAT:174 STAT: STMl
[15:25:33.148795] process:330 strm
[15:25:33.148947] process_strm:214 strm command u
[15:25:33.148982] process_strm:259 unpause at: 3173687 now: 3173498
[15:25:33.149017] sendSTAT:174 STAT: STMr
[15:25:33.155143] write_cb:95 setting track_start
[15:25:33.343830] output_thread:411 track start sample rate: 44100 replay_gain: 0
[15:25:33.822506] sendSTAT:174 STAT: STMs
[15:25:33.822753] sendSTAT:174 STAT: STMt
[15:25:33.822808] process:330 strm
[15:25:33.822895] process_strm:214 strm command t
[15:25:33.822955] sendSTAT:174 STAT: STMt
[15:25:34.160930] process:330 strm
[15:25:34.161102] process_strm:214 strm command a
[15:25:34.161137] process_strm:248 skip ahead interval: 16
[15:25:34.175403] output_thread:351 skip 705 of 705 frames
[15:25:35.162199] sendSTAT:174 STAT: STMt
[15:25:36.163504] sendSTAT:174 STAT: STMt
[15:25:37.164795] sendSTAT:174 STAT: STMt
[15:25:37.821916] process:330 strm
[15:25:37.822598] process_strm:214 strm command t
[15:25:37.822640] sendSTAT:174 STAT: STMt
[15:25:38.823780] sendSTAT:174 STAT: STMt
[15:25:39.825065] sendSTAT:174 STAT: STMt
[15:25:40.826403] sendSTAT:174 STAT: STMt
[15:25:41.820617] process:330 strm
[15:25:41.820785] process_strm:214 strm command t
[15:25:41.820823] sendSTAT:174 STAT: STMt
[15:25:42.821947] sendSTAT:174 STAT: STMt
[15:25:43.823233] sendSTAT:174 STAT: STMt
[15:25:44.824557] sendSTAT:174 STAT: STMt
[15:25:45.819865] process:330 strm
[15:25:45.820020] process_strm:214 strm command t
[15:25:45.820057] sendSTAT:174 STAT: STMt
[15:25:46.821199] sendSTAT:174 STAT: STMt
[15:25:47.822491] sendSTAT:174 STAT: STMt
[15:25:48.823765] sendSTAT:174 STAT: STMt
[15:25:49.819155] process:330 strm
[15:25:49.819305] process_strm:214 strm command t
[15:25:49.819341] sendSTAT:174 STAT: STMt
[15:25:50.820462] sendSTAT:174 STAT: STMt
[15:25:51.156263] process:330 strm
[15:25:51.156432] process_strm:214 strm command a
[15:25:51.156466] process_strm:248 skip ahead interval: 11
[15:25:51.172430] output_thread:351 skip 485 of 485 frames
[15:25:52.157530] sendSTAT:174 STAT: STMt
[15:25:53.158782] sendSTAT:174 STAT: STMt
[15:25:53.818375] process:330 strm
[15:25:53.818527] process_strm:214 strm command t
[15:25:53.818565] sendSTAT:174 STAT: STMt
[15:25:54.819670] sendSTAT:174 STAT: STMt
[15:25:55.820966] sendSTAT:174 STAT: STMt
[15:25:56.822267] sendSTAT:174 STAT: STMt
[15:25:57.817468] process:330 strm
[15:25:57.817637] process_strm:214 strm command t
[15:25:57.817675] sendSTAT:174 STAT: STMt
[15:25:58.818661] sendSTAT:174 STAT: STMt
[15:25:59.819975] sendSTAT:174 STAT: STMt
[15:26:00.821235] sendSTAT:174 STAT: STMt
[15:26:01.816847] process:330 strm
[15:26:01.817009] process_strm:214 strm command t
[15:26:01.817046] sendSTAT:174 STAT: STMt
[15:26:02.818153] sendSTAT:174 STAT: STMt
[15:26:03.819401] sendSTAT:174 STAT: STMt
[15:26:04.820657] sendSTAT:174 STAT: STMt
[15:26:05.816168] process:330 strm
[15:26:05.816330] process_strm:214 strm command t
[15:26:05.816369] sendSTAT:174 STAT: STMt
[15:26:06.817480] sendSTAT:174 STAT: STMt
[15:26:07.818738] sendSTAT:174 STAT: STMt
[15:26:08.154814] process:330 strm
[15:26:08.155000] process_strm:214 strm command a
[15:26:08.155035] process_strm:248 skip ahead interval: 10
[15:26:08.169462] output_thread:351 skip 441 of 441 frames
[15:26:09.156107] sendSTAT:174 STAT: STMt
[15:26:09.815300] process:330 strm
[15:26:09.815463] process_strm:214 strm command t
[15:26:09.815502] sendSTAT:174 STAT: STMt
[15:26:10.816612] sendSTAT:174 STAT: STMt
[15:26:11.817874] sendSTAT:174 STAT: STMt
[15:26:12.818893] sendSTAT:174 STAT: STMt
[15:26:13.814580] process:330 strm
[15:26:13.814771] process_strm:214 strm command t
[15:26:13.814810] sendSTAT:174 STAT: STMt
[15:26:14.815463] sendSTAT:174 STAT: STMt
[15:26:15.816732] sendSTAT:174 STAT: STMt
[15:26:16.818036] sendSTAT:174 STAT: STMt
[15:26:17.818102] process:330 strm
[15:26:17.818351] process_strm:214 strm command t
[15:26:17.818389] sendSTAT:174 STAT: STMt
[15:26:18.819512] sendSTAT:174 STAT: STMt
[15:26:19.820774] sendSTAT:174 STAT: STMt
[15:26:20.822071] sendSTAT:174 STAT: STMt
[15:26:21.823366] sendSTAT:174 STAT: STMt
[15:26:22.812982] process:330 strm
[15:26:22.813132] process_strm:214 strm command t
[15:26:22.813169] sendSTAT:174 STAT: STMt
[15:26:23.814286] sendSTAT:174 STAT: STMt
[15:26:24.815573] sendSTAT:174 STAT: STMt
[15:26:25.147426] process:330 strm
[15:26:25.147579] process_strm:214 strm command a
[15:26:25.147613] process_strm:248 skip ahead interval: 10
[15:26:25.166477] output_thread:351 skip 441 of 441 frames
[15:26:26.148682] sendSTAT:174 STAT: STMt
[15:26:26.812334] process:330 strm
[15:26:26.812500] process_strm:214 strm command t
[15:26:26.812538] sendSTAT:174 STAT: STMt
[15:26:27.813638] sendSTAT:174 STAT: STMt
[15:26:28.534217] stream_thread:161 end of stream
[15:26:28.534512] sendDSCO:193 DSCO: 0
[15:26:29.535454] sendSTAT:174 STAT: STMt
[15:26:30.536140] sendSTAT:174 STAT: STMt
[15:26:30.811628] process:330 strm
[15:26:30.811778] process_strm:214 strm command t
[15:26:30.811815] sendSTAT:174 STAT: STMt
[15:26:31.812945] sendSTAT:174 STAT: STMt
[15:26:32.814245] sendSTAT:174 STAT: STMt
[15:26:33.815552] sendSTAT:174 STAT: STMt
[15:26:34.811328] process:330 strm
[15:26:34.811497] process_strm:214 strm command t
[15:26:34.811536] sendSTAT:174 STAT: STMt
[15:26:35.812664] sendSTAT:174 STAT: STMt
[15:26:36.813948] sendSTAT:174 STAT: STMt
[15:26:37.815258] sendSTAT:174 STAT: STMt
[15:26:38.816565] sendSTAT:174 STAT: STMt
[15:26:39.810375] process:330 strm
[15:26:39.810547] process_strm:214 strm command t
[15:26:39.810586] sendSTAT:174 STAT: STMt
[15:26:40.143505] sendSTAT:174 STAT: STMt
[15:26:40.143724] process:330 strm
[15:26:40.143763] process_strm:214 strm command a
[15:26:40.143794] process_strm:248 skip ahead interval: 10
[15:26:40.158866] output_thread:351 skip 441 of 441 frames
[15:26:41.144911] sendSTAT:174 STAT: STMt
[15:26:42.146205] sendSTAT:174 STAT: STMt
[15:26:43.146799] sendSTAT:174 STAT: STMt
[15:26:44.148126] sendSTAT:174 STAT: STMt
[15:26:44.808989] process:330 strm
[15:26:44.809144] process_strm:214 strm command t
[15:26:44.809182] sendSTAT:174 STAT: STMt
[15:26:45.810613] sendSTAT:174 STAT: STMt
[15:26:46.811969] sendSTAT:174 STAT: STMt
[15:26:47.813289] sendSTAT:174 STAT: STMt
[15:26:48.808030] process:330 strm
[15:26:48.808184] process_strm:214 strm command t
[15:26:48.808221] sendSTAT:174 STAT: STMt
[1]+ Stopped ./squeezelite -d all=debug 192.168.1.19
root@debian:/opt/squeezelite# ^C
root@debian:/opt/squeezelite#
I hope you can see something from the log
Cheers
SteenpiCorePlayer a small player for the Raspberry Pi in RAM.
Homepage: https://www.picoreplayer.org
Please donate if you like piCorePlayer
-
2012-11-03, 08:52 #6
- Join Date
- Apr 2005
- Posts
- 8,410
-
2012-11-03, 10:53 #7
Hmm any idea why it does this , it happened after i changed album it sticks to 100% cpu even when paused:
Code:Tasks: 171 total, 2 running, 169 sleeping, 0 stopped, 0 zombie Cpu(s): 8.8%us, 4.6%sy, 0.0%ni, 86.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 16412848k total, 1285412k used, 15127436k free, 69856k buffers Swap: 31249404k total, 0k used, 31249404k free, 432488k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2228 mikael 20 0 90136 7872 2068 S 101 0.0 2:40.21 squeezelite 1437 root 20 0 163m 49m 19m S 2 0.3 0:52.32 Xorg 2183 mikael 20 0 1589m 116m 45m S 1 0.7 0:30.16 cinnamon 2199 mikael 9 -11 490m 6800 4264 S 1 0.0 0:57.47 pulseaudio 2505 mikael 20 0 747m 159m 33m S 1 1.0 0:47.36 firefox 2559 mikael 20 0 544m 16m 10m S 0 0.1 0:01.29 gnome-terminal 1 root 20 0 24468 2368 1352 S 0 0.0 0:01.54 init 2 root 20 0 0 0 0 S 0 0.0 0:00.00 kthreadd
--------------------------------------------------------------------
Main hifi: Rasbery PI digi+ MeridianG68J MeridianHD621 MeridianG98DH 2 x MeridianDSP5200 MeridianDSP5200HC 2 xMeridianDSP3100 +Rel Stadium 3 sub.
Bedroom/Office: Boom
Loggia: Raspi hifiberry dac + Adams
Bathroom : Radio (with battery)
iPad with iPengHD & SqueezePad
(spares Touch, SB3, reciever ,controller )
server Intel NUC Esxi VM Linux mint 18 LMS 7.9.2
http://people.xiph.org/~xiphmont/demo/neil-young.html
-
2012-11-03, 11:06 #8--------------------------------------------------------------------
Main hifi: Rasbery PI digi+ MeridianG68J MeridianHD621 MeridianG98DH 2 x MeridianDSP5200 MeridianDSP5200HC 2 xMeridianDSP3100 +Rel Stadium 3 sub.
Bedroom/Office: Boom
Loggia: Raspi hifiberry dac + Adams
Bathroom : Radio (with battery)
iPad with iPengHD & SqueezePad
(spares Touch, SB3, reciever ,controller )
server Intel NUC Esxi VM Linux mint 18 LMS 7.9.2
http://people.xiph.org/~xiphmont/demo/neil-young.html
-
2012-11-03, 11:25 #9
- Join Date
- Apr 2006
- Location
- White Plains, NY
- Posts
- 243
Thanks for putting this together. This could prove quite handy to have running on my laptop.
I have the 64 bit version up and running on Mint 13. Have been playing FLAC files synced to my Touch without any issues thus far.
-Chris
-
2012-11-03, 11:31 #10
- Join Date
- Apr 2005
- Posts
- 8,410