@Paolo:
nel corso delle mie prove ho verificato uno strano comportamento:
Questa è la riga di comando generate e scritta in /etc/default/squeezelite come segue:
SB_EXTRA_ARGS=/usr/bin/squeezelite-R2 -n R2@debian-i386 -o front:CARD=I82801AAICH,DEV=0 -x -C 1 -r 44100-48000 -b 16384:16384 -a 100:3:16:1 -d all=debug -f /var/www/falcon/data/squeezelite-R2.log
SE lancio i servizi con service squeezelite start da su, tutto funziona ma non scrive il log.
SE lancio manualmente la riga, scrive il log, ma non funziona (non esce suono).
In questo secondo caso il messaggio (nel log) è il seguente:
codice:
/usr/bin/squeezelite-R2 -n R2@debian-i386 -o front:CARD=I82801AAICH,DEV=0 -x -C 1 -r 44100-48000 -b 16384:16384 -a 100:3:16:1 -d all=debug -f /var/www/falcon/data/squeezelite-R2.log
[19:35:25.406706] stream_init:290 init stream
[19:35:25.407035] stream_init:291 streambuf size: 16777216
[19:35:25.939877] output_init_alsa:817 init output
[19:35:25.944183] output_init_alsa:846 requested alsa_buffer: 100 alsa_period: 3 format: 16 mmap: 1
[19:35:25.944282] output_init_common:346 outputbuf size: 16777216
[19:35:25.945095] output_init_common:370 idle timeout: 1000
[19:35:25.945169] output_init_common:410 supported rates: 48000 44100
[19:35:26.612303] output_init_alsa:862 memory locked
[19:35:26.628835] output_init_alsa:885 set output sched fifo rt: 45
[19:35:26.628996] decode_init:129 init decode, include codecs: exclude codecs:
[19:35:26.629077] register_dsd:624 using dsd to decode dsf,dff
[19:35:27.667147] load_ff:621 loaded libavcodec.so.56 (56.26.100)
[19:35:27.667294] load_ff:638 loaded libavformat.so.56 (56.25.101)
[19:35:27.667348] load_ff:652 loaded libavutil.so.54 (54.20.100)
[19:35:27.667703] register_ff:731 using ffmpeg to decode alc
[19:35:27.667736] register_ff:715 using ffmpeg to decode wma,wmap,wmal
[19:35:27.668946] load_faad:610 loaded libfaad.so.2
[19:35:27.669058] register_faad:640 using faad to decode aac
[19:35:27.670261] load_vorbis:300 loaded libvorbisfile.so.3
[19:35:27.670275] register_vorbis:329 using vorbis to decode ogg
[19:35:27.671534] load_flac:258 loaded libFLAC.so.8
[19:35:27.671548] register_flac:286 using flac to decode flc
[19:35:27.671559] register_pcm:392 using pcm to decode aif,pcm
[19:35:27.673063] load_mad:383 loaded libmad.so.0
[19:35:27.673076] register_mad:412 using mad to decode mp3
[19:35:27.673297] discover_server:756 sending discovery
[19:35:27.927760] discover_server:767 got response from: 192.168.1.103:3483
[19:35:27.927859] slimproto:849 connecting to 192.168.1.103:3483
[19:35:27.931721] slimproto:882 connected
[19:35:27.931753] sendHELO:124 mac: 08:00:27:f7:d2:02
[19:35:27.931843] sendHELO:126 cap: Model=squeezelite,AccuratePlayPoints=1,HasDigitalOut=1,HasPolarityInversion=1,Firmware=v1.8.2 (R2),ModelName=SqueezeLite-R2,MaxSampleRate=768000,dsf,dff,alc,wma,wmap,wmal,aac,ogg,flc,aif,pcm,mp3
[19:35:28.399337] process:494 strm
[19:35:28.399497] process_strm:256 strm command s
[19:35:28.399510] process_strm:325 strm s autostart: 1 transition period: 10 transition type: 0 codec: p
[19:35:28.399527] sendSTAT:171 STAT: STMf
[19:35:28.399645] codec_open:218 codec open: 'p'
[19:35:28.399659] pcm_open:373 pcm size: 2 rate: 44100 chan: 2 bigendian: 0
[19:35:28.399691] stream_sock:384 connecting to 192.168.1.103:9000
[19:35:28.404689] stream_sock:413 header: GET /stream.mp3?player=08:00:27:f7:d2:02 HTTP/1.0
[19:35:28.404818] sendSTAT:171 STAT: STMc
[19:35:28.404838] process_strm:357 set fade mode: 0
[19:35:28.404880] process:494 audg
[19:35:28.404892] process_audg:413 audg gainL: 3840 gainR: 3840 adjust: 0
[19:35:28.404903] set_volume:246 setting internal gain left: 65536 right: 65536
[19:35:28.404938] process:494 setd
[19:35:28.404971] sendSETDName:230 set playername: R2@debian-i386
[19:35:28.405008] process:494 setd
[19:35:28.405043] process:494 aude
[19:35:28.405054] process_aude:395 enable spdif: 1 dac: 1
[19:35:28.405180] process:494 audg
[19:35:28.405192] process_audg:413 audg gainL: 3840 gainR: 3840 adjust: 0
[19:35:28.405203] set_volume:246 setting internal gain left: 65536 right: 65536
[19:35:28.485060] stream_thread:176 headers: len: 110
HTTP/1.1 200 OK
Server: Logitech Media Server (7.9.0 - TRUNK)
Connection: close
Content-Type: audio/L16
[19:35:28.485580] sendRESP:202 RESP
[19:35:29.106699] _check_header:77 WAVE
[19:35:29.106770] _check_header:101 header: fmt len: 16
[19:35:29.106782] _check_header:129 pcm size: 2 rate: 96000 chan: 2 bigendian: 0
[19:35:29.106794] _check_header:101 header: data len: 392980480
[19:35:29.106806] _check_header:107 audio size: 392980480
[19:35:29.106817] pcm_decode:200 setting track_start
[19:35:30.226776] process:494 strm
[19:35:30.226832] process_strm:256 strm command t
[19:35:30.226863] sendSTAT:171 STAT: STMt
[19:35:35.226245] process:494 strm
[19:35:35.226455] process_strm:256 strm command t
[19:35:35.226475] sendSTAT:171 STAT: STMt
[19:35:37.582164] output_thread:638 open output device: front:CARD=I82801AAICH,DEV=0
[19:35:37.582493] alsa_open:355 opening device at: 44100
[19:35:37.582916] alsa_open:406 opened device front:CARD=I82801AAICH,DEV=0 using format: S16_LE sample rate: 44100 mmap: 1
[19:35:37.582950] alsa_open:485 buffer: 100 period: 3 -> buffer size: 4410 period size: 1470
[19:35:37.643170] _output_frames:61 start buffer frames: 856861
[19:35:37.643232] _output_frames:146 track start sample rate: 96000 replay_gain: 0
[19:35:37.645398] sendSTAT:171 STAT: STMs
[19:35:37.645691] sendSTAT:171 STAT: STMt
[19:35:37.655024] output_thread:638 open output device: front:CARD=I82801AAICH,DEV=0
[19:35:37.655394] alsa_open:355 opening device at: 96000
[19:35:37.655780] alsa_open:406 opened device front:CARD=I82801AAICH,DEV=0 using format: S16_LE sample rate: 96000 mmap: 1
[19:35:37.655829] alsa_open:475 unable to get period size: Invalid argument
La cosa è molto strana siamo sicuri che il servizio esegua ESATTAMENTE la riga che si trova in default? Perchè lanciata manualmente restituisce errore?
Cosa ne pensi?
EDIT:
Il problema è che lo stream arriva a 96K, quando la mia scheda in debian arriva solo a 48, di conseguenza, Squeezelite-R2 lanciato con la riga di comando riportata correttamente NON riesce a suonare.
Come mai ci riesce da service? L'unico modo è che abbia attivo il resample, ma non dalla mia riga di comando. Come si spiega? Chi lo aggiunge?
Unitamente al fatto che non scrive il log, mi fa pensare che in realtà legga la configurazione non da etc/default ma da altrove...
EDIT2:
Trovato l'arcano.
C'era un errore di sintassi nel comando (-f/var...) e questo faceva si che lo scritp in init.d scartasse del tutto la riga, eseguendo solo /usr/bin/squeezelite-R2.
Al di là di capire perchè in quel caso suoni lo stream a 96K, mi pare un comportamento un po troppo 'lasco' per lo script... potrebbe almeno segnalare l'errore! vabbe.