Hey,

Sorry I let this one slip. In a normal process, you should let liquidsoap
take advantage of the sound card's clock to drive the streaming loop. This
is normally the default but your script creates separate clocks for the
icecast output. Was that intentional?

Romain



Le lun. 14 janv. 2019 à 07:21, Yann Saguez <yann.sag...@gmail.com> a écrit :

> Hi all,
> I'm using an instance of Liquidsoap for a studio-to-transmitter link
> running for 72 hours.
>
> I get the audio with a USB soundcard connected to a PC with Stretch
> (encoder), liquidsoap writes on the HDD, streams to a RaspberryPi on LAN
> (decoder), and to a distant server (webradio).
> Every (+/-) 106 minutes i get a message that the buffers are emptied. I
> read on this mailing list that is due to my cheap soundcard not sampling
> at exactly 44.1kHz.
> So when it occurs, i have a 1sec blank, that is not a big problem to me..
>
> But, I have a second problem, and I don't know if it's related : I got a
> "We must catchup 10.44 seconds!"
> And on the audio on the decoder I got a 11sec blank.. (11:22:33 - 11:22:43)
>
> Do you think these problems are related, and do you have an idea how can
> I avoid that catchup problem please ?
>
> Thanks !
> Yann
>
> encoder.liq :
>      radio = input.alsa(id="alsain",device='plughw:1,0')
>
>      # encoders
>      mp3 = %mp3(bitrate=128)
>      opus = %opus(bitrate=128,channels=2)
>
>      # file
>      output.file(mp3,
> '/home/primitive/recorded/%Y-%m-%d/%Y-%m-%d-%H_%M_%S.mp3',
>                  reopen_when={0m0s},
>                  radio
>                 )
>
>      # decoder (raspi on LAN)
>      clock.assign_new(id="stlclock",
>                      [output.icecast(opus,
>                              host="192.168.1.251",
>                              port=8081,
>                              password="pass",
>                              mount="primitive",
> mksafe(id="stlsafe",buffer(id="stlbuf", radio))
>                      )])
>
>      # webradio (distant server)
>      clock.assign_new(id="webclock",
>                      [output.icecast(opus,
>                              host="185.x.y.z",
>                              port=8080,
>                              password="pass",
>                              mount="primitive",
> mksafe(id="websafe",buffer(id="webbuf", buffer=1.0, max=2.0, radio))
>                      )])
>
> decoder.liq :
>      encoder =
> input.harbor("primitive",port=8081,password="pass",buffer=2.,max=20.)
>      encoder = mksafe(id="stlsafe",encoder)
>      encoder = buffer.adaptative(id="stlbuf", reset=true, encoder)
>      output.dummy(fallible=true,encoder)
>      output.alsa(device='plughw:1,0',encoder)
>
>
> encoder.log :
>      2019/01/14 10:00:00
> [/home/primitive/recorded/%Y-%m-%d/%Y-%m-%d-%H_%M_%S(dot)mp3:3]
> Re-opening output pipe...
>      2019/01/14 10:40:29 [webbuf:3] Buffer emptied, start buffering...
>      2019/01/14 10:40:29 [websafe:3] Switch to safe_blank with transition.
>      2019/01/14 10:40:30 [websafe:3] Switch to webbuf with transition.
>      2019/01/14 10:42:22 [stlbuf:3] Buffer emptied, start buffering...
>      2019/01/14 10:42:22 [stlsafe:3] Switch to safe_blank with transition.
>      2019/01/14 10:42:23 [stlsafe:3] Switch to stlbuf with transition.
>      2019/01/14 11:00:00
> [/home/primitive/recorded/%Y-%m-%d/%Y-%m-%d-%H_%M_%S(dot)mp3:3]
> Re-opening output pipe...
>      2019/01/14 11:22:43 [clock.wallclock_stlclock:2] We must catchup
> 10.44 seconds!
>      2019/01/14 11:22:43 [stlbuf:3] Buffer emptied, start buffering...
>      2019/01/14 11:22:43 [stlsafe:3] Switch to safe_blank with transition.
>      2019/01/14 11:22:44 [stlsafe:3] Switch to stlbuf with transition.
>      2019/01/14 12:00:00
> [/home/primitive/recorded/%Y-%m-%d/%Y-%m-%d-%H_%M_%S(dot)mp3:3]
> Re-opening output pipe...
>      2019/01/14 12:26:26 [webbuf:3] Buffer emptied, start buffering...
>      2019/01/14 12:26:26 [websafe:3] Switch to safe_blank with transition.
>      2019/01/14 12:26:27 [websafe:3] Switch to webbuf with transition.
>      2019/01/14 13:00:00
> [/home/primitive/recorded/%Y-%m-%d/%Y-%m-%d-%H_%M_%S(dot)mp3:3]
> Re-opening output pipe...
>      2019/01/14 13:11:53 [stlbuf:3] Buffer emptied, start buffering...
>      2019/01/14 13:11:53 [stlsafe:3] Switch to safe_blank with transition.
>      2019/01/14 13:11:54 [stlsafe:3] Switch to stlbuf with transition.
>      2019/01/14 14:00:00
> [/home/primitive/recorded/%Y-%m-%d/%Y-%m-%d-%H_%M_%S(dot)mp3:3]
> Re-opening output pipe...
>
> decoder.log :
>      2019/01/14 11:22:32 [input(dot)harbor_6286:4] End of track.
>      2019/01/14 11:22:32 [input(dot)harbor_6286:4] Buffer emptied,
> buffering needed.
>      2019/01/14 11:22:32 [stlsafe:3] Switch to safe_blank with forgetful
> transition.
>      2019/01/14 11:22:32 [input(dot)harbor_6286:4] Activations changed:
> static=[], dynamic=[stlsafe:buffer_6291:buffer_6291].
>      2019/01/14 11:22:32 [safe_blank:4] Activations changed:
> static=[stlsafe:buffer_6291:buffer_6291],
> dynamic=[stlsafe:buffer_6291:buffer_6291].
>      2019/01/14 11:22:35 [source:4] Garbage collected empty_6350.
>      2019/01/14 11:22:43 [stlsafe:3] Switch to input(dot)harbor_6286
> with transition.
>      2019/01/14 11:22:43 [safe_blank:4] Activations changed: static=[],
> dynamic=[stlsafe:buffer_6291:buffer_6291].
>      2019/01/14 11:22:43 [input(dot)harbor_6286:4] Activations changed:
> static=[stlsafe:buffer_6291:buffer_6291],
> dynamic=[stlsafe:buffer_6291:buffer_6291].
>
>
>
>
> _______________________________________________
> Savonet-users mailing list
> Savonet-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/savonet-users
>
_______________________________________________
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users

Reply via email to